導航:首頁 > 編程語言 > 單片機編程競賽

單片機編程競賽

發布時間:2023-02-07 08:21:48

單片機編程題求助!!

太多了吧,這點分還不夠辛苦錢。先做一個吧。
第一個:
MOV R0,#30H
MOV B,#0
LP:
MOV A,@R0

CJNE A,B,LP1

LP1:
JC,LP2

MOV B,A

LP2:
INC R0

CJNE R0,#3AH,LP

MOV A,B

RET

Ⅱ 單片機編程問題(C語言),很入門的問題,明天比賽,急急急!多少分都可以

下列程序已經調好,按鍵顯示電路可見:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/ef086222268d4f4eac34de59.html
//單片機:使用51系列兼容的即可;
//4×4矩陣鍵盤:接在P1口;
//兩位數碼顯示器: P0口輸出七段碼,P2口輸出位選碼。
/========================================
//C語言程序如下。
/*************************************************************
* 文件名: KEY_LED.c
* 功能 : 對4×4矩陣鍵盤進行輸出,在數碼管後兩位顯示按鍵值。
**************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar code table[10] = {0xC0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
uchar sec, t_50ms;
/**************************************************************
* 名稱 : Delay_1ms()
* 功能 : 延時子程序,延時時間為 1ms * x
* 輸入 : x (延時一毫秒的個數)
* 輸出 : 無
***************************************************************/
void Delay_1ms(uint x)
{
uint i;
uchar j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
/**************************************************************
* 名稱: Display(uchar k)
* 功能: 將參數分成十位、個位分別顯示
* 輸入: k (鍵盤數值)
* 輸出: P0口輸出七段碼,P2口輸出位選碼
***************************************************************/
void Display(uchar k)
{
P2 = 0; //消隱
P0 = table[k / 10];
P2 = 0x02; Delay_1ms(5); //顯示5ms十位
P2 = 0; //消隱
P0 = table[k % 10];
P2 = 0x01; Delay_1ms(5); //顯示5ms個位
}
/**************************************************************
* 名稱: Keyscan()
* 功能: P1外接4×4按鍵, 按照掃描法讀出鍵值
* 輸出: 按鍵值0~15/如無鍵按下, 返回16
***************************************************************/
uchar Keyscan(void)
{
uchar i, j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f};
for(j = 0; j < 4; j++) { //循環四次
P1 = Buffer[j]; //在P1高四位分別輸出一個低電平
temp = 0x01; //計劃先判斷P1.0位
for(i = 0; i < 4; i++) { //循環四次
if(!(P1 & temp)) //從P1低四位,截取1位
return (i + j * 4); //返回取得的按鍵值
temp <<= 1; //判斷的位,左移一位
} }
return 16; //判斷結束,沒有鍵按下,返回16
} //呵呵,實質性的語句不過8行,就是這么簡練!
/**************************************************************
* 名稱: GetKey()
* 功能: 讀出按鍵、消抖、等待按鍵釋放
* 輸出: 按鍵值0~15/如無鍵按下, 返回16
***************************************************************/
uchar GetKey(void)
{
uchar Key_Temp1, Key_Temp2; //兩次讀出的鍵值
P1 = 0xff;
Key_Temp1 = Keyscan(); //先讀入按鍵
if(Key_Temp1 == 16) return 16; //沒有鍵按下,返回16
Display(sec); //用顯示代替延時
Key_Temp2 = Keyscan(); //再讀一次按鍵
if(Key_Temp1 != Key_Temp2) return 16; //不同,返回16
while(Keyscan() < 16) //等待按鍵釋放
Display(sec); //等待期間顯示
return Key_Temp1;
}
/**************************************************************
* 名稱 : Main()
* 功能 : 主函數
***************************************************************/
void Main(void)
{
uchar Key_Value; //讀出的鍵值
sec = 0;
TMOD = 0x01;
TH1 = (65536-50000)/256;
TL1 = (65536-50000)%256;
TR0 = 1;
ET0 = 1;
EA = 1;
while(1) {
Display(sec); //顯示
if (GetKey() == 10) {
TR0 = 0;
while (TR0 == 0) {
Display(sec); //顯示
Key_Value = GetKey();
if (Key_Value < 10) {
sec %= 10;
sec = sec * 10 + Key_Value;
}
if (Key_Value == 10) TR0 = 1;
} } }
}
/**************************************************************
* 名稱 : T0_INT()
* 功能 : T0中斷函數
***************************************************************/
void T0_INT() interrupt 1
{
TH1 = (65536-50000)/256;
TL1 = (65536-50000)%256;
t_50ms++;
if(t_50ms >= 20) {
t_50ms = 0;
sec++;
sec %= 60;
}
}
/*************************************************************/

Ⅲ 藍橋杯的單片機比賽難不難啊,我大一的,被拉去參加了,好擔心😞

不用擔心的,看看別人是怎麼學習單片機的,加油。

最近論壇上發了一個連載帖子——吳鑒鷹單片機實戰項目精講,因此受到不少網友的關注,在這里吳鑒謝謝各位網友的支持、關心和信任。
在帖子中留了幾個群號,有兩千多讀者加了群,通過QQ向我詢問了很多問題,如果在工作不是太忙的時候我看到了就會回答,但是有時候做項目太忙就沒時間解答。
為此,在這里應群內成員以及一些網友的要求,專門寫一篇文章來針對這些問題做一個總結。希望能為大家的疑惑有一點點幫助就足以。不足之處,也希望大家客觀指出,君子和而不同。

1、學習單片機有用嗎?
有很多初學者有這樣的困惑,單片機初學者感覺入門很難,學著學著,就會產生這樣的疑問——自己辛辛苦苦學習單片機,將來有用嗎?
單片機只是一個工具,重要的還是思想,有了自己的想法,電子行業地域遼闊,隨便你闖。單片機這個切入點入手還是不錯的,可以讓你盡快進入電子殿堂的大門,如果你還在上學,不要眼睛裡面只盯著暫時的薪水,哪怕是畢業兩三年的也一樣。重要的是掌握程度和對技術的理解程度,有句話叫「水到渠成」,到時候再去研究工資的事情也不晚。

2、學習嵌入式編程有必要從51單片機開始嗎?
我原本來在讀大學的時候,有很多同學聽說學習ARM很牛逼,於是就跑到圖書館借了一兩本關於ARM的書,學一兩天後發現跟自己想的不太像,於是學著學著就慢慢放棄了。所以我總結一下,與其邁很大的步子,不如放慢腳步一步步走。從最基本的做起,一步步走,等單片機學會之後再進行像ARM,DSP之類高端處理器的運用,也就能得心應手了,如果想一口吃成一個胖子,只怕最後沒胖起來,倒把自己給噎死了!

3、會用高端處理器就牛了嗎?
不少網友問我:是不是學會了ARM、嵌入式操作系統就會很牛?是不是單片機就是運用在低檔產品上,ARM做出來的產品就高端了。
首先,從本質上說,是同一類東西,都是嵌入式應用方面的主力。十八般兵器,沒有優劣之分,只是在乎持兵器的人修為高低,當年解放軍憑借小米加步槍不也取得了抗戰勝利。
微處理器,單片機、DSP、FPGA、ARM,每一種都有自己的側重點,都具備自己的優勢和劣勢。
單片機:技術比較成熟,運用在工控領域比較多,但進行嵌入式應用顯得太龐大,因而派生出ARM單片機進行高端應用,可以進行操作系統的移植,但是現在一些高端單片機也可以移植操作系統,單片機跟ARM並沒有什麼本質的區別。
DSP:是數據處理的縮寫。也可以做控制運用,它的優勢是運算,主要用在運算量大的領域,如數字信號處理,圖像處理,視屏處理,導彈雷達上也等等。如果要用的好,需要學會很多高深的演算法,需要有較強的數學功底。
FPGA:可編程邏輯陣列的縮寫。實際上就是做一個晶元,用軟體實現它的內部連接,達到用軟體的方法實現硬體的目標。是用硬體實現的一種方法。是早期單片機(功能簡單的邏輯應用)的現代實現方法。

總結:一個嵌入式軟體工程師,其實核心競爭力不是你會運用什麼晶元,當你會了一兩種以後,再學其他的,就會覺得很容易了。一個真正的有競爭力的工程師,應該是具備良好的編程習慣,編程思路,還應該具備扎實的數學功底。只有把握核心的東西,才能走的更遠。

4、單片機行業技術研發有前途嗎?
這也是初學者最為關心的一個話題,單片機行業的技術研發將來前途如何?
著名的高爾夫球手,老虎伍茲說過一句話:我只需成為高爾夫數一數二的高手,錢自然會追著我來。
單片機技術研發,也就是一個類型的職業崗位,同樣叫做「單片機工程師」,能力、經驗、學歷,參差不齊,因此待遇肯定也不盡相同。
高待遇者,年薪數百萬也有,低收入者,養家糊口都難。
只有倒閉的企業,沒有倒閉的行業!
不是行業沒有前景,只能反思自己為何沒有足夠的優秀。

5、單片機技術研發太苦太累,值得去堅持嗎?
在論壇里看到很多人在抱怨:現在電子行業的研發做起來太累,待遇又不是很好,感覺沒什麼出路。
既然我們選擇了單片機行業,就堅持做下去,不要輕信別人講的:單片機研發工程師沒有前途,太苦太累。
學好單片機你至少可以找一份技術性的工作,就算目前累一點,至少你可以看到希望,隨著自己經驗的積累,未來的路會越走越寬!至少可以坐在辦公室裡面,有自由的時間可以支配。
你知道那種專業課沒學好,只能去車間做一線工人的感覺嗎?坐在車間里像一個機器人一樣每天重復同樣的工作嗎?你喜歡過那種一點自由都沒有,在流水線上忙碌著,連上廁所時間都沒有的工作嗎?我相信沒有人喜歡!
所有不要被一些工作了幾年的工程師的話語所迷惑,說做技術很苦,拿的錢又少,當你真正有一天想去做技術,發現原來因為自己缺少知識的積累,沒有公司願意要你。

簡單地分享了自己對單片機領域一些問題的看法,歡迎同行積極分享自己的心得,能讓更多初學者少走彎路,擺正心態進行單片機的學習。

Ⅳ DP801單片機哪有賣的參加中學生智能控制單片機競賽編程 用的

巨人總部有賣

Ⅳ 剛學單片機,為了8月底的電賽(國賽)做准備。想以後繼續深造這方面,但不知道單片機這個方向有沒有發展!

光搞單片機不行的,單片機其實就一個晶元,光會玩一塊晶元能幹什麼,什麼都做不了,而且是電子行業的低端,沒有大的發展,面臨著淘汰的驅勢,不過仍然有很多地方需要用到單片機,在未來一段時間里仍然有活力。建議你想長遠一點,可以先學單片機,然後再學ARM,從8位到32位發展,可以做軟體,也可以做硬體,你上面說待遇比不上程序員,這也不一定的,看你做的深度了,如果純粹搞單片機的程序的話顯然沒有太大的技術含量,代碼一般不會超過萬行,而做嵌入式ARM的程序員通常都是幾十萬行或幾百萬行的代碼,我覺得做軟體吃的是青春飯,一定歲數之後就做不了了,所以建議你學硬體,學習單片機也是要配合電路板的硬體寫程序,如果你想學硬體的話那就要學很多了,模數電、FPGA/CPLD、電路CAD,等,硬體的知識需要積累,越老越吃香,對今後的職業發展幫助會大很多。如果你真的想學的話就要做好心理准備,這個行業不是那麼簡單的學的,會有很多困難,面對挑戰與挫折才能取得進步,祝你成功。

Ⅵ 幾道簡單的單片機亮燈信號的編程題,誰來幫我看下我做得對不對

1.假定L1是最高位
loop:
movc a, @A+DPTR
MOV P0, A
CALL OS1…………LCALL OS1
INC A
DJNZ R7, LOOP
AJMP START
ORG 10000H…………ORG 1000H
TABLE: DB 80H, 40H, 20H, 10H
08H, 04H, 02H, 01h
END

這樣寫也行
MOV A,#80H
LOOP:
MOV P0,A
LCALL OS1
RR A
DJNZ R7,LOOP
AJMP START
END

2.假定L1是最低位 ,細節修改後如下
ORG 0040H
MOV DPTR,#TABLE
START:
MOV A, #00H
MOV R7, #09H
LOOP:
MOVC A,@ A+DPTR
MOV P0 ,A
LCALL DS1
INC A
DJNZ R7, LOOP
AJMP START
ORG 1000H
TABLE:DB 01H, 03H ,07H,
0FH, 1FH ,3FH,
7FH, 0FFH ,00H
END

3.細節修改如下
LOOP:
MOVC A, @A+DPTR
MOV P0 ,A
LCALL DS1
INC A
DJNZ R7, LOOP
AJMP START
ORG 1000H
TABLE:
DB 81H ,0C3H
E7H ,0FFH
18H, 3CH
7EH, 0FFH, 00H
END

Ⅶ 藍橋杯單片機比賽,會51單片機可以參加嗎

藍橋杯單片機比賽會51單片機是可以參藍橋杯比賽的。

單片機設計與開發(本科組,高職高專組)需要具備模擬、數字電路,感測器及MCS51系列單片機的相關知識,常用儀器使用方面的知識,程序編譯調試和下載軟體使用方面的知識。每位選手只能參加其中一個組別的競賽。

(7)單片機編程競賽擴展閱讀

藍橋杯比賽時長

軟體比賽:4小時,全程封閉。

電子類比賽:5小時,全程封閉。

藍橋杯比賽形式

軟體類:全程機考。

選手機器通過區域網連接到各個分賽區的競賽伺服器。

選手答題過程中無法訪問互聯網,也不允許使用本機以外的資源(如USB連接)。

以「伺服器-瀏覽器」方式發放試題、回收選手作答。

電子類:動手操作

注意事項

1、選手必須符合參賽資格,不得弄虛作假。資格審查中一旦發現問題,則取消其報名資格;競賽過程中發現問題,則取消競賽資格;競賽後發現問題,則取消競賽成績,收回獲獎證書及獎品等,並在大賽官網上公示。

2、參賽選手應遵守競賽規則,遵守賽場紀律,服從大賽組委會的指揮和安排,愛護競賽賽場地的設備。

Ⅷ 基於AT89S52單片機的比賽記分牌設計,求匯編編程!

  1. 額,真心簡單。大半夜了,沒心情寫。況且一樓二樓都有意給你答案,我就不越俎代庖了哈

Ⅸ MCS-51單片機的編程題:已知系統晶振頻率為12MHZ,採用定時器T0的方式1,請編程實現1s的延時。

; ORG 0000H SJMP START ORG 0001BH MOV TH1, #(65536 - 50000) / 256 MOV TL1, #LOW(65536 - 50000) CPL P1.0 RETISTART: MOV TMOD, #10H MOV TH1, #(65536 - 50000) / 256 MOV TL1, #LOW(65536 - 50000) SETB TR1 MOV IE, #88H SJMP $END

閱讀全文

與單片機編程競賽相關的資料

熱點內容
大樂透五行演算法 瀏覽:141
英語圖解pdf 瀏覽:611
智能租房系統源碼 瀏覽:345
c編程軟體哪個好 瀏覽:673
程序員寫什麼代碼最好 瀏覽:979
大尺度電影名字 瀏覽:897
重生民國收母 瀏覽:723
男主當鴨子的韓劇電影 瀏覽:488
人乳奶水電影 瀏覽:211
台灣鏡花風月系列 瀏覽:551
主角叫江辰的重生小說 瀏覽:608
李采潭演的都是真的嗎 瀏覽:512
日本女人切腹大尺度電影 瀏覽:637
vr電影在哪看 瀏覽:86
法國四級電影有哪些 瀏覽:558
男主角叫林楓得到系統的小說 瀏覽:820
pdf列印白邊 瀏覽:612
重生異界收母收姨 瀏覽:801
韓國女同性戀影片 瀏覽:192
信念科幻電影 瀏覽:791