版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C-51程式設(shè)計C語言作為一種非常方便的語言而得到廣泛的支持,C語言程式本身不依賴於機(jī)器硬體系統(tǒng),基本上不作修改就可將程式從不同的單片機(jī)中移植過來。C提供了很多數(shù)學(xué)函數(shù)並支持浮點運算,開發(fā)效率高,故可縮短開發(fā)時間,增加程式可讀性和可維護(hù)性。
㈠C-51簡介C-51與ASM-51相比,有如下優(yōu)點:1.
對單片機(jī)的指令系統(tǒng)不要求瞭解,僅要求對8051的存貯器結(jié)構(gòu)有初步瞭解;2.
寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;3.
程式有規(guī)範(fàn)的結(jié)構(gòu),可分成不同的函數(shù),這種方式可使程式結(jié)構(gòu)化;4.
具有將可變的選擇與特殊操作組合在一起的能力,改善了程式的可讀性;5.
提供的庫包含許多標(biāo)準(zhǔn)副程式,具有較強的數(shù)據(jù)處理能力;6.
由於具有方便的模組化編程技術(shù),使已編好程式可容量地植入新程式;㈢C-51的數(shù)據(jù)類型常用的數(shù)據(jù)類型有:㈡C-51的程式結(jié)構(gòu)
與一般C語言的結(jié)構(gòu)相同,以main()函數(shù)為程式人口,程式體中包含若干語句還可以包含若干函數(shù)。位型
字元型
整型
長整型
浮點型bit
char
int
longint
float1位
1位元組
2位元組
4位元組
4位元組數(shù)組型
指針型㈣C-51數(shù)據(jù)的存儲類型名存儲空間位置長度數(shù)據(jù)範(fàn)圍
data直接尋址片內(nèi)RAM8位0~255bdata可位尋址片內(nèi)RAM1位0/1idata間接尋址片內(nèi)RAM8位0~255xdata片外RAM16位0~65535㈤C-51的包含的頭檔通常有:reg51.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.h(定義特殊功能寄存器和位寄存器);
math.h(定義常用數(shù)學(xué)運算);㈥C-51的運算符與C語言基本相同:+-*/(加減乘除)>>=<<=(大於大於等於小於小於等於)==!=(測試等於測試不等於)&&||!(邏輯與邏輯或邏輯非)>><<(位右移位左移)&|(按位與按位或)^~(按位異或按位取反)㈦C-51的基本語句與標(biāo)準(zhǔn)C語言基本相同:
if
選擇語言
switch/case
多分支選擇語言
while
迴圈語言
do-while
迴圈語言
for
迴圈語言㈧實例ORG0000HMOVR0,#0DCH;指向字形口MOVA,#80H ;確定字形代碼MOVX@R0,A
;輸出字形代碼MOVR1,#0DDH;指向字位口MOVA,#20H ;從最高位開始LEDO:
MOVX@R1,A ;輸出字位代碼MOVR2,#18H ;確定延時常數(shù)ACALLDEYS ;調(diào)延時副程式RLA ;右移一位SJMPLEDO ;迴圈演示;
延時副程式DEYS:PUSH02HDEY0:PUSH02HDEY1:PUSH02HDJNZR2,$POP02HDJNZR2,DEY1POP02HDJNZR2,DEY0POP02HDJNZR2,DEYSRETEND例1.“8”字元迴圈演示(字形口為DCH;字位口為DDH)★組合語言程式#include<reg51.h>#include<absacc.h>#defineucharunsignedchar/*字形口*/#definePORTAXBYTE[0xffdc]/*字位口*/#definePORTBXBYTE[0xffdd]/*延時1MS副程式*/voidmsce(unsignedintx){unsignedcharj;while((x--)!=0){for(j=0;j<60;j++);}}main(){ucharrr,i;for(;;){rr=0x01;/*從最右一位開始*/
for(i=0;i<6;i++){PORTA=0x80;/*輸出字形代碼*/
PORTB=rr;/*輸出字位代碼*/
msce(150);/*調(diào)延時副程式*/
rr=rr<<1;/*迴圈左移一位*/}}★
“8”字元迴圈演示的C-51程式
★C-51程式
#include<reg51.h>main(){inti;unsignedcharxdata*p=0x2000;/*指針指向2000H單元*/for(i=0;i<256;i++)
/*清零2000H-20FFH單元*/
{*p=0;p++;}
}例2.清零程式(將2000H—20FFH的內(nèi)容清零)★組合語言程式
ORG0000HSE01:MOVR0,#00H
MOVDPTR,#2000H;(0000H)送DPTRLOO1:CLRAMOVX@DPTR,A;0送(DPTR)INCDPTR;DPTR+1INCR0;位元組數(shù)加1
CJNER0,#00H,LOO1;不到FF個位元組再清LOOP:SJMPLOOP例3.拆字程式(將2000H的內(nèi)容拆開,高位送2001H低位,低位送2002H低位)★
組合語言程式
ORG0000HSE02:MOVDPTR,#2000HMOVXA,@DPTRMOVB,A
;(2000)→A→BSWAPA;交換
ANLA,#0FH;屏敝高位
INCDPTRMOVX@DPTR,A;送2001HINCDPTRMOVA,BANLA,#0FH;(2000)內(nèi)容屏敝高位
MOVX@DPTR,A;送2002HSJMP$★拆字C-51程式#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指針指向2000H單元*/
/*2002H單元高4位清零,低4位裝2000H單元低4位*/*(p+2)=(*p)&0x0f;/*2001H單元高4位清零,低4位裝2000H單元高4位*/*(p+1)=(*p)>>4;}★組合語言程式
ORG0000HL00:MOVR0,#10H
;查找16個位元組
MOVR1,#00HMOVDPTR,#2000HL11:MOVXA,@DPTR
CJNEA,#00H,L16;取出內(nèi)容與00H相等嗎?
INCR1
;取出個數(shù)加1L16:INCDPTRDJNZR0,L11
;未完繼續(xù)
MOVDPTR,#2100HMOVA,R1MOVX@DPTR,A
;相同數(shù)個數(shù)送2100HL1E:SJMPL1E例4.查找零的個數(shù)(在2000H--200FH中查出有幾個字節(jié)是零,把個數(shù)放在2100H單元中)★查找零的個數(shù)C-51程式#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指針p指向2000H單元*/
intn=0,i;for(i=0;i<16;i++){if(*p==0)n++;
/*若該單元內(nèi)容為零,則n+1*/
p++;
/*指針指向下一單元*/}
p=0x2100;
/*指針p指向2100H單元*/*p=n;
/*把個數(shù)放在2100H單元中*/}★組合語言程式
ORG0000HMOVA,R3MOVB,R7MULAB;R3*R7XCHA,R7;R7=(R3*R7)低位元組
MOVR5,B;R5=(R3*R7)高位元組
MOVB,R2MULAB;R2*R7ADDA,R5MOVR4,ACLRAADDCA,BMOVR5,A;R5=(R2*R7)高位元組
MOVA,R6MOVB,R3MULAB;R3*R6
ADDA,R4XCHA,BADDCA,R5MOVR5,AMOVPSW.5,C;存CYMOVA,R2MULAB;R2*R6ADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,PSW.5;加上次加法的位
ADDCA,BMOVR4,AJMP$例5.雙位元組無符號整數(shù)快速乘法★C-51程式#include<reg51.h>main(){unsignedintxdata*p1=0x2000;/*雙位元組被乘數(shù)在2000H單元*/unsignedintxdata*p2=0x2002;/*雙位元組乘數(shù)在2002H單元*/unsignedlongxdata*p3=0x2010;/*4位元組乘積放在2010H單元*/
*p3=(*p1)*(*p2);}例6.工業(yè)順序控制C-51程式#include<reg51.h>
sbitP1_7=0x97;
/*定義P1.7口地址*/unsignedcharTT;voidDelay(unsignedintvalue)/*延時副程式*/{while(value!=0)value--;}voidSerint1()interrupt2/*中斷服務(wù)程式--暫停並報警*/{inti;TT=P1;
/*保護(hù)現(xiàn)場*/
P1=0x7f;
/*關(guān)輸出*/
while(!INT1)
/*若故障未消除,則報警*/{for(i=0;i<0xa0;i++)
/*給蜂鳴器發(fā)震盪脈衝*/{P1_7=1;Delay(50);P1_7=0;Delay(50);}P1_7=0;Delay(6550);}
P1=TT;/*恢復(fù)現(xiàn)場*/}main(){IE=0x84;/*CPU開中斷,INT1開中斷*/while(T0==0);/*等待P3.4變高*/for(;;){P1=0xfe;Delay(60000);/*工序1*/
P1=0xfd;Delay(60000);/*工序2*/
P1=0xfb;Delay(60000);/*工序3*/
P1=0xf7;Delay(60000);/*工序4*/
P1=0xef;Delay(60000);/*工序5*/
P1=0xdf;Delay(60000);/*工序6*/
P1=0x8f;Delay(60000);/*工序7*/}}(續(xù)前)例7.電腦時鐘(用定時器產(chǎn)生0.1秒定時中斷,對時鐘計數(shù)器計數(shù)並送數(shù)碼管顯示)★C-51程式#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineLEDwpXBYTE[0xffdc]#defineLEDwbXBYTE[0xffdd]ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharhour=1,min=23,sec=45,m=0,n,i;/*給時鐘賦初值*/ucharxdata*p;voidDelay(unsignedintvalue)/*延時副程式*/{while(value!=0)value--;}
voidTrans(void)/*時間數(shù)據(jù)轉(zhuǎn)換副程式*/{if(sec==60){min++;sec=0;}if(min==60){hour++;min=0;}if(hour==24){hour=0;}*(p+0)=hour/10;/*時的十分位*/*(p+1)=hour%10;/*時的個位*/*(p+2)=min/10;/*分的十分位*/*(p+3)=min%10;/*分的個位*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年考古發(fā)掘項目土方清理與保護(hù)合同3篇
- 2025版信息安全保密協(xié)議合同5篇
- 二零二五年房地產(chǎn)項目配套基礎(chǔ)設(shè)施建設(shè)合同3篇
- 二零二五年度智能交通管理系統(tǒng)免責(zé)協(xié)議范本4篇
- 2025版鋁材回收利用項目合作協(xié)議4篇
- 2025年度殘疾人勞動合同簽訂中的殘疾人權(quán)益保障與就業(yè)促進(jìn)2篇
- 2025餐飲企業(yè)員工勞動合同15篇
- 2025年度商業(yè)廣場墻面LED廣告屏租賃合同標(biāo)的協(xié)議4篇
- 2024食用油倉儲物流服務(wù)合作合同3篇
- 標(biāo)識標(biāo)牌施工質(zhì)量保障合同(2025年度)3篇
- 2025年浙江省湖州市湖州職業(yè)技術(shù)學(xué)院招聘5人歷年高頻重點提升(共500題)附帶答案詳解
- ZK24600型平旋盤使用說明書(環(huán)球)
- 城市基礎(chǔ)設(shè)施維修計劃
- 2024山西廣播電視臺招聘專業(yè)技術(shù)崗位編制人員20人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 新材料行業(yè)系列深度報告一:新材料行業(yè)研究框架
- 人教版小學(xué)英語各冊單詞表(帶英標(biāo))
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年六年級上學(xué)期期末考試數(shù)學(xué)試題
- 鄉(xiāng)村治理中正式制度與非正式制度的關(guān)系解析
- 智能護(hù)理:人工智能助力的醫(yī)療創(chuàng)新
- 國家中小學(xué)智慧教育平臺培訓(xùn)專題講座
- 5G+教育5G技術(shù)在智慧校園教育專網(wǎng)系統(tǒng)的應(yīng)用
評論
0/150
提交評論