版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1第3章
指令系統(tǒng)與編程技術(shù)23.5程序設(shè)計技術(shù)
本節(jié)通過介紹匯編語言一些典型的程序設(shè)計實例,使各位進一步理解和掌握51系列單片機的指令系統(tǒng),并熟練掌握程序設(shè)計的方法和技巧。3程序結(jié)構(gòu) ORG 0000H LJMP MAIN ORG 0003H LJMP INT0ZD ORG 000BH LJMP T0ZD ORG 0013H LJMP INT1ZD ORG 001BH LJMP T1ZD ORG 0023H LJMP CXKZD
ORG 0100HMAIN: MOVSP,#60H
… ORG 0800HINT0ZD: …… RETI ORG XXXXHT0ZD: …… RETI ORG XXXXHINT1ZD: …… RETI ORG XXXXHT1ZD: …… RETI ORG XXXXHCXKZD: …… RETI END4程序結(jié)構(gòu)舉例 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0ZD ORG 0100HMAIN: MOVSP,#60H MOV DPTR,#0200H MOV R0,#30H MOV R7,#10HLOOP: MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP SJMP$ ORG 0800HINT0ZD: CPLP1.1 RETI END
5例:編寫中斷服務(wù)程序,進入中斷服務(wù)程序時,需要把程序狀態(tài)寄存器PSW、累加器A、數(shù)據(jù)指針DPTR進棧保護,中斷返回之前恢復。中斷服務(wù)程序結(jié)構(gòu)6
解:中斷服務(wù)程序如下:
PUSHPSW PUSHACC PUSHDPL PUSHDPH
…
;中斷處理程序
POPDPH POPDPL POPACC POPPSW RETI ;中斷返回7例:在片外RAM中,從首地址為2000H的存儲區(qū)中一個數(shù)據(jù)塊,該數(shù)據(jù)塊中不包含0元素。試將該數(shù)據(jù)塊傳送到片內(nèi)RAM首地址為30H的存儲區(qū)中,若遇到0結(jié)束傳送。編程提示外部RAM向內(nèi)部RAM的數(shù)據(jù)轉(zhuǎn)送一定要經(jīng)過累加器A,利用判零條件轉(zhuǎn)移可以判斷是否要繼續(xù)傳送數(shù)據(jù)。8設(shè)置數(shù)據(jù)指針A=0?開始結(jié)束讀片外數(shù)據(jù)到AA送片內(nèi)修改指針YN9解:參考程序:
MOVDPTR,#2000H
MOVR1,#30H LOOP:MOVXA,@DPTR JZEXIT
MOV@R1,A
INCDPTR
INCR1 SJMPLOOP
EXIT:…設(shè)置數(shù)據(jù)指針A=0?開始結(jié)束讀片外數(shù)據(jù)到AA送片內(nèi)修改指針YN10例:在圖3.14中,P1口控制了8個發(fā)光二極管L7~L0。試編程序,使L7~L0按二進制計數(shù)規(guī)律從1~128增1計數(shù),某位為1,對應(yīng)的發(fā)光二極管發(fā)亮,否則熄滅,計到128時結(jié)束。請您編程110→AA=128?開始結(jié)束A+1→AA→P1YN調(diào)延時子程序流程圖12解:參考程序如下:
ORG0100H CLRANEXT:INCA MOVP1,A LCALLDELAY2S CJNEA,#128,NEXT
… END0→AA=128?開始結(jié)束A+1→AA→P1YN調(diào)延時子程序13例3.5.4雙分支程序設(shè)計。片內(nèi)RAM的20H單元和30H單元各存放了一個8位無符號數(shù),請比較這兩個數(shù)的大小,利用圖3.19(a)中的發(fā)光二極管顯示比較結(jié)果:若(20H)≥(30H),則P1.0管腳連接的L0發(fā)光;若(20H)<(30H),則P1.1管腳連接的L1發(fā)光。14解:比較兩個無符號數(shù)常用的方法是將兩個數(shù)相減,然后判斷有否借位Cy。若Cy=0,無借位,(20H)≥(30H);若Cy=1,有借位,(20H)<(30H)。程序的流程圖如圖3.18(b)所示。源程序如下:
MOV A,20H CLR C ;Cy=0 SUBBA,30H ;帶借位減法
JCL1 ;若Cy=1,轉(zhuǎn)移到
L1 SETBP1.0 ;若Cy=0,(20H)≥(30H),點亮L0 SJMPDOWN ;直接跳轉(zhuǎn)到結(jié)束等待L1: SETBP1.1 ;(20H)<(30H),點亮L1DOWN: SJMP $ END15例3.5.8用圖3.20中的K1、K0控制8個發(fā)光二極管的亮滅模式。假設(shè)8個發(fā)光二極管的顯示方式如下:
P3.5 P3.4 顯示方式
0 0 全亮
0 1 間隔發(fā)亮
1 0 L7~L4滅,L3~L0亮
1 1 L7~L4亮,L3~L0滅16課堂練習17解:參考程序如下:
MOV P3,#00110000B ;使P3口鎖存器相應(yīng)位置位
MOV A,P3 ;讀K1、K0信號
ANL A,#00110000B ;屏蔽無關(guān)位
SWAP A ;將相應(yīng)位移位到低位
RL A ;左環(huán)移一位,(A)←(A)×2 MOV DPTR,#TABLE ;轉(zhuǎn)移指令表的基地址送數(shù)據(jù)指針DPTR JMP @A+DPTR ;散轉(zhuǎn)指令TABLE: AJMP ONE ;轉(zhuǎn)移指令表
AJMP TWO AJMP THREE AJMP FOURONE: MOVP1,#0FFH ;全亮
SJMPDOWNTWO:MOVP1,#55H ;間隔發(fā)亮
SJMPDOWNTHREE:MOVP1,#0FH ;L7~L4滅,L3~L0亮
SJMP DOWNFOUR: MOV P1,#0F0H ;L7~L4亮,L3~L0滅
SJMPDOWNDOWN:…
18例:三重循環(huán)程序設(shè)計。設(shè)單片機時鐘晶振頻率為fosc=6MHz,計算下列延時子程序的延時時間。DELAY: MOVR7,#100 ;1周期指令DEL0: MOV R6,#10 ;1周期指令DEL1: MOV R5,#125 ;1周期指令DEL2: NOP ;1周期指令
NOP ;1周期指令
DJNZR5,DEL2 ;2周期指令
DJNZR6,DEL1 ;2周期指令
DJNZR7,DEL0 ;2周期指令
RET ;2周期指令19解:內(nèi)循環(huán)次數(shù)為125次,延時時間約為1ms,第二層循環(huán)延時達到10ms(循環(huán)次數(shù)為10),第三層循環(huán)延時到1S(循環(huán)次數(shù)為100),所以該子程序的延時時間約為1S。20;TEST2.1實驗二.11.將BCD碼整數(shù)0~255存入片內(nèi)RAM的20H、21H、22H中,然后轉(zhuǎn)換為二進制整數(shù)00H~FFH,保存到寄存器R4中。
ORG0000H LJMPMAIN ORG0100HMAIN: MOVR0,#20H ;BCD存放高位地址
MOVR7,#03H ;BCD碼0--255,最多3位
CLRA MOVR4,ALP1: MOVB,#10 MULAB ;乘10 ADDA,@R0 ;加下一位的值
INCR0 ;指向下一單元
MOVR4,A ;結(jié)果存入R4 DJNZR7,LP1 ;轉(zhuǎn)換未結(jié)束則繼續(xù)
SJMP$ ;設(shè)置斷點,觀察實驗結(jié)果R4中的內(nèi)容
END21
在內(nèi)存單元20H、21H存放二個非壓縮的BCD碼,將其轉(zhuǎn)換為壓縮的BCD碼并存于內(nèi)存單元22H。;test2.2實驗二.2 ORG0000H LJMPMAIN
ORG0100HMAIN: MOVSP,#60H MOVA,21H ANLA,#0FH MOVR2,A MOVA,20H ANLA,#0FH SWAPA ORLA,R2 MOV22H,A
SJMP$ END參考程序22在內(nèi)存單元20H、21H、22H存放數(shù)字0-9的ASCII碼,將其轉(zhuǎn)換成對應(yīng)的非壓縮的BCD碼并存于原內(nèi)存單元。;tes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 調(diào)味品包裝材料與環(huán)保要求考核試卷
- 煤氣化設(shè)備運行中的故障排除與修復考核試卷
- 郵政通信設(shè)備抗干擾技術(shù)考核試卷
- 二零二五年度KTV員工福利與薪酬體系合同3篇
- 現(xiàn)代導航課程設(shè)計照片
- 《熱電池用FeS2復合薄膜正極的制備研究》
- 《共享出行對城市交通擁堵的緩解作用研究》
- 二零二五年度二手吊車租賃合同范本大全及分析2篇
- 《去勢大鼠BMSCs增殖分化功能與骨組織微結(jié)構(gòu)變化的相關(guān)研究》
- 2025版建筑公司技術(shù)員崗位培訓與發(fā)展勞動合同3篇
- 新入職員工年終工作總結(jié)課件
- 靜脈導管維護
- 年度先進員工選票標準格式
- 中國移動集團客戶經(jīng)理的工作總結(jié)
- 中醫(yī)護理質(zhì)量指標
- 患者告知及知情同意簽字制度
- 公司各中心事業(yè)部獨立核算運營實施方案
- 幼兒園大班綜合《我們和手機》課件
- 中小企業(yè)內(nèi)部控制與風險管理(第二版)項目五:銷售業(yè)務(wù)內(nèi)部控制與風險管理
- 中鐵二局工程項目全員安全教育培訓考試試題(普工)附答案
- 08坦白檢舉教育
評論
0/150
提交評論