- 相關(guān)推薦
51單片機(jī)C語(yǔ)言程序設(shè)計(jì)經(jīng)典案例
項(xiàng)目三C51程序設(shè)計(jì)語(yǔ)言基礎(chǔ)任務(wù)1C51程序的識(shí)讀1.C51程序結(jié)構(gòu)例3-1P_test
/*********************//注釋,還可用//注釋掉一行Filename:P_test.c
Chipname:STC89C51RCClockfrequency:1.20MHz***********************/#include“reg52.h”//預(yù)處理命令,文件包含預(yù)處理命令,后綴名都是.h,標(biāo)準(zhǔn)的MCS-51單片機(jī)頭文件為”reg51.h”,STC89系列單片機(jī)頭文件為”reg52.h”#defineunitunsignedint//宏定義預(yù)處理命令sbitBZ=P3`7;sbitkey=P1`0;voiddelay(unitms){
uniti;
while(ms--){
for(i=0;i<120;i++);}}
voidmain(void){
while(1)
{
if(key==0)
{
BZ=0x0;delayms(10);BZ=0x1;delayms(50);P0=0xFF;}else{
P0=~P0;
delayms(500);}}}
2.C51的數(shù)據(jù)類型
C51的數(shù)據(jù)類型
構(gòu)造類型
位變量型bit字符型無(wú)符號(hào)字符型unsignedchar
有符號(hào)字符型signedchar
整數(shù)型無(wú)符號(hào)整數(shù)型unsignedint
有符號(hào)整數(shù)型signedint
長(zhǎng)整數(shù)型無(wú)符號(hào)長(zhǎng)整數(shù)型unsignedlongint
有符號(hào)長(zhǎng)整數(shù)型signedlongint
實(shí)數(shù)型(浮點(diǎn)型)單精度浮點(diǎn)型float
雙精度浮點(diǎn)型double
數(shù)組類型array結(jié)構(gòu)體類型struct共用體union枚舉enum
表3-1類型
指針類型空類型(void)
C51基本數(shù)據(jù)類型的長(zhǎng)度和值域
長(zhǎng)度/bit18816163232323224
單字節(jié)單字節(jié)雙字節(jié)雙字節(jié)四字節(jié)四字節(jié)四字節(jié)四字節(jié)三字節(jié)長(zhǎng)度/byte
范圍0,10-255-128-1270-65536-32768-32767
位變量型bit
無(wú)符號(hào)字符型unsignedchar有符號(hào)字符型signedchar無(wú)符號(hào)整數(shù)型unsignedint有符號(hào)整數(shù)型signedint
無(wú)符號(hào)長(zhǎng)整數(shù)型unsignedlongint有符號(hào)長(zhǎng)整數(shù)型signedlongint單精度浮點(diǎn)型float雙精度浮點(diǎn)型double一般指針類型
3.C51的標(biāo)識(shí)符和關(guān)鍵字
標(biāo)識(shí)符是由字母、數(shù)字和下劃線組成的字符串,第一個(gè)字符必須是字母或下劃線,不超過(guò)32個(gè)字符。
表3-2C51中的關(guān)鍵字關(guān)鍵字autobdatabreakbitcasechar
用途
存儲(chǔ)種類聲明存儲(chǔ)器類型說(shuō)明程序語(yǔ)句位變量語(yǔ)句程序語(yǔ)句數(shù)據(jù)類型的聲明
說(shuō)明
用來(lái)聲明局部變量
可位尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器退出最內(nèi)層循環(huán)體
位變量的值是1(true)或0(flase)switch語(yǔ)句中的選擇項(xiàng)單字節(jié)整數(shù)型或字符型數(shù)據(jù)
關(guān)鍵字codeconstcontinuedatadefaultdodoubleelseenumexternfloatforgotoidataifintinterruptlongpdataregisterreentrantreturnsbitshortsignedsizeofSfrSfr16staticstructswitchtypedefunionunsignedusingvoidvolatilewhilexdata
用途
存儲(chǔ)器類型聲明存儲(chǔ)類型說(shuō)明程序語(yǔ)句存儲(chǔ)器類型說(shuō)明程序語(yǔ)句程序語(yǔ)句數(shù)據(jù)類型說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明存儲(chǔ)類型說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句程序語(yǔ)句存儲(chǔ)器類型說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明中斷聲明數(shù)據(jù)類型說(shuō)明存儲(chǔ)器類型說(shuō)明存儲(chǔ)類型說(shuō)明再入函數(shù)說(shuō)明程序語(yǔ)句位變量聲明數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明運(yùn)算符
特殊功能寄存器聲明特殊功能寄存器聲明存儲(chǔ)類型說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明寄存器組定義數(shù)據(jù)類型說(shuō)明數(shù)據(jù)類型說(shuō)明程序語(yǔ)句存儲(chǔ)器類型說(shuō)明
說(shuō)明程序存儲(chǔ)器
在程序執(zhí)行過(guò)程中不可修改的變量值退出本次循環(huán),轉(zhuǎn)向下一次循環(huán)直接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器Switch語(yǔ)句中的失敗選擇項(xiàng)構(gòu)成do...while循環(huán)結(jié)構(gòu)雙精度浮點(diǎn)數(shù)構(gòu)成if...else選擇結(jié)構(gòu)枚舉
在其他程序模塊中聲明了的全局變量單精度浮點(diǎn)型構(gòu)成for循環(huán)結(jié)構(gòu)構(gòu)成goto循環(huán)結(jié)構(gòu)間接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器構(gòu)成do...while循環(huán)結(jié)構(gòu)基本整數(shù)型定義一個(gè)中斷函數(shù)長(zhǎng)整數(shù)型
分頁(yè)尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器使用CPU內(nèi)部的寄存器變量定義一個(gè)再入函數(shù)函數(shù)返回
聲明一個(gè)可位尋址的變量短整數(shù)型
有符號(hào)數(shù),二進(jìn)制的最高位位符號(hào)位計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)聲明一個(gè)特殊功能寄存器聲明一個(gè)16位的特殊功能寄存器靜態(tài)變量結(jié)構(gòu)類型數(shù)據(jù)構(gòu)成switch選擇語(yǔ)句重新進(jìn)行數(shù)據(jù)類型定義聯(lián)合數(shù)據(jù)類型無(wú)符號(hào)數(shù)據(jù)
定義芯片的工作寄存器無(wú)符號(hào)數(shù)據(jù)
聲明該變量在程序執(zhí)行中可被隱含改變構(gòu)成while和do...while循環(huán)語(yǔ)句外部數(shù)據(jù)存儲(chǔ)器
4.C51的常量和變量1)常量
常量就是在程序運(yùn)行過(guò)程中,其值不能改變的數(shù)據(jù),包括整型常量、字符常量、字符串常量、實(shí)數(shù)常量、位標(biāo)量等。
(1)整型常量:可以用二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制表示。
無(wú)符號(hào)整數(shù)常量在一個(gè)數(shù)字后面加上“u”或“U”表示。長(zhǎng)整數(shù)型常量在后面加上“l(fā)”或“L”,無(wú)符號(hào)長(zhǎng)整數(shù)型常量在數(shù)字后面加上“ul”或“UL”,實(shí)數(shù)型常量在后面加“f”或“F”。
(2)字符常量:?jiǎn)我?hào)內(nèi)的字符,不可以顯示的控制字符在前加“\”組成專用轉(zhuǎn)義字符。(3)字符串常量:雙引號(hào)內(nèi)的字符,當(dāng)雙引號(hào)內(nèi)沒(méi)有字符時(shí)是空字符串。在C語(yǔ)言中,字符串常量是作為字符類型數(shù)組來(lái)處理的,在存儲(chǔ)字符串時(shí),系統(tǒng)在字符串尾部加上轉(zhuǎn)義字符“\o”,作為該字符串的結(jié)束符。
(4)實(shí)數(shù)常量:有十進(jìn)制和指數(shù)兩種表示形式。指數(shù)表示的實(shí)數(shù)為“[±]數(shù)字[.數(shù)字]e[±]數(shù)字”,[]中的內(nèi)容為可選項(xiàng)
(5)位標(biāo)量:位標(biāo)量的值是一個(gè)二進(jìn)制數(shù)。2)變量
變量就是在程序運(yùn)行過(guò)程中,其值可以被改變的數(shù)據(jù)。必須先用標(biāo)識(shí)符作為變量名,并指出所用的數(shù)據(jù)類型和存儲(chǔ)模式,這樣編譯系統(tǒng)才能為變量分配相應(yīng)的存儲(chǔ)空間。定義變量的格式:[<存儲(chǔ)模式>]<類型定義>[存儲(chǔ)器類型]<標(biāo)識(shí)符>;類型定義和標(biāo)識(shí)符是必要的。存儲(chǔ)模式有四種,自動(dòng)(auto)、外部(extern)、靜態(tài)(static)和寄存器(register),默認(rèn)類型為自動(dòng)(auto)。
表3-3C51存儲(chǔ)類型與MCS-51單片機(jī)存儲(chǔ)空間的對(duì)應(yīng)關(guān)系及其大小存儲(chǔ)類型databdataidatapdataxdatacode
與存儲(chǔ)空間的對(duì)應(yīng)關(guān)系
直接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),訪問(wèn)速度快(128B)
可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),允許位與字節(jié)混合訪問(wèn)(16B)
間接尋址片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū),可訪問(wèn)片內(nèi)全部RAM地址空間(256B)
分頁(yè)尋址片外數(shù)據(jù)存儲(chǔ)區(qū),由MOVX@Ri訪問(wèn)
尋址片外數(shù)據(jù)存儲(chǔ)區(qū)(64KB),由MOVX@DPTR訪問(wèn)
尋址代碼存儲(chǔ)區(qū)(64KB),由MOVC@DPTR訪問(wèn)
長(zhǎng)度/bit88881616
長(zhǎng)度/byte111122
存儲(chǔ)范圍0-2550-2550-2550-2550-655350-65535
如果在變量定義時(shí)省略了存儲(chǔ)類型標(biāo)識(shí)符,則編譯器會(huì)自動(dòng)選擇默認(rèn)的存儲(chǔ)類型。默認(rèn)的存儲(chǔ)類型進(jìn)一步由SMALL、COMPACT、和LARGE存儲(chǔ)模式指令限制。
存儲(chǔ)模式?jīng)Q定了變量的默認(rèn)存儲(chǔ)類型、參數(shù)傳遞區(qū)和無(wú)明確存儲(chǔ)類型說(shuō)明變量的存儲(chǔ)類型。在SMALL模式下,參數(shù)傳遞是在片內(nèi)數(shù)據(jù)存儲(chǔ)區(qū)中完成的。
51單片機(jī)C語(yǔ)言程序設(shè)計(jì)經(jīng)典案例
COMPACT和LARGE模式允許參數(shù)在外部存儲(chǔ)器中傳遞。表3-4存儲(chǔ)模式及說(shuō)明存儲(chǔ)模式SMALL
說(shuō)明
參數(shù)及局部變量放入可直接尋址的片內(nèi)存儲(chǔ)器(最大為128B,默認(rèn)存儲(chǔ)類型為data),因此訪問(wèn)十分方便。另外,所有對(duì)象(包括棧)都必須嵌入片內(nèi)RAM,棧長(zhǎng)由函數(shù)的嵌套導(dǎo)數(shù)決定。
參數(shù)及局部變量放入分頁(yè)片外存儲(chǔ)區(qū)(最大為256B,默認(rèn)的存儲(chǔ)類型為pdata),通過(guò)寄存器R0和R1(@R0、@R1)間接尋址,?臻g位于MCS-51系統(tǒng)內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)中。
參數(shù)及局部變量直接放入片外數(shù)據(jù)存儲(chǔ)區(qū)(最大為64KB,默認(rèn)存儲(chǔ)類型為xdata),使用數(shù)據(jù)指針DPTR來(lái)進(jìn)行尋址。用此數(shù)據(jù)指針進(jìn)行訪問(wèn)效率較低,尤其是對(duì)兩個(gè)或多個(gè)字節(jié)的變量,這種數(shù)據(jù)類型的訪問(wèn)機(jī)制直接影響代碼的長(zhǎng)度。另一不方便之處在于這種數(shù)據(jù)指針不能對(duì)稱操作。
COMPACT
LARGE
任務(wù)2運(yùn)算符和表達(dá)式表3-5C語(yǔ)言常用的運(yùn)算符
【51單片機(jī)C語(yǔ)言程序設(shè)計(jì)經(jīng)典案例】相關(guān)文章:
案例驅(qū)動(dòng)在C語(yǔ)言程序設(shè)計(jì)教學(xué)中的探索實(shí)踐04-28
《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)探索04-29
C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教學(xué)的探討04-29
淺談C語(yǔ)言程序設(shè)計(jì)的教學(xué)方法04-29
初學(xué)C語(yǔ)言程序設(shè)計(jì)的基本方法和技巧04-28
獨(dú)立學(xué)院C語(yǔ)言程序設(shè)計(jì)教學(xué)改革與實(shí)踐04-29
《C#語(yǔ)言程序設(shè)計(jì)》課程教學(xué)改革與實(shí)踐05-01