51單片機匯編語言_第1頁
51單片機匯編語言_第2頁
51單片機匯編語言_第3頁
51單片機匯編語言_第4頁
51單片機匯編語言_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、51單片機匯編語言a)單個與多個LED燈,位操作與子節(jié)操作 —輸出01共陰極數(shù)碼管JH>|匚唱爾護i LUl沖AM mwv州皿謝 r*04 pd.jwm poeuw ror/*fijn ww? PU UTM nj#nSF3 3WnT 鮭4TID 啊s/n wbwF 円十惑P2 tfM FN*誓 !T3 *M1I P2 4鼻 t? m矗璋 F;1 fVAktF 小 12M -aEU共陽極數(shù)碼管S字節(jié)與位操詐響應dORG 0000HSTART:CLR CMOV PO.O,CMOV P1.1,CMOV P2.2,CMOV P3.3,CCLR ACPL AMOV P0,AMO

2、V P1,AMOV P2,AMOV P3,AEND程序說明:可以用7段數(shù)碼管來代替各端口的8個LED燈,硬件的這種顯示方式使得數(shù)字表達成為實用。數(shù)字顯示由數(shù)碼管的硬件結(jié)構(gòu)與工作原理(7個LED燈的幾何變形組合)和 數(shù)字表達的數(shù)據(jù)格式確定。如:共陽極數(shù)碼管顯示數(shù)字 3,則有 P1 口送數(shù)據(jù) #4FH;MOVP1, #0B0H共陰極數(shù)碼管顯示數(shù)字 8,則有 P1 口送數(shù)據(jù) #80H;MOVP1, #7F H用數(shù)據(jù)表表示則有:TABshuziyang: / 陽極管 ( 共陰極管取反即可 )DB (數(shù)字0F)C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H,88H,83H

3、,C 6H,A1H,86H,8EHTABshuziyin: / 陰極管 ( 共陽極管取反即可 )DB (數(shù)字0F)3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,3 9H,5EH,79H,71Hb)單個與多個LED燈閃爍—延時子程序—注意定時器">前邊已經(jīng)看到,通過改變位或字節(jié)的賦值,可以使得LED燈亮或滅,以此形成閃爍效果。但是硬件的響應時 間太短,使得效果不佳。雖然可以通過改變單片機的時 鐘設置來改變效果。但時鐘的改變極其不方便,因此需 要利用延時指令(注意定時器功能) 獲得理想的效果。

4、延 時效果是利用單片機空轉(zhuǎn)來實現(xiàn)的。ACALLDELAY調(diào)延時子程序*DELAY:;延時子程序—這是一個非常有用、而且常 見的一個子程序MOV R5,#04H 將16進制數(shù)04H傳遞給寄存器 R5F3:MOV R6,#0FFH將16進制數(shù)OFFH傳遞給寄存器 R6F2:MOV R7,#0FFH將16進制數(shù)OFFH傳遞給寄存器 R7F1:DJNZR7, F1 ;寄存器 R7減1非0跳轉(zhuǎn)到F1,直到減為 0 順序執(zhí)行下一指令DJNZR6, F2;寄存器 R6減1非0跳轉(zhuǎn)到F2,直到減為 0 順序執(zhí)行下一指令DJNZR5, F3;寄存器 R5減1非0跳轉(zhuǎn)到F3,直到減為 0 順序

5、執(zhí)行下一指令RET;子程序結(jié)束,返回子程序入口處ACALLDELAY調(diào)延時子程序*應用實例MAIN:CLR CMOV P0.0,CMOV P1.1,CMOV P2.2,CMOV P3.3,CACALLDELAY調(diào)延時子程序;CLR ACPL AMOV P0,AMOV P1,AMOV P2,AMOV P3,AACALL DELA 丫調(diào)延時子程序SJMPMAIN ;相對轉(zhuǎn)移時間短,用 AJMP色對轉(zhuǎn)移時間長,RET是用于子程序的返回DELAY:;延時子程序-這是一個非常有用、而且常見的一 個子程序MOV R5,#04H;將16進制數(shù)04H傳遞給寄存器 R5F3:MOV R6,#0FFH將16進制數(shù)

6、OFFH傳遞給寄存器 R6F2:MOV R7,#0FFH將16進制數(shù)OFFH傳遞給寄存器 R7F1:DJNZR7, F1 ;寄存器R7減1非0跳轉(zhuǎn)到F1,直到減為 0順序執(zhí)行下一指令DJNZR6, F2 ;寄存器R6減1非0跳轉(zhuǎn)到F2,直到減為 0順序執(zhí)行下一指令DJNZR5, F3 ;寄存器 R5減1非0跳轉(zhuǎn)到F3,直到減為 0順序執(zhí)行下一指令RET;子程序結(jié)束,返回子程序入口處ACALLDELAY調(diào)延時子程序END程序說明:注意延時子程序中的 DJNZR7, F1; DJNZR6, F2; DJNZR5,F3;通過增加或減少循環(huán)數(shù)目控制或改變延時時間c)單個與多個LED燈流動&md

7、ash;位循環(huán)、字節(jié)循環(huán)與延時子程序ORG 0000HMAIN: *位循環(huán)& mdash;掃描& mdash;流水燈& mdash;逐級增加燈的數(shù)目*CLR CMOV P0.0,CACALLDELAY; 調(diào)延時子程序MOV P0.1,CACALLDELAY MOV P0.2,CACALLDELAY MOV P0.3,CACALLDELAYMOV P0.4,CACALLDELAYMOV P0.5,CACALLDELAYMOV P0.6,CACALLDELAY MOV P0.7,CACALLDELA;注意前面各位狀態(tài)一直持續(xù)。P0 口各位電平保持不變;* 位循環(huán) &

8、mdash;流水燈 —逐個 改變燈亮與滅 *CLR CMOV P0.0,CACALLDELAY; 調(diào)延時子程序CPL CMOV P0.0,CACALLDELAYCLR CMOV P0.1,C ACALLDELAYCPL CMOV P0.1,CACALLDELAYCLR CMOV P0.2,CACALLDELAYCPL CMOV P0.2,CACALLDELAYCLR CMOV P0.3,CACALLDELAYCPL CMOV P0.3,CACALLDELAYCLR CMOV P0.4,CACALLDELAYCPL C MOV P0.4,CACALLDELAYCLR C MO

9、V P0.5,CACALLDELAYCPL C MOP0.5,CACALL DELAY 注意前面各位狀態(tài) —電平、輸出狀態(tài)變化……、 ……;* 字節(jié)循環(huán)—逐級增加輸出 口的數(shù)目 *CPL AMOV P0,AACALLDELAYMOV P1,AACALLDELAY *逐漸改變燈的亮滅狀態(tài)MOV P2,#01H 注意: #20H #10H 陽極管ACALLDELAYMOV P2,#02H 注意:#DFH #EFH陰極管MOV P2,AACALLDELAYMOV P3,AA

10、CALLDELAY字節(jié)循環(huán)—流水燈—*#01H #02H #04H #08H #80H #40H#FEH #FDH #FBH #F7H #7FH #BFHACALLDELAYMOV P2,#04HACALLDELAYMOV P2,#08H ACALLDELAYMOV P2,#10HACALLDELAY MOV P2,#20HACALLDELAYMOV P2,#40HACALLDELAYMOV P2,#80HACALLDELAY *字節(jié)循環(huán)—數(shù)碼管—字符(數(shù)字、字母等)*MOV P1,#40H改變字節(jié)中各位的電平狀態(tài)

11、,以便控制輸出、顯示所要求的內(nèi)容ACALLDELAYMOV P1,#79HACALLDELAYMOV P1,#24HACALLDELAYMOV P1,#30HACALLDELAYMOV P1,# 19HACALLDELAYMOV P1,#12HACALLDELAYMOV P1,#02H ACALLDELAY MOV P1,#78HACALLDELAYSJMPMAIN ;相對轉(zhuǎn)移時間短,用 AJMP色對轉(zhuǎn)移時間長,RET是用于子程序的返回; * 延時子程序*DELAY:;延時子程序—去除一個循環(huán),時間變短了。MOV R6,#04H ;將16進制數(shù)04H傳遞給工作寄存器 R6。

12、改變#04H為#3FH時間變長F2:MOV R7,#0FFH將16進制數(shù)OFFH傳遞給工作寄存器 R7F1:DJNZR7, F1 ;寄存器R7減1非0跳轉(zhuǎn)到F1,直到減為 0順序執(zhí)行下一指令DJNZR6, F2 ;寄存器R6減1非0跳轉(zhuǎn)到F2,直到減為 0順序執(zhí)行下一指令RET;子程序結(jié)束,返回子程序入口處ACALLDELAY調(diào)延時子程序END;* 子節(jié)循環(huán)—數(shù)碼管—子符(數(shù)子、 字母等)—數(shù)表與指針*R(族 OOH:99H2 .A7FHIgm U餌n丹1o.i11513*z1t17w"»c 占tj押CES: Al

13、t Qkl二匚肖 HJJ*MW K)4 UMMOV £ « Hpw I*,;MW p ?, 4»>9»1M4V tl.AMALL VU99H!MALL YlmlSM!Al Aiwc kd « i tip nr i CJBB. Jin , f .f 'I eKUMHHXMIfQU Id, 4"*MOW £t _INmv t>!* -WV 2r.MI1l#?v fmAll YJteani比5LE TJWSMIHL Jk.1H< |hQt f|l« -4ZJVOE H£) r * -I

14、 r MLnEWITJkM L JHT HAJmbfcWHCAf Iff _ «,EF* ji BTKTWTEFlWWE Ikt. WurMAIN:CLR AMOV P3,#00HMOV P0,#00HMOV P2,#00HMOV R0,#00H;寄存器中放數(shù)值 0MOV DPTR,#TABZshuzi ; 指針 PC 指向數(shù)表DISP:; 段標記MOV A,R0 ; 將寄存器中的數(shù)值轉(zhuǎn)移到累加器中MOVC A,A+DPTR;以DPTR乍為基礎(chǔ),與累加器相加得到新地址給累加器MOV P3A 將累加器的地址給 P3 口MOV P0,ASETB p2.3 ;一位數(shù)顯示位控制;個位SETB

15、 p2.7ACALL DELAY; 調(diào)延時子程序ACALL DELAYINC RO ; 寄存器 RO加1CJNE R0,#16H,DISP ; 寄存器與立即數(shù) 18 比較,不相 等則轉(zhuǎn)移到 DISP 循環(huán)。相等則順序執(zhí)行 TABshuziyang:/ 陽極管DBCOH,F9H,A4H,BOH,99H,92H,82H,F8H,8OH,9OH,88H,83H,C 6H,A1H,86H,8EH,OFFHTABshuziyin:/ 陰極管 DB3FH,O6H,5BH,4FH,66H,6DH,7DH,O7H,7FH,6FH,77H,7CH ,39H,5EH,79H,71H,OFFHEND;* 字節(jié)循環(huán)

16、&mdash;數(shù)碼管&mdash;字符 (數(shù)字、字母等)&mdash;移位控制*RL A 將累加器的值左移一位RLC A將累加器含進位 C左移一位RR A將累加器的值右移一位RRC A將累加器含進位C右移一位1.單個按鍵,單個與多個LED燈&mdash;最小系統(tǒng)&mdash;位輸入與位、字節(jié)輸出 & mdash;判斷與子程序a)單個按鍵與單個LED燈(位操作&mdash;輸入與輸出) & mdash;判斷與子程序b)單個按鍵與多個 LED燈(位操作&mdash;輸入與字節(jié)操作 &mdash; 輸出)c)單個按鍵與多

17、個 LED燈(位操作&mdash;輸入與位、字節(jié)操作&mdash;輸出)d)單個按鍵與單個電機控制 &mdash;開環(huán)控制1.單個按鍵,單個與多個LED(位操作&mdash;輸入與位、字節(jié)操作&mdash;輸出)&mdash;最小系統(tǒng)a)單個按鍵,單個LED燈(位操作與位輸入、輸出)&mdash;有、無判斷而傳送數(shù)據(jù)通過三個方面 (程序指令、虛擬仿真、實體電路) 探討單輸入與單輸出:主要是理解位數(shù)據(jù)傳送,包括匯編語言的數(shù)據(jù)傳送指令實踐、實際虛擬電路的數(shù)據(jù)傳送響應, 以體現(xiàn)抽象與具體的可理解性。?單輸出的電子線路 &mdash;靜態(tài)

18、特性&mdash;動態(tài)特性, 指令控制輸出?單輸入與單的電子線路 & mdash;靜態(tài)特性(線路組成與結(jié)構(gòu))?單輸入與單輸出電子線路的控制指令& mdash;動態(tài)特性( 行為與狀態(tài) );分號,這是一種注釋方式符號ORGOOOOH;這是偽指令,機器并不執(zhí)行,用于程序的交流。指令執(zhí)行的起始地址,十進制用D 表示,十六進制用H表示,二進制用 B表示。一個字節(jié)(8位機、16位機、 32 位機、 64 位機)一次執(zhí)行。也可以按位來執(zhí)行,也就 是一個 bit 。ORGOOOOOOOOB與 ORGOOOOH作用相同。注意 8 位(bit )一個字節(jié)。 16 位的處理器需要用 0000

19、 0000H 表示。 16 或 32 位以上,使用操作系統(tǒng) ( Wince、 Linux 等)更有效, 可以利用大量的、底層的、專業(yè)化、標準化的面向控制 的庫函數(shù)(如: API 等)。START;這是偽指令,機器并不執(zhí)行。只是為了匯編語 言講故事的可理解性MAIN:;偽指令,主程序,用于區(qū)別子程序PC&rarr;MOVA,#00H;將立即數(shù) 00000000B(常數(shù) 0D) 傳送給累加器ACC(專用寄存器,可用于存放計算結(jié)果 等)。要通過累加器 A和其它存儲地址進行數(shù)據(jù)交換。注 意PC是自動移位(自動+1)到下一個語句的地址。使用 該語句實質(zhì)上是讓 PC具有初始位置。PC&ra

20、rr;MOVP1,A;將累加器中的數(shù)(常數(shù)0D)傳送給端口 P1( P1 口 8 位全部置 0,低電平, P1 端口各位處于關(guān) 閉狀態(tài),LED燈處于系統(tǒng)響應的準備狀態(tài)),按字節(jié)傳送 數(shù)據(jù)。特別記憶: PC&rarr; 表示指針所指地址,并會自 動加1。輸出口 &mdash;字節(jié)PC&rarr;MOVC, 0A0H 檢測 P2.0 口的狀態(tài),將 P2.0 口的 狀態(tài)(由按鍵狀態(tài)決定)傳送給位累加器C位累加器C的地址是PSW程序狀態(tài)字寄存器)的進位標志位 CY(D7HPSW.7)。 P2.0 口可以是開或關(guān),也就是置1 或 0,高電平或低電平) ,按字節(jié)傳送數(shù)據(jù)。要通過位累

21、加器 C 和其它存儲地址進行數(shù)據(jù)交換。該語句也可以寫成:MOVC P2.0,比較字節(jié)數(shù)據(jù)傳送 MOVA #00H或MOVA P1。 輸入口 &mdash;位PC&rarr;MOVP1.0,C ;等價于 MOV90H C;將位累加器C地址中的值傳送給 P1.0 口( 90H是其直接地址),也就 是將P2.0 口的狀態(tài)(由直接地址OAOH狀態(tài)決定)傳送給 直接地址 90H, P1.0 口,輸出口 &mdash;位PC&rarr;MOVP1.1,C;等價于 MOV91H CPC&rarr;MOVP1.2,C;等價于 MOV92H CPC&rarr;M0VP1.3,C;等價于 MOV93H C等等END偽指令,程序結(jié)束標志程序說明:單個按鍵控制單個 LED燈及其狀態(tài),也可以控制若干個LED燈及其狀態(tài)。也就是多個LED燈,單個按鍵。反過來,可以是多個按鍵控

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論