單片機(jī)C語言編程與.doc

單片機(jī)C語言編程與.doc

ID:57731091

大?。?2.50 KB

頁數(shù):9頁

時(shí)間:2020-09-02

單片機(jī)C語言編程與.doc_第1頁
單片機(jī)C語言編程與.doc_第2頁
單片機(jī)C語言編程與.doc_第3頁
單片機(jī)C語言編程與.doc_第4頁
單片機(jī)C語言編程與.doc_第5頁
資源描述:

《單片機(jī)C語言編程與.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、單片機(jī)C語言編程與&或

2、頭文件常見問題一、常見問題1、頭文件reg51.h和reg52.h其實(shí)是一樣的,大家兩個(gè)都可以用。2、main()前面的void可加可不加,反正都是無返回值函數(shù)。3、不是每一個(gè)程序都要用到死循環(huán)while(1),例如點(diǎn)亮一顆LED小燈就不用,只要執(zhí)行一次就一直是高電平了不用循環(huán)。4、位操作和字節(jié)操作都能用來控制I/O口輸出電平,位操作需要實(shí)現(xiàn)聲明sbit,而字節(jié)操作則不用。5、延時(shí)程序有兩種a:循環(huán)延時(shí);b:定時(shí)器精確延時(shí)6、如果定義的變量沒有置初值,那么默認(rèn)初值就是零。7、定義數(shù)組時(shí)(如:number[]

3、={1,2,3,4,5,6,};)則結(jié)束時(shí)要加分號(hào),每個(gè)元素之間用逗號(hào)隔開,[]內(nèi)可加可不加元素個(gè)數(shù)。8、當(dāng)程序比較復(fù)雜時(shí),可將程序模塊化,在主函數(shù)前定義,主函數(shù)內(nèi)引用,但要注意全局變量和局部變量的區(qū)別。9、有的數(shù)組前面加code意思為將該數(shù)組寫入FLASH中,數(shù)組內(nèi)容不變,若不加code則寫入ram中。10、能不能不進(jìn)行位操作,直接用P0^0賦值?不可以,因?yàn)镻0^0中有異或符號(hào),所以必須進(jìn)行位操作之后才可以正常賦值。11、轉(zhuǎn)串芯片PL2303為國產(chǎn)芯片,在線仿真時(shí)波特率最高為14400,太高會(huì)造成程序下載失敗。12、STC89

4、C52程序存儲(chǔ)空間是8KFLASH,當(dāng)下載Hex文件時(shí),有的同學(xué)可能注意到文件超過了8K,認(rèn)為存儲(chǔ)空間不夠,這種說法是錯(cuò)誤的,看程序所占空間大小應(yīng)該在keil軟件下,code后面的字節(jié)數(shù)。二、頭文件1、頭文件如果keil軟件庫中沒有的話,需要自己編寫,并且要添加到所在工程中,或者直接復(fù)制一份到keil軟件C51——>;INC文件夾下,這樣就可以直接引用頭文件。三、變量將函數(shù)模塊化時(shí)經(jīng)常用到靜態(tài)變量。四、與&,或

5、有時(shí)在程序中也會(huì)看到這樣的程序語言,a&=b;這樣的語句相當(dāng)于:a=a&b同理,a

6、=b;這樣的

7、語句相當(dāng)于:a=a

8、b五、中斷程序?qū)嵗好氡?include;typedefunsignedcharuint8;typedefunsignedintuint16;typedefunsignedlonguint32;codeuint8number[]={0xc0,0xf9,0xa4,0xb0,//code為寫入flash中0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};uint8a[6];//前無code,為寫入ramuint16counter=0;sbitE

9、NLED=P1^4;sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;voidtimer1_init()//定時(shí)器函數(shù){TMOD

10、=0x10;//選擇定時(shí)器模式TMOD&=0xdf;TH1=0xFC;//定時(shí)間初始值TL1=0x67;TR1=1;//開始計(jì)時(shí)}voidint_init()//中斷函數(shù){ET1=1;//選擇中斷1EA=1;//開啟中斷功能}voidrefresh_led()//刷新函數(shù){staticuint8j=0;//靜態(tài)變量,第一次定義有效,整

11、個(gè)函數(shù)均保留switch(j){case0:ADDR0=0;ADDR1=0;ADDR2=0;j++;P0=number[a[0]];break;case1:ADDR0=1;ADDR1=0;ADDR2=0;j++;P0=number[a[1]];break;case2:ADDR0=0;ADDR1=1;ADDR2=0;j++;P0=number[a[2]];break;case3:ADDR0=1;ADDR1=1;ADDR2=0;j++;P0=number[a[3]];break;case4:ADDR0=0;ADDR1=0;ADDR2=

12、1;j++;P0=number[a[4]];break;case5:ADDR0=1;ADDR1=0;ADDR2=1;j=0;P0=number[a[5]];break;default:break;}}main()//主函數(shù){ENLED=0;ADDR3=1;//設(shè)置三八譯碼器的狀態(tài)timer1_init();//定時(shí)器函數(shù)int_init();//中斷開啟while(1);//死循環(huán),保證程序處在運(yùn)行狀態(tài)}voidinterrupt_timer1()interrupt3//中斷函數(shù),每次定時(shí)溢出時(shí)就會(huì)觸發(fā)中斷{staticuint3

13、2sec=0;TH1=0xFC;TL1=0x67;counter++;if(counter==1000){sec++;counter=0;a[0]=sec%10;a[1]=sec/10%10;a[2]=sec/100%10;a[3]=sec/100

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。