版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第一章【實例1】使用累加器進(jìn)行簡單加法運算:MOVA,#02H;A2ADD A,#06H;AA+06H【實例2】使用B寄存器進(jìn)行簡單乘法運算:MOVA,#02H; A2MOVB,#06H;B6MUL AB;BAA*B=6*2【實例3】通過設(shè)置RS1,RS0選擇工作寄存器區(qū)1:CLR ;0SETB;1【實例4】使用數(shù)據(jù)指針DPTR訪問外部數(shù)據(jù)數(shù)據(jù)存儲器:MOV DPTR, #data16;DPTRdata16MOVXA, DPTR;A(DPTR)MOVXDPTR,A;(DPTR)A【實例5】使用程序計數(shù)器PC查表:MOV , #data ;dataMOVCA, A+DPTR;PC(PC)+1,A
2、(A)+(PC)【實例6】if語句實例:void main()int a,b,c,min;printf("n please input three number:");scanf("%d%d%d ",&a,&b,&c);if(a<b&&a<c) printf("min=%dn",a );else if(b<a&&b<c) printf("min=%dn",b);else if(c<a&&c<c) printf
3、("min=%dn",c);elseprintf("There at least two numbers are equaln");【實例7】switch-case語句實例:void main()int num;printf("input one number:");scanf("%d",&num);switch(num)case 1:printf("num =%dn",num);break;case 2:printf("num =%dn",num);break;ca
4、se 3:printf("num =%dn",num);break;case 4:printf("num =%dn",num);break; default:printf("The number is out of the rangen",num);【實例8】for語句實例:void main()for(int a=10;n>0;a -)printf("%d",a);【實例9】while語句實例:void main()int i=0;while(i<=10)i+;【實例10】dowhile語句實例:vo
5、id main()int i=0;doi+;while(i<=10);【實例11】語句形式調(diào)用實例:void main()int i=0;while(i<=10)i+;Sum(); /*函數(shù)調(diào)用*/【實例12】表達(dá)式形式調(diào)用實例:void main()int a,b,i=0;while(i<=10)i+;i=4*Sum(a,b); /*函數(shù)調(diào)用*/【實例13】以函數(shù)的參數(shù)形式調(diào)用實例:void main()int a,b,c,i=0;while(i<=10)i+;i=max(c,Sum(a,b); /*函數(shù)調(diào)用*/【實例14】函數(shù)的聲明實例:void main()int
6、 max(int x,int y); /*函數(shù)的聲明*/int a,b,c,i=0;while(i<=10)i+;i=max(c,Sum(a,b); /*函數(shù)調(diào)用*/【實例15】函數(shù)遞歸調(diào)用的簡單實例:void fun()int a=1, result,i;for(i=0;i<10;) i=a+I;result =fun(); /*函數(shù)調(diào)用*/ return result;【實例16】數(shù)組的實例:void main()char num33=,#,,#,#,,#,; /*定義多維數(shù)組*/int i=0,j=0; for(;i<3;i+) for(;j<3;j+) prin
7、tf(“%c”,numij);printf(“/n”);【實例17】指針的實例:void main()int a=3,*p;p=&a;/*將變量a的地址賦值給指針變量p*/printf(“%d,%d”,a,*p); /*輸出二者的數(shù)值進(jìn)行對比*/【實例18】數(shù)組與指針實例:void main()int i=3,num3=1,2,3,*p; p=num;/*將數(shù)組num的地址賦值給指針變量p*/result =max(p,3); /*函數(shù)調(diào)用,計算數(shù)組的最大值*/【實例19】P1口控制直流電動機實例sfr p1=0x90;sbit p10=p10;sbit p11=p11;void ma
8、in ()int i, m;int j=100;int k=20;/ 正快轉(zhuǎn)for (i=0; i<100; i+)P10=1;for (j=0; j<50; j+) m=0; P10=0;for (j=0; j<10; j+) m=0 /正慢轉(zhuǎn)for (i=0; i<100; i+)P10=1;for (j=0; j<10; j+) m=0 p10=0;for (j=0; j<50; j+) m=0/ 負(fù)快轉(zhuǎn)for (i=0; i<100; i+)p11=1;for (j=0; j<50; j+) m=0; p11=0;for (j=0; j&
9、lt;10; j+) m=0; / 負(fù)慢轉(zhuǎn)for (i=0; i<100; i+)p11=1;for (j=0;j<10;j+) m=0; p11=0for (j=0; j<50; j+) m=0; 第二章【實例20】用74LS165實現(xiàn)串口擴展并行輸入口(1)函數(shù)聲明管腳定義/-庫函數(shù)聲明,管腳定義-#include<reg52.h>sbit LOAD=P17;/用P17控制SH/ 管腳(2)串口初始化函數(shù)UART_init()/-/ 函數(shù)名稱:UART_init()/ 功能說明:串口初始化,設(shè)定串口工作在方式0/-void UART_init(void) SC
10、ON=0x10; /設(shè)串行口方式0,允許接收,啟動接收過程 ES=0; /禁止串口中斷(3)數(shù)據(jù)接收函數(shù)PA()/-/ 函數(shù)名稱:PA()/ 輸入?yún)?shù):無/ 輸出參數(shù):返回由并口輸入的數(shù)據(jù)/ 功能說明:接收八位串行數(shù)據(jù)/-unsigned char PA(void) unsigned char PA_data; LOAD=0; /當(dāng)P1.7輸出低電平,74LS165將并行數(shù)據(jù)裝入寄存器/當(dāng)中 LOAD=1; /當(dāng)P1.7輸出高電平,74LS165在時鐘信號下進(jìn)行移位 UART_init(); /74LS165工作在時鐘控制下的串行移位狀態(tài) while(RI=0); /循環(huán)等待 RI=0; PA
11、_data=SBUF; return PA_data; /返回并行輸入的數(shù)據(jù)(1)函數(shù)聲明管腳定義/-庫函數(shù)聲明,管腳定義-#include<reg52.h>sbit a7=ACC7;sbit simuseri_CLK=P16;/用P16模擬串口時鐘sbit simuseri_DATA=P15;/用P15模擬串口數(shù)據(jù)sbit drive74165_LD=P17;/用P17控制SH/ 管腳(2)數(shù)據(jù)輸入函數(shù)in_simuseri()/-/ 函數(shù)名稱:in_simuseri()/ 輸入?yún)?shù):無/ 輸出參數(shù):data_buf/ 功能說明:8位同位移位寄存器,將simuseri_DATA串
12、行輸入的數(shù)據(jù)按從低位到/ 高位/ 保存到data_buf/-unsigned char in_simuseri(void) unsigned char i; unsigned char data_buf; i=8; do ACC=ACC>>1; for(;simuseri_CLK=0;); a7= simuseri_DATA; for(;simuseri_CLK=1;); while(-i!=0); simuseri_CLK=0; data_buf=ACC; return(data_buf);(3)數(shù)據(jù)輸出函數(shù)PAs()/-/ 函數(shù)名稱:PAs()/ 輸入?yún)?shù):無/ 輸出參數(shù):PA
13、s _buf,返回并行輸入74LS165的數(shù)據(jù)/ 功能說明:直接調(diào)用,即可讀取并行輸入74LS165的數(shù)據(jù),不需要考慮74LS165的/ 工作原理/-unsigned char PAs(void) unsigned char PAs_buf; drive74165_LD=0; drive74165_LD=1; PAs_buf= in_simuseri(); return(PAs_buf);【實例21】用74LS164實現(xiàn)串口擴展并行輸出口單片機串口驅(qū)動74LS164的程序主要包括函數(shù)聲明管腳定義部分、串口初始化函數(shù)以及數(shù)據(jù)發(fā)送函數(shù)。(1)函數(shù)聲明管腳定義/-庫函數(shù)聲明,管腳定義-#includ
14、e <reg52.h>sbit CLR=P17;/用P17控制CLR(2)串口初始化函數(shù)UART_init()/-/ 函數(shù)名稱:UART_init()/ 功能說明:串口初始化,設(shè)定串口工作在方式0/-void UART_init(void) SCON =0x00; /沒串行口方式0,允許發(fā)送,啟動發(fā)送過程 ES=0; / 禁止串口中斷(3)數(shù)據(jù)發(fā)送函數(shù)PA_out()/-/ 函數(shù)名稱:PA_out()/ 輸入?yún)?shù):PA_data,需要從74LS164并行口輸出的數(shù)據(jù)/ 輸出參數(shù):無/ 功能說明:發(fā)送八位串行數(shù)據(jù)至并口/-void PA_out(unsigned char PA_da
15、ta) CLR=0; /并口輸出清零 CLR=1; /開始串行移位 UART_init(); /74LS165工作在時鐘控制下的串行移位狀態(tài) while(TI=0); /循環(huán)等待 TI=0; SBUF=PA_data;單片機I/O端口驅(qū)動74LS164主要包括函數(shù)聲明管腳定義部分、數(shù)據(jù)輸入函數(shù)以及數(shù)據(jù)輸出函數(shù)。(1)函數(shù)聲明管腳定義/-庫函數(shù)聲明,管腳定義-#include <reg52.h>sbit simuseri_CLK=P16;/用P16模擬串口時鐘sbit simuseri_DATA=P15;/用P15模擬串口數(shù)據(jù)sbit drive74164_CLR=P17;/用P17
16、控制CLRsbit a0=ACC0;(2)數(shù)據(jù)輸入函數(shù)out_simuseri ()/-/ 函數(shù)名稱:out_simuseri/ 輸入?yún)?shù):data_buf/ 輸出參數(shù):無/ 功能說明:8位同步移位寄存器,將data_buf的數(shù)據(jù)逐位輸出到simuseri_DATA/-void out_simuseri(char data_buf) char i; i=8; ACC=data_buf; do simuseri_CLK=0; simuseri_DATA=a0; simuseri_CLK=1; ACC=ACC>>1; while(-i!=0); simuseri_CLK=0;(3)數(shù)據(jù)
17、輸出函數(shù)PA_out ()/-/ 函數(shù)名稱:PA_out/ 輸入?yún)?shù):Pseri_out,需要輸出的8位數(shù)據(jù)/ 輸出參數(shù):無/ 功能說明:將Pseri_out中的數(shù)據(jù)送到74165并行口A-G輸出/-void PA_out (char Pseri_out ) drive74164_CLR =0; /并口輸出清零 drive74164_CLR =1; /開始串行移位 out_simuseri(Pseri_out);【實例22】P0 I/O擴展并行輸入口I/O口對應(yīng)的地址為:1111 1110 1111 1111 B=FEFFHCPU操作指令為:#define 244_addr xbyte0XFEFFunsigned char I/O_DATA;I/O_DATA=244_addr;【實例23】P0 I/O擴展并行輸出口I/O端口對應(yīng)的地址為:1111 1101 1111 1111 B=FDFFHCPU操作指令為:#define 273_addr xbyte0XFDFFunsigned char I/O_DATA;244_addr =I/O_DATA;【實例24】用8243擴展I/O端口#include<reg52.h>sbit ContrBit0=P10;sbit ContrBit1=P11;sbit ContrBit2=P12
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年餐廳臨時員工雇傭協(xié)議3篇
- 2024年金融服務(wù)合作合同
- 2024年標(biāo)準(zhǔn)農(nóng)藥買賣合同書版B版
- 2024水電站資產(chǎn)轉(zhuǎn)讓與能源供應(yīng)保障協(xié)議3篇
- 2024年藝術(shù)裝修工程協(xié)議3篇
- 2024圖紙設(shè)計合同范本二零二四年度建筑工程版3篇
- 2024年研發(fā)資金借款協(xié)議(適用科研機構(gòu))3篇
- 2024年財產(chǎn)分割協(xié)議:離婚后財產(chǎn)分配指南
- 2024年影視行業(yè)臨時演員聘用合同范本15篇
- 2024樣板間樣板房室內(nèi)空氣治理與凈化合同協(xié)議3篇
- 開發(fā)區(qū)開發(fā)管理模式及發(fā)展要素PPT課件
- 急診科科主任述職報告范文
- 基于MATLAB語音信號降噪處理
- 試訓(xùn)運動員協(xié)議書
- 淮海工學(xué)院數(shù)據(jù)庫原理與技術(shù)復(fù)習(xí)題及答案
- 建龍資料備案正版表格
- 化工原理期末考試練習(xí)題及答案
- 數(shù)值分析課后習(xí)題答案(共81頁)
- 200立方矩形鋼筋混凝土清水池標(biāo)準(zhǔn)圖集(共7頁)
- 網(wǎng)絡(luò)安全運維培訓(xùn)測試題
- 民政部主管社團(tuán)管理辦法
評論
0/150
提交評論