單片機(jī)程序設(shè)計(jì)_第1頁
單片機(jī)程序設(shè)計(jì)_第2頁
單片機(jī)程序設(shè)計(jì)_第3頁
單片機(jī)程序設(shè)計(jì)_第4頁
單片機(jī)程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論