




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)高級(jí)語言C程序設(shè)計(jì)第1頁/共105頁2本章目錄1一.C51語言的特點(diǎn)及其程序結(jié)構(gòu)1.C51特點(diǎn)2.C51程序結(jié)構(gòu)二.C51語言的標(biāo)識(shí)符和關(guān)鍵字1.C51擴(kuò)展的標(biāo)識(shí)符2.C51擴(kuò)展的關(guān)鍵字三.C51的數(shù)據(jù)類型及運(yùn)算符1.基本數(shù)據(jù)類型的長(zhǎng)度2.C51語言的擴(kuò)展3.特殊功能寄存器的數(shù)據(jù)類型4.DATA存儲(chǔ)類型5.BDATA存儲(chǔ)類型6.IDATA存儲(chǔ)類型7.PDATA和XDATA存儲(chǔ)類型8.PDATA和XDATA比較第2頁/共105頁39.CODE存儲(chǔ)類型10.存儲(chǔ)模式11.指針11.1.通用指針11.2.存儲(chǔ)器指針11.3.存儲(chǔ)器指針和通用指針的比較四.編譯預(yù)處理命令1.C51的STDIO.H2.C51的REG51.H(1)五.C51語言的程序流程控制1.IF語句2.SWITCHCASE語句3.While和dowhile循環(huán)語句4.For循環(huán)語句本章目錄2第3頁/共105頁4六.函數(shù)1.函數(shù)格式2.重入函數(shù)3.中斷服務(wù)函數(shù)七.C51程序設(shè)計(jì)舉例1.例1---求數(shù)學(xué)式2.例2---簡(jiǎn)單控制3.例3---延時(shí)4.例4---使用定時(shí)器0定時(shí)---查詢方式5.例5---使用定時(shí)器0定時(shí)---中斷方式6.例6---利用定時(shí)器1計(jì)數(shù)7.C51開發(fā)環(huán)境7.1.偉福模擬軟件
7.2.uVision3集成開發(fā)環(huán)境7.3.C51編譯練習(xí)程序TEXT.C本章目錄3第4頁/共105頁5本章目錄4八.C51的應(yīng)用1.8051串行口擴(kuò)展LED顯示器接口與應(yīng)用2.DAC轉(zhuǎn)換的接口與應(yīng)用3.ADC0809應(yīng)用舉例九.課本例題簡(jiǎn)介
1.例8-22.例8-53.例8-74.例8-8十.加一減一綜合實(shí)踐C51程序設(shè)計(jì)第5頁/共105頁6一.C51語言的特點(diǎn)及其程序結(jié)構(gòu)第6頁/共105頁71.C51特點(diǎn)第7頁/共105頁82.C51程序結(jié)構(gòu)第8頁/共105頁93.C51與匯編語言chardataa,b,c,d;main(){a=2;b=a;等效b=(a)c=a+b;等效c=(a+b)}C51程序經(jīng)WAVE6000編譯后,點(diǎn)窗口---CPU窗口產(chǎn)生的界面:a/08Hb/09Hc/0AH變量a,b,c分別對(duì)應(yīng)于內(nèi)部數(shù)據(jù)存儲(chǔ)器地址08H,09H,0AH.第9頁/共105頁10二.C51語言的標(biāo)識(shí)符和關(guān)鍵字第10頁/共105頁11C51擴(kuò)展的關(guān)鍵字第11頁/共105頁12三.C51的數(shù)據(jù)類型及運(yùn)算符第12頁/共105頁131.基本數(shù)據(jù)類型的長(zhǎng)度第13頁/共105頁142.C51語言的擴(kuò)展第14頁/共105頁153.特殊功能寄存器的數(shù)據(jù)類型第15頁/共105頁164.DATA存儲(chǔ)類型第16頁/共105頁175.BDATA存儲(chǔ)類型第17頁/共105頁186.IDATA存儲(chǔ)類型第18頁/共105頁197.PDATA和XDATA存儲(chǔ)類型第19頁/共105頁208.PDATA和XDATA比較第20頁/共105頁219.CODE存儲(chǔ)類型第21頁/共105頁2210.存儲(chǔ)模式第22頁/共105頁2311.指針第23頁/共105頁2411.1.通用指針第24頁/共105頁2511.2.存儲(chǔ)器指針第25頁/共105頁2611.3.存儲(chǔ)器指針和通用指針的比較第26頁/共105頁2712.絕對(duì)地址的訪問1.絕對(duì)宏#include<absacc.h>//加進(jìn)包含文件#defineADC0809XBYTE[0X7FF8]//定義一個(gè)絕對(duì)地址rval=CBYTE[0X006];//對(duì)一個(gè)絕對(duì)地址(字節(jié))進(jìn)行讀rval=XWORD[0X002];//對(duì)一個(gè)絕對(duì)地址(字)進(jìn)行讀DBYTE[0X0002]=5;//對(duì)一個(gè)絕對(duì)地址(字節(jié))進(jìn)行寫PWORD[0X002]=57;//對(duì)一個(gè)絕對(duì)地址(字)進(jìn)行寫第27頁/共105頁282._at_關(guān)鍵字charxdataADC0809;//定義一個(gè)變量ADC0809_at_0xFFF8;//將某變量固定在某地址上第28頁/共105頁29四.編譯預(yù)處理命令第29頁/共105頁301.C51的STDIO.H(1)第30頁/共105頁311.C51的STDIO.H(2)第31頁/共105頁322.C51的REG51.H(1)第32頁/共105頁332.C51的REG51.H(2)第33頁/共105頁342.C51的REG51.H(3)第34頁/共105頁352.C51的REG51.H(4)第35頁/共105頁362.C51的REG51.H(5)第36頁/共105頁372.C51的REG51.H(6)第37頁/共105頁382.C51的REG51.H(7)第38頁/共105頁39五.C51語言的程序流程控制第39頁/共105頁401.IF語句第40頁/共105頁412.SWITCHCASE語句第41頁/共105頁423.While和dowhile循環(huán)語句第42頁/共105頁434.For循環(huán)語句第43頁/共105頁44六.函數(shù)第44頁/共105頁451.函數(shù)格式格式:[Alien][返回類型]函數(shù)名(參數(shù)表)[編譯屬性][重入屬性][中斷屬性][寄存器組屬性]Alien---用Alien,指示該函數(shù)按PL/M51函數(shù)的方式進(jìn)行參數(shù)傳遞;缺省按C51方式進(jìn)行。返回類型---增加了bit型,缺省,函數(shù)返回int(不是void)。函數(shù)名---大小寫敏感,最多256字符。一般使用字母、數(shù)字、下劃線,但數(shù)字不能打頭。參數(shù)表
---最多32個(gè)參數(shù)。編譯屬性
---small、compact、large三種。重入屬性
---用reertrant說明該函數(shù)按可重入函數(shù)進(jìn)行處理,缺省則說明該函數(shù)為不可重入函數(shù)。中斷屬性
---用“interrupt中斷編號(hào)”說明該函數(shù)是中斷函數(shù),缺省則說明該函數(shù)為非中斷函數(shù)。寄存器組屬性---用“using工作寄存器組編號(hào)“說明所用的寄存器組號(hào),缺省則說明使用寄存器組0。第45頁/共105頁462.重入函數(shù)第46頁/共105頁473.中斷服務(wù)函數(shù)第47頁/共105頁48七.C51程序設(shè)計(jì)舉例1.例1---求數(shù)學(xué)式第48頁/共105頁49例3---延時(shí)
voidmain(){delay(10);}第49頁/共105頁50例4---使用定時(shí)器0定時(shí)(查詢方式)(1)第50頁/共105頁51使用定時(shí)器0定時(shí)---查詢方式(2)第51頁/共105頁52例5---使用定時(shí)器0定時(shí)(中斷方式)第52頁/共105頁53例6---利用定時(shí)器1計(jì)數(shù)(1)第53頁/共105頁54利用定時(shí)器1計(jì)數(shù)(2)第54頁/共105頁557.C51開發(fā)環(huán)境7.1.C51開發(fā)環(huán)境:偉福模擬軟件第55頁/共105頁56偉福模擬軟件C51開發(fā)操作步驟運(yùn)行WAVE6000軟件(要先裝KEIL編譯器);新建一.C源程序并保存;新建一項(xiàng)目(文件-新建項(xiàng)目),然后自動(dòng)分三步進(jìn)行:A)、加入模塊文件。選擇.C文件再打開。B)、加入包含文件。如果沒有包含文件(源程序#INCLUDE所包含的所有文件)。C)、保存項(xiàng)目。在打開的窗口中輸入項(xiàng)目名稱(名稱可自定,擴(kuò)展名.PRJ可不加,軟件會(huì)自動(dòng)添加)。編譯調(diào)試。(其它的設(shè)置同匯編程序)第56頁/共105頁577.2.uVision3集成開發(fā)環(huán)境第57頁/共105頁58uVision3集成開發(fā)環(huán)境操作步驟運(yùn)行KEIL51軟件;新建一.C的源程序并保存;新建一項(xiàng)目(文件-新建-新建過程),接著選擇所要的單片機(jī)(如AT89C51);然后加入一.C的源程序(如右圖);第58頁/共105頁59操作步驟(續(xù))做必要的設(shè)置,編譯后生成.HEX文件(如右圖,下方圖中應(yīng)選中產(chǎn)生.HEX文件);編譯調(diào)試。第59頁/共105頁60uVision3設(shè)置觀察窗口voidmain(void){unsignedchara;unsignedintb;b=100*4;a=b;while(1);}第60頁/共105頁61第61頁/共105頁62串口調(diào)試助手借助串口調(diào)試助手,完成一個(gè)關(guān)系運(yùn)算符相關(guān)的實(shí)例程序。#include<AT89X51.H>#include<stdio.h>voidmain(void){intx,y;SCON=0x50;//串口方式1,允許接收
TMOD=0x20;//定時(shí)器1定時(shí)方式2TH1=0xE8;//11.0592MHz1200波特率
TL1=0xE8;TI=1;TR1=1;//啟動(dòng)定時(shí)器
while(1){第62頁/共105頁63printf("您好!我叫Robot!我是一個(gè)會(huì)做算術(shù)的機(jī)器人!\n");//顯示
printf("請(qǐng)您輸入兩個(gè)int,X和Y\n");//顯示
scanf("%d%d",&x,&y);//輸入
if(x<y)printf("X<Y\n");//當(dāng)X小于Y時(shí)
else//當(dāng)X不小于Y時(shí)再作判斷
{if(x==y)printf("X=Y\n");//當(dāng)X等于Y時(shí)
elseprintf("X>Y\n");//當(dāng)X大于Y時(shí)
}}}
要注意的是,在連接PC串口調(diào)試時(shí)。發(fā)送數(shù)字時(shí),發(fā)送完一個(gè)數(shù)字后還要發(fā)送一個(gè)回車符,以使scanf函數(shù)確認(rèn)有數(shù)據(jù)輸入。第63頁/共105頁64第64頁/共105頁657.3C51編譯練習(xí)程序TEXT.C1.單片機(jī)和微機(jī)串口通信,完成發(fā)送程序的編寫,每發(fā)送一串字符“HELLO”后,延遲一段時(shí)間再發(fā)送。2.系統(tǒng)用P1口控制8個(gè)LED燈,低電平驅(qū)動(dòng),需要完成輪流控制LED燈亮。3.設(shè)主頻為12MHZ,使用T1定時(shí)器在方式0下,編程實(shí)現(xiàn)P1.0產(chǎn)生周期為2ms的方波。第65頁/共105頁66
#include<AT89x51.h> #include<stdio.h>voidmain(void){SCON=0x50;//串口方式1,允許接收
TMOD=0x20;//定時(shí)器1定時(shí)方式2TCON=0x40;//設(shè)定時(shí)器1開始計(jì)數(shù)
TH1=0xE8;//11.0592MHz1200波特率
TL1=0xE8;TI=1;TR1=1;//啟動(dòng)定時(shí)器
while(1){printf("Hello!\n");//顯示Hello}}第66頁/共105頁67#include<reg51.h>#include<intrins.h>voiddelayms(unsignedcharms){ unsignedchari; while(ms--) { for(i=0;i<120;i++); }} main(){ unsignedcharLED; LED=0xfe; P1=LED; while(1) { delayms(250); LED=_crol_(LED,1);//循環(huán)右移1位,點(diǎn)亮下一個(gè)LED P1=LED; }}第67頁/共105頁68#include<AT89X51.H>#include<stdio.h>voidmain(void){TMOD=0x00;//定時(shí)器1定時(shí)方式0TH1=0xE0;TL1=0x18;EA=1;TR1=1;//啟動(dòng)定時(shí)器
while(1);}voidtime1interrupt3using2{TH1=0xE0;TL1=0x18;P1.0=!P1.0;}第68頁/共105頁69八.C51的應(yīng)用第69頁/共105頁70按鈕判斷(1)第70頁/共105頁71按鈕判斷(2)org0000hstart:movp1,#00hmovp0,#0ffhstl:jbp0.0,$jnbp0.0,$cplp1.0sjmpstlend第71頁/共105頁72按鈕判斷(3)#include<reg51.h>sbitP00=P0^0;sbitP10=P1^0;voiddelay(unsignedcharn){unsignedchari,j;for(i=0;i<n;i++)for(j=0;j<125;j++);}voidmain(){P1=0X00;while(1){if(P00==0){delay(10);if(P00==0) while(!P00); P10=!P10;}}}第72頁/共105頁731.8051串行口擴(kuò)展LED顯示器接口與應(yīng)用第73頁/共105頁74LED顯示器接口與應(yīng)用程序(1)第74頁/共105頁75LED顯示器接口與應(yīng)用程序(2)第75頁/共105頁76
2.DAC轉(zhuǎn)換的接口與應(yīng)用第76頁/共105頁77DAC0832產(chǎn)生鋸齒波程序(1)第77頁/共105頁78DAC0832產(chǎn)生鋸齒波程序(2)第78頁/共105頁79DAC0832產(chǎn)生梯形波程序(1)第79頁/共105頁80DAC0832產(chǎn)生梯形波程序(2)第80頁/共105頁813.ADC轉(zhuǎn)換的接口與應(yīng)用(1)地址有鎖存第81頁/共105頁82ADC0809應(yīng)用舉例第82頁/共105頁83ADC0809應(yīng)用C51程序(1)第83頁/共105頁84ADC0809應(yīng)用C51程序(2)第84頁/共105頁85中斷服務(wù)軟件設(shè)計(jì)第85頁/共105頁86九.課本例題選介第86頁/共105頁87例8-2第87頁/共105頁88例8-5第88頁/共105頁89例8-7(1)按課本圖7-14輸出正弦波第89頁/共105頁90例8-7(2)第90頁/共105頁91例8-8(1)第91頁/共105頁92例8-8(2)第92頁/共105頁93例8-8(3)第93頁/共105頁94例8-8(4)第94頁/共105頁95十.加一減一綜合實(shí)踐C51程序設(shè)計(jì)用如下的電路圖,實(shí)現(xiàn):按“加一”按鈕顯示加“1”,按“加二”按鈕顯示加“2”,按“減一”按鈕顯示減“1”,按“減二”按鈕顯示減“2”;計(jì)數(shù)的最大值為19,最小值為0;按“清0”按鈕顯示“0”(清0)。第95頁/共105頁96電路圖第96頁/共105頁97程序(1)#include"reg51.h"http://頭文件#include"math.h"http://頭文件unsignedcharcodedisp_code[10]={ 0x3F,//"0"0x06,//"1"0x5B,//"2"0x4F,//"3"0x66,//"4"0x6D,//"5"0x7D,//"6"0x07,//"7"0x7F,//"8"0x6F,//"9"};第97頁/共105頁98程序(2)//定義sbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P36=P3^6;unsignedintcount; //定義計(jì)數(shù)變量voiddelay(unsignedcharn)//延時(shí)子程序{ unsignedchari,j; for(i=0;i<n;i++) for(j=0;i<125;i++);}第98頁/共105頁99程序(3)voidinitial()//初始化程序{ EA=1; EX0=1; EX1=1; IT1=1;//選擇INT1為脈沖觸發(fā)方式
IT0=1; TMOD=0x66;//T1模式2,自動(dòng)重裝
TH1=TL1=TH0=TL0=0xff;//計(jì)數(shù)一次中斷
ET1=ET0=1; TR1=TR0=1;}第99頁/共105頁100程序(4)display() //顯示子程序{unsignedinttemp; unsignedchardisp_c[4],i; temp=count; for(i=0;i<4;i++) { //拆字程序
disp_c[i]=temp%10; temp=temp/10; } P0=disp_code[disp_c[0]];P23=0;delay(2);P23=1;P0=disp_code[disp_c[1]];P22=0;delay(2);P22=1;P0=disp_code[disp_c[2]];P21=0;de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水產(chǎn)養(yǎng)殖基地土地使用權(quán)合同
- 公司技術(shù)服務(wù)采購合同
- 豪華酒店廚師服務(wù)合同
- 電子產(chǎn)品購銷合同標(biāo)準(zhǔn)版
- 房地產(chǎn)投資專項(xiàng)法律服務(wù)合同
- (完整版)農(nóng)村土地租賃合同書
- 光學(xué)玻璃的紫外光固化涂層技術(shù)考核試卷
- 醫(yī)療用品行業(yè)服務(wù)平臺(tái)拓展考核試卷
- 搪瓷原材料市場(chǎng)動(dòng)態(tài)與價(jià)格趨勢(shì)考核試卷
- 數(shù)字出版物的長(zhǎng)期保存與數(shù)字遺產(chǎn)考核試卷
- 2025年02月黃石市殘聯(lián)專門協(xié)會(huì)公開招聘工作人員5人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 取水許可申請(qǐng)書范本
- 蚌埠介紹-蚌埠簡(jiǎn)介課件(經(jīng)典版)
- GB/T 15561-2024數(shù)字指示軌道衡
- 探究煙花爆竹知識(shí)產(chǎn)權(quán)-洞察分析
- 網(wǎng)絡(luò)保險(xiǎn)風(fēng)險(xiǎn)評(píng)估-洞察分析
- 呼吸機(jī)濕化的護(hù)理
- 2024“五史”全文課件
- 醫(yī)療器械法律法規(guī)培訓(xùn)
- 2025年九年級(jí)數(shù)學(xué)中考復(fù)習(xí)計(jì)劃
- 2024屆江西省南昌市高三一模英語試卷(解析版)
評(píng)論
0/150
提交評(píng)論