版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)程序設(shè)計(jì)1.將0~9這十個(gè)數(shù)循環(huán)送P1口七段LED上顯示。2.硬件電路與工作原理讓學(xué)生根據(jù)任務(wù)分析硬件要求,畫出具體電路,并在實(shí)驗(yàn)開發(fā)板上接線3.程序設(shè)計(jì)(給出控制程序)
8051
START:ORG
0100H
MAIN:MOV
R0,#00H
MOV
DPTR,#TABLE
DISP:MOV
A,R0
MOVC
A,@A+ADPTR
MOV
P1,A
ACALL
DELAY
INC
R0
CJNE
R0,#0AH,DISP
AJMP
MAIN
DELAY:MOV
R1,#0FFH
LOOP0:MOV
R2,#0FFH
LOOP1:DJNZ
R2,LOOP1
DJNZ
R1,LOOP0
RET
TABLE:DB
0C0H,0F9H,
DB
0A4H,0B0H
DB
99H,
92H
DB
82H,
0F8H
DB
80H,
90H
END
LED顯示電路控制程序單片機(jī)匯編語言程序設(shè)計(jì)的基本步驟如下:(1)題意分析。熟悉并了解匯編語言指令的基本格式和主要特點(diǎn),明確被控對(duì)象對(duì)軟件的要求,設(shè)計(jì)出算法等。(2)畫出程序流程圖。編寫較復(fù)雜的程序,畫出程序流程圖是十分必要的。程序流程圖也稱為程序框圖,是根據(jù)控制流程設(shè)計(jì)的,它可以使程序清晰,結(jié)構(gòu)合理,便于調(diào)試。(3)分配內(nèi)存工作區(qū)及有關(guān)端口地址。分配內(nèi)存工作區(qū),要根據(jù)程序區(qū)、數(shù)據(jù)區(qū)、暫存區(qū)、堆棧區(qū)等預(yù)計(jì)所占空間大小,對(duì)片內(nèi)外存儲(chǔ)區(qū)進(jìn)行合理分配并確定每個(gè)區(qū)域的首地址,便于編程使用。§3-1程序設(shè)計(jì)簡(jiǎn)介(4)編制匯編源程序。(5)仿真、調(diào)試程序。(6)固化程序。程序編寫做到:占用存儲(chǔ)空間少;運(yùn)行時(shí)間短;程序的編制、調(diào)試及排錯(cuò)所需時(shí)間短;結(jié)構(gòu)清晰,易讀、易于移植。按結(jié)構(gòu)化程序設(shè)計(jì)思想,任何復(fù)雜程序都可由順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等構(gòu)成。
語句3語句2順序結(jié)構(gòu)
入口語句1出口分支結(jié)構(gòu)入口條件滿足否?分支1出口YN分支2循環(huán)結(jié)構(gòu)入口處理修改條件條件滿足否?Y出口N
簡(jiǎn)單程序也就是順序程序,它是最簡(jiǎn)單、最基本的程序結(jié)構(gòu),其特點(diǎn)是按指令的排列順序一條條地執(zhí)行,直到全部指令執(zhí)行完畢為止。不管多么復(fù)雜的程序,總是由若干順序程序段所組成的。本節(jié)通過實(shí)例介紹簡(jiǎn)單程序的設(shè)計(jì)方法。例3.14字節(jié)(雙字)加法。將內(nèi)部RAM30H開始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)和內(nèi)部RAM40H單元開始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)相加,結(jié)果存放到40H開始的單元中?!?-2簡(jiǎn)單順序程序的設(shè)計(jì)(1)題意分析。
題目的要求如圖3.1所示。圖3.1例3.1題意分析示意圖
ORG0000HLJMPMAINMAIN:ORG0080H MOV A,30H ADD A,40H MOV 40H,A ;最低字節(jié)加法并送結(jié)果
MOV A,31H ADDC A,41H MOV 41H,A ;第二字節(jié)加法并送結(jié)果(2)匯編語言源程序。按照雙字節(jié)加法的思路,實(shí)現(xiàn)4字節(jié)加法的源程序如下:
MOV A,32H ADDCA,42H MOV 42H,A ;第三字節(jié)加法并送結(jié)果
MOV A,33H ADDC A,43H MOV 43H,A ;第四字節(jié)加法并送結(jié)果,進(jìn)位
SJMP$;位在CY中
END例3.2、設(shè)在外RAM的60H單元存有1個(gè)字節(jié)代碼,要求將其分解成兩個(gè)4位字段,高4位存入原單元的低4位,其低4位存入61H單元的低4位,且要求這兩個(gè)單元的高4位均為0,試編制完整程序。
分析:####¥¥¥¥0000####0000¥¥¥¥ORG0000HLJMPMAINORG0030HMAIN:MOVR0,#30HMOVR1,#40HMOVR7,#08HLOOP:MOVA,@R0MOV@R1,AINCR0INCR1DJNZR7,LOOPSJMP$解:核心指令A(yù)NLORG1000HMODE:MOVR0,#60HMOVXA,@R0MOVB,AANLA,#0F0HSWAPAMOVX@R0,AMOVA,BANLA,#0FHINCR0MOVX@R0,ASJMP$END一、分支結(jié)構(gòu)與分支程序設(shè)計(jì)結(jié)構(gòu):根據(jù)不同的條件,進(jìn)行相應(yīng)的處理。通常用條件轉(zhuǎn)移指令形成簡(jiǎn)單分支結(jié)構(gòu)。如:判(A)=Z或NZ,轉(zhuǎn)移判(CY)=1或0,轉(zhuǎn)移判(bit)=1或0,轉(zhuǎn)移
CJNE比較不相等轉(zhuǎn)移
§3-3分支程序的設(shè)計(jì)
例3.3、設(shè)a存放在累加器A中,b存放在寄存器B中,要求按下式計(jì)算Y值,并將結(jié)果Y存于累加器A 中,試編寫程序。
a-b(a≥0)Y=a+b(a<0)
解:本題關(guān)鍵是判a是正數(shù),還是負(fù)數(shù);由ACC.7便知。
ORG1000HBR:JBACC.7,MINUSCLRCSUBBA,BSJMPDONEMINUS:ADDA,BDONE:SJMP$END
分支程序?qū)嵗?.兩分支程序設(shè)計(jì)例3.4兩個(gè)無符號(hào)數(shù)比較(兩分支)。內(nèi)部RAM的20H單元和30H單元各存放了一個(gè)8位無符號(hào)數(shù),請(qǐng)比較這兩個(gè)數(shù)的大小,比較結(jié)果顯示在實(shí)驗(yàn)板上:若(20H)≥(30H),則P1.0管腳連接的LED發(fā)光;若(20H)<(30H),則P1.1管腳連接的LED發(fā)光。如何讓LED發(fā)光?給該引腳送低電平即可。(1)題意分析。
本例是典型的分支程序,根據(jù)兩個(gè)無符號(hào)數(shù)的比較結(jié)果(判斷條件),程序可以選擇兩個(gè)流向之中的某一個(gè),分別點(diǎn)亮相應(yīng)的LED。
比較兩個(gè)無符號(hào)數(shù)常用的方法是將兩個(gè)數(shù)相減,然后判斷有否借位CY。若CY=0,無借位,則X≥Y;若CY=1,有借位,則X<Y。程序的流程圖如圖3.2所示。
圖3.2兩數(shù)比較流程圖(2)匯編語言源程序。
XDATA20H;數(shù)據(jù)地址賦值偽指令DATAYDATA30HORG 0080HMOV A,X ;(X)→ACLR C ;CY=0
SUBB A,Y ;帶借位減法,A-(Y)-CY→A
JCL1 ;CY=1,轉(zhuǎn)移到
L1
CLR P1.0 ;CY=0,(20H)≥(30H),點(diǎn)亮P1.0連接的LEDSJMP FINISH;直接跳轉(zhuǎn)到結(jié)束等待
L1:CLRP1.1 ;(20H)<(30H),點(diǎn)亮P1.1連接的LEDFINISH:SJMP$例3.5:內(nèi)部RAM30H和31H中分別存有2個(gè)8位無符號(hào)數(shù),編程找出其中的大數(shù)存入內(nèi)部32H單元中。
ORG 0040HMOV A,30H CLR C SUBB A,31H JCL1;CY=1,轉(zhuǎn)移到
L1ADDA,31H MOV32H,ASJMP FINISH;直接跳轉(zhuǎn)到結(jié)束等待
L1:MOVA,31HMOV32H,A FINISH:SJMP$ (3)執(zhí)行結(jié)果。執(zhí)行該程序之前,利用單片機(jī)開發(fā)系統(tǒng)先往內(nèi)部RAM的20H和30H單元存放兩個(gè)無符號(hào)數(shù)(可以任意設(shè)定),執(zhí)行后觀察點(diǎn)亮的LED是否和存放的數(shù)據(jù)大小相一致??梢酝ㄟ^偉福仿真軟件看到程序執(zhí)行的結(jié)果。必須注意:要有初始值。循環(huán)結(jié)構(gòu)不但使程序簡(jiǎn)練,而且大大節(jié)省存儲(chǔ)空間。循環(huán)程序包含四部分:1、初始化部分(循環(huán)計(jì)數(shù)器、地址指針初始化)2、循環(huán)處理部分(主體,需要重復(fù)執(zhí)行的部分)3、循環(huán)控制部分(修改地址指針、修改變量、檢測(cè)循環(huán)結(jié)束條件)4、循環(huán)結(jié)束部分(對(duì)結(jié)果分析、處理,存放結(jié)果)§3-4循環(huán)程序的設(shè)計(jì)先處理,后判斷:
開始初始化部分處理部分修改變量循環(huán)結(jié)束?結(jié)束部分結(jié)束YN先判斷,后處理:
開始初始化部分修改變量循環(huán)結(jié)束?Y結(jié)束部分結(jié)束N處理部分循環(huán)有:?jiǎn)窝h(huán)、多重循環(huán)。循環(huán)次數(shù)已知,可用計(jì)數(shù)器控制循環(huán)次數(shù);循環(huán)次數(shù)未知,按問題條件控制循環(huán)是否結(jié)束。
1、單循環(huán)程序(1)循環(huán)次數(shù)是已知的程序例3.6、已知片內(nèi)RAM的40H單元開始依次存放10個(gè)8位無符號(hào)二進(jìn)制數(shù),要求找出其中的最大數(shù)存入3FH單元中,試編程。解:先將第一個(gè)數(shù)和第二個(gè)數(shù)比較,大者送入累加器A中,然后拿累加器中A的數(shù)與第三個(gè)數(shù)比較,依次比較下去。最后累加器A中剩下的是最大數(shù)。比較大小用減法指令,注意恢復(fù)累加器A中的原來的大數(shù)。
START:MOVR2,#09H;循環(huán)計(jì)數(shù)初值(循環(huán)次數(shù)已知)
MOVR0,#40H;地址指針初值
MOVA,@R0;取數(shù)
LOOP:INCR0;調(diào)整地址指針CLRCSUBBA,@R0JCNEXT1;CY=1(后者大)轉(zhuǎn)NEXT1ADDA,@R0;恢復(fù)A中的原來大數(shù)SJMPNEXT2NEXT1:MOVA,@R0;大數(shù)送給ANEXT2:DJNZR2,LOOP;控制循環(huán)次數(shù)MOV3FH,ASJMP$P101頁延時(shí)程序例子延時(shí)50毫秒的子程序。DEL:MOVR7,#200DEL1:MOVR6,#123NOPDEL2:DJNZR6,DEL2;200×123×2us49.2msDJNZR7,DEL1RETDEALY:MOVR7,#20DEL3:MOVR6,#123DEL2:MOVR5,#200NOPDEL1:DJNZR5,DEL1DJNZR6,DEL2DJNZR7,DEL3RET約為延時(shí)1秒子程序START: MOV R2,#08H ;設(shè)置循環(huán)次數(shù)
MOV A,#0FEH ;從P1.0→P1.7使LED逐 ;個(gè)亮過去NEXT:MOV P1,A ;點(diǎn)亮LED LCALLDEALY RL A
DJNZ R2,NEXT ;次數(shù)減1,不為零,繼續(xù) ;點(diǎn)亮下一個(gè)LED SJMP STARTDEALY:MOVR7,#20H……
P1口循環(huán)點(diǎn)亮發(fā)光二極管程序§3-5常用子程序介紹步驟:1、確定子程序名稱,即入口標(biāo)號(hào)。2、確定子程序的輸入/輸出參數(shù)。3、確定所用的寄存器和存儲(chǔ)單元,以便現(xiàn)場(chǎng)保護(hù)。斷點(diǎn)保護(hù)由指令自動(dòng)完成。4、確定子程序的算法,編寫源程序。例3.7:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八下歷史第三課的教育課件
- 5年中考3年模擬試卷初中道德與法治八年級(jí)下冊(cè)02期末素養(yǎng)綜合測(cè)試
- 不定時(shí)工作制實(shí)施方案范本(四篇)
- 四年級(jí)下冊(cè)音樂教案
- 古韻悠長(zhǎng) 第一課《雕梁畫棟》課件 2024-2025學(xué)年人美版(2024)初中美術(shù)七年級(jí)上冊(cè)
- (統(tǒng)考版)2023版高考化學(xué)一輪復(fù)習(xí)課時(shí)作業(yè)10碳、硅及其化合物
- 工藝品交易橋梁
- 互聯(lián)網(wǎng)數(shù)據(jù)中心運(yùn)輸協(xié)議
- 塑料原料購銷運(yùn)輸合同范本
- 辦公室改造追加協(xié)議模板
- 2025屆【九省聯(lián)考】全國高三10月聯(lián)考數(shù)學(xué)試題
- 人教版八年級(jí)上冊(cè)數(shù)學(xué)期中考試試題含答案詳解
- 2023--2024學(xué)年蘇少版七上綜合實(shí)踐教案
- 光伏發(fā)電項(xiàng)目投資合同三篇
- 部編版小學(xué)語文六年級(jí)上冊(cè)第四單元單元整體備課設(shè)計(jì)
- 突發(fā)環(huán)境事件應(yīng)急預(yù)案評(píng)審會(huì)匯報(bào)課件-(模板)
- 新聞寫作培訓(xùn)主題課件
- 企業(yè)三級(jí)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定表(新版)
- 小麥旋耕施肥播種作業(yè)技術(shù)要點(diǎn)
- 最新油汀裝配生產(chǎn)工藝及管制要點(diǎn)培訓(xùn)資料
- 半掛車產(chǎn)品設(shè)計(jì)規(guī)范手冊(cè)
評(píng)論
0/150
提交評(píng)論