![微機(jī)原理及應(yīng)用07C語(yǔ)言II2015_第1頁(yè)](http://file4.renrendoc.com/view/ed304a4b43442fd62812a52e36d11ebd/ed304a4b43442fd62812a52e36d11ebd1.gif)
![微機(jī)原理及應(yīng)用07C語(yǔ)言II2015_第2頁(yè)](http://file4.renrendoc.com/view/ed304a4b43442fd62812a52e36d11ebd/ed304a4b43442fd62812a52e36d11ebd2.gif)
![微機(jī)原理及應(yīng)用07C語(yǔ)言II2015_第3頁(yè)](http://file4.renrendoc.com/view/ed304a4b43442fd62812a52e36d11ebd/ed304a4b43442fd62812a52e36d11ebd3.gif)
![微機(jī)原理及應(yīng)用07C語(yǔ)言II2015_第4頁(yè)](http://file4.renrendoc.com/view/ed304a4b43442fd62812a52e36d11ebd/ed304a4b43442fd62812a52e36d11ebd4.gif)
![微機(jī)原理及應(yīng)用07C語(yǔ)言II2015_第5頁(yè)](http://file4.renrendoc.com/view/ed304a4b43442fd62812a52e36d11ebd/ed304a4b43442fd62812a52e36d11ebd5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七講51單片機(jī)C語(yǔ)言程序設(shè)計(jì)(教材4.4~4.5節(jié))1微機(jī)原理及應(yīng)用
PrincipleandApplicationsofMicro-Computers教學(xué)目的:函數(shù)和模塊化程序設(shè)計(jì)要求: 掌握程序設(shè)計(jì)的模塊化思路和分層設(shè)計(jì)思路;掌握如何使用高級(jí)語(yǔ)言訪問(wèn)MCU的片上資源難點(diǎn): 掌握程序設(shè)計(jì)的模塊化思路和分層設(shè)計(jì)思路例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:例2,查表和子程序(包含輸入和輸出參數(shù))調(diào)用包含的主要指令:MOVC,LCALL包含的主要C語(yǔ)言:例3,BCD碼運(yùn)算程序包含的主要指令:ADD,ADDC,DA例4,搜索最小(大)數(shù)程序(邏輯判斷)包含的主要指令:JNC,XCH例5,I/O端口控制程序設(shè)計(jì)(位操作)包含的主要指令:JB,JNB,CPL內(nèi)容2023/2/33匯編語(yǔ)言程序設(shè)計(jì)示例1功能
計(jì)算n個(gè)無(wú)符號(hào)整型數(shù)之和要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:數(shù)據(jù)個(gè)數(shù)存放在R4中,數(shù)據(jù)的起始地址在R0中輸出:和存放在R4(高8位)和R5(低8位)中2023/2/34匯編語(yǔ)言程序設(shè)計(jì)示例1的源碼Sum:
PUSHAcc
;保存A的內(nèi)容在堆棧區(qū)
PUSHB
;保存B的內(nèi)容在堆棧區(qū)
PUSHPSW
;保存PSW的內(nèi)容在堆棧區(qū) MOVA,#00H;首先將和的低8位清零 MOVB,#00H;首先將和的高8位清零 CLRC;將進(jìn)位位清零 MOVR5,#00H;R5寄存器清零Sum1: ADDCA,@R0
;將一個(gè)字節(jié)的數(shù)據(jù)加到和的低字節(jié)中 MOVR5,A;保存和的低字節(jié)到R5中 CLRA;累加器A清零 ADDCA,B;將進(jìn)位位加到和的高8位中MOVB,A;將和的高8位仍保存在B中 MOVA,R5;將臨時(shí)保存在R5中的和的低8位傳送到A中 INCR0;數(shù)據(jù)緩沖區(qū)指針加1,指向下一個(gè)字節(jié)
DJNZR4,Sum1
;累加是否繼續(xù)?
;累加完成,和存放在B(高8位)和A(低8位)中 MOVR4,B;將和的高8位傳送到R4中
POPPSW
;從堆棧區(qū)恢復(fù)PSW的內(nèi)容
POPB
;從堆棧區(qū)恢復(fù)B的內(nèi)容
POPAcc
;從堆棧區(qū)恢復(fù)A的內(nèi)容
RET#definexDataPt((unsighnedchar*)0x00 )#definepR4=(char*)0x03;unsignedintDataSum(void){unsignedinti,result;CY=0;for(i=0;i<*pR4;i++)result+=*(xDataPt+i);*pR4=result;}2023/2/35匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)1功能
將片外擴(kuò)展的數(shù)據(jù)存儲(chǔ)器中的20個(gè)無(wú)符號(hào)整型數(shù)轉(zhuǎn)移到片內(nèi)數(shù)據(jù)存儲(chǔ)器中要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:保存原數(shù)據(jù)的起始地址為8000H輸出:片內(nèi)數(shù)據(jù)存儲(chǔ)器的起始地址為80H2023/2/36匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)1續(xù)MOVR6,#20;LOOP:MOVDPTR,#8000H;MOVR0,#80H;MOVXA,@DPTR;MOV@R0,A;INCDPTRINCR0DJNZR6,LOOPRET
voidDataMove(void){unsignedinti,result;charidata*DTo=(char*)0x80;charxdata*DFrom;*DFrom=(char*)0x8000;for(i=0;i<20;i++)*(DTo+i)=*(DFrom+i);}2023/2/37匯編語(yǔ)言程序設(shè)計(jì)示例2功能
將一組6個(gè)十六進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的ASCII串(該字符串由12個(gè)字符順序組成)要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:保存原數(shù)據(jù)的起始地址為30H輸出:保存ASCII串的起始地址為50HASCII_Table: DB‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’ DB‘8’,‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’2023/2/38匯編語(yǔ)言程序設(shè)計(jì)示例2的源碼(1)用查表方法,編寫一個(gè)子程序,實(shí)現(xiàn)單字節(jié)十六進(jìn)制數(shù)到ASCII字符的轉(zhuǎn)換
ANLA,#0FH MOVCA,@A+DPTR POPDPH POPDPL POPPSW RETASCII_Table:DB‘0’,‘1’,’2’,’3’,’4’,’5’,’6’,’7’,DB‘8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’THex2ASCII:;見教材p.71 PUSHPSW PUSHDPL PUSHDPH MOVDPTR,#ASCII_Table MOVB,A SWAPA ANLA,#0FH MOVCA,@A+DPTR XCHA,B請(qǐng)問(wèn):輸入?yún)?shù)是?輸出參數(shù)是?2023/2/39匯編語(yǔ)言程序設(shè)計(jì)示例2的源碼(2)編寫一個(gè)子程序,調(diào)用前一個(gè)子程序,將6個(gè)字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換成一個(gè)字符串 INCR1 MOV@R1,A INCR1 INCR0
DJNZR7,ToStr POPB POPAcc
RETToString: PUSHAcc PUSHB MOVR0,#30H MOVR1,#50H MOVR7,#6ToStr: MOVA,@R0 LCALLTHex2ASCII
MOV@R1,B2023/2/310C程序設(shè)計(jì)示例2的源碼(2)編寫一個(gè)子程序,調(diào)用前一個(gè)子程序,將6個(gè)字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換成一個(gè)字符串voidmain(){
unsignedinti,result;
charidata*DTo=(char*)0x50;charidata*Dfrom=(char*)0x30;inti;
for(i=0;1<6,i++){Hex2Str(Dfrom,DTo);Dfrom++;DTo++;}}
codeunsignedcharASCii[]={’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’}voidHex2Str(char*Src,char*Dest)
{chartemp=*Src;*Dest=ASCii[(temp>>4)];Dest++;*Dest=ASCii[(temp&0x0F)];
}
課內(nèi)練習(xí)2:編寫程序?qū)個(gè)字節(jié)的十六進(jìn)制數(shù)要轉(zhuǎn)換為一個(gè)字符串.(用示例1的參數(shù))對(duì)應(yīng)MOVC2023/2/311匯編語(yǔ)言程序設(shè)計(jì)示例3功能
計(jì)算3個(gè)字節(jié)型BCD碼之和,并表示成BCD碼要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:數(shù)據(jù)存放在R4,R5和R6中輸出:和存放在R2(高8位)和R3(低8位)中2023/2/312匯編語(yǔ)言程序設(shè)計(jì)示例3的源碼BCDSum:
PUSHAcc
PUSHPSW MOV R2,#00H MOVA,R4 ADDA,R5 DAA MOVR3,A CLRA ADDCA,R2movR2,A MOVA,R3 ADDA,R6 DAA MOVR3,A CLRA ADDCA,R2 DAA MOV R2,A
POPPSW
POPAcc
RETR5R4+AC調(diào)整R3R2R6+ACR3調(diào)整R2C+R22023/2/313匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)3功能
將一個(gè)無(wú)符號(hào)整型十六進(jìn)制數(shù)轉(zhuǎn)換成BCD碼要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:原數(shù)據(jù)保存在A中輸出:BCD碼保存在R3(高字節(jié))和R4(低字節(jié))中2023/2/314匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)3續(xù)MOV
B,#100 DIV
AB MOV
R3,A ;savehundredbit MOV
A,B MOV
B,#10 DIV
AB SWAP
A ORL
A,B MOV
R4,A RETvoidHex2BCD(charHEX,charBCD){BCD=(HEX/10*16)+(HEX%10);}main(){……}2023/2/315匯編語(yǔ)言程序設(shè)計(jì)示例4功能
某系統(tǒng)的片外RAM從0020H~0030H地址單元存放著一批無(wú)符號(hào)整型數(shù),請(qǐng)查找其中的最小數(shù)是多少?位于哪個(gè)地址單元?要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:原數(shù)據(jù)存放在片外RAM的0020~0030H中輸出:最小數(shù)存放在A中,其地址放在R2(高8位)和R3(低8位)中2023/2/316匯編語(yǔ)言程序設(shè)計(jì)示例4的源碼Sort: MOVR7,#16 MOVDPTR,#0020H MOVXA,@DPTR MOVB,A INCDPTRSort1: MOVXA,@DPTR CLRC SUBBA,B JNCSort_Skip MOVXA,@DPTR XCHA,B MOVX@DPTR,A MOVR3,DPLSort_Skip: INCDPTR DJNZR7,Sort1 RET
課內(nèi)練習(xí)4:編寫程序確定這一組數(shù)據(jù)的最大數(shù)及其存儲(chǔ)單元地址.2023/2/317匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)5功能
有16個(gè)字節(jié)的數(shù)據(jù)分別存放在2000H~200FH單元,請(qǐng)編寫程序統(tǒng)計(jì)其中有多少個(gè)數(shù)據(jù)是大于80H的,將統(tǒng)計(jì)結(jié)果保存在片內(nèi)RAM的30H單元。要求寫成子程序形式子程序的輸入和輸出參數(shù)輸入:原數(shù)據(jù)存放在片外RAM的2000H~200FH中輸出:統(tǒng)計(jì)結(jié)果保存在片內(nèi)RAM的30H單元2023/2/318匯編語(yǔ)言程序設(shè)計(jì)課內(nèi)練習(xí)5續(xù)
MOV R4,#0 MOV R2,#16 MOV DPTR,#2000Hex1_loop: MOVX
A,@DPTR SUBB A,#80H ; JC ex1_skip INC R4ex1_skip: INC DPTR DJNZ
R2,ex1_loop MOV A,R4 MOV 30H,A RET內(nèi)容例1,循環(huán)程序設(shè)計(jì)包含的主要指令:DJNZ包含的主要C語(yǔ)言:例2,查表和子程序(包含輸入和輸出參數(shù))調(diào)用包含的主要指令:MOVC,LCALL包含的主要C語(yǔ)言:例3,BCD碼運(yùn)算程序包含的主要指令:ADD,ADDC,DA例4,搜索最小(大)數(shù)程序(邏輯判斷)包含的主要指令:JNC,XCH例5,I/O端口控制程序設(shè)計(jì)(位操作)包含的主要指令:JB,JNB,CPL2023/2/320匯編語(yǔ)言程序設(shè)計(jì)示例5功能
按圖中電路,控制LED:
按下Key時(shí),LED常亮; Key斷開時(shí),LED亮0.1s,滅0.9s要求寫成主程序形式P1.0+5V12MHzKeyP3.1XTAL1XTAL2按下KeyKey斷開討論實(shí)現(xiàn)思路.2023/2/321匯編語(yǔ)言程序設(shè)計(jì)示例5的流程啟動(dòng)按Key?YesNoLED亮,Flag=‘0’OnOff=‘0’,Cnt=00HFlag=‘1’OnOff=‘0’?YesNoCnt>9?NoYesCnt=Cnt+1OnOff=‘1’,Cnt=00HP1.0=‘0’Cnt>90?NoYesOnOff=‘0’,Cnt=00HP1.0=‘1’ANDFlag延時(shí)10ms啟動(dòng)和初始化任務(wù)2(識(shí)別Key狀態(tài))任務(wù)3(控制LED狀態(tài))任務(wù)1(延時(shí)10ms)2023/2/322匯編語(yǔ)言程序設(shè)計(jì)示例5的源碼 FlagBIT00H OnOffBIT01H CntDATA30HORG0000HLJMPmain_entry;無(wú)中斷程序ORG0100Hmain_entry: CLROnOff MOVCnt,#00Hmain_loop: LCALLTask1 LCALLTask2 LCALLTask3 LJMPmain_loopORG0200HTask1:;延時(shí)10ms MOVR7,#97T11:MOVR6,#50T12:DJNZR6,T12 DJNZR7,T11 RETTask2:;識(shí)別Key狀態(tài) JNBP3.1,T2Skip;按下
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年聲學(xué)懸浮物監(jiān)測(cè)儀合作協(xié)議書
- 2025年基礎(chǔ)機(jī)械:液壓件合作協(xié)議書
- 2025年沼氣集中供氣系統(tǒng)合作協(xié)議書
- 2025年產(chǎn)品特許經(jīng)營(yíng)合同常用版(4篇)
- 2025年二手房東房屋租賃合同標(biāo)準(zhǔn)版本(4篇)
- 2025年九年級(jí)音樂教師工作總結(jié)第二學(xué)期(二篇)
- 2025年買賣房產(chǎn)合同標(biāo)準(zhǔn)版本(2篇)
- 2025年個(gè)人房屋租賃合同協(xié)議參考樣本(三篇)
- 2025年臨時(shí)勞動(dòng)協(xié)議標(biāo)準(zhǔn)范文(2篇)
- 2025年企業(yè)勞動(dòng)員工勞動(dòng)合同模板(2篇)
- 2025年度高端商務(wù)車輛聘用司機(jī)勞動(dòng)合同模板(專業(yè)版)4篇
- 2025年福建福州市倉(cāng)山區(qū)國(guó)有投資發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年人教版新教材數(shù)學(xué)一年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- GB/T 45107-2024表土剝離及其再利用技術(shù)要求
- 2025長(zhǎng)江航道工程局招聘101人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會(huì)招聘社區(qū)工作者1598人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年國(guó)新國(guó)際投資有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年八省聯(lián)考四川高考生物試卷真題答案詳解(精校打印)
- 《供電營(yíng)業(yè)規(guī)則》
- 執(zhí)行總經(jīng)理崗位職責(zé)
- NS3000計(jì)算機(jī)監(jiān)控系統(tǒng)使用手冊(cè)
評(píng)論
0/150
提交評(píng)論