![單片機(jī)與嵌入式系統(tǒng)4_第1頁(yè)](http://file4.renrendoc.com/view/5eb99dc98d66dc17b75171c7148e355a/5eb99dc98d66dc17b75171c7148e355a1.gif)
![單片機(jī)與嵌入式系統(tǒng)4_第2頁(yè)](http://file4.renrendoc.com/view/5eb99dc98d66dc17b75171c7148e355a/5eb99dc98d66dc17b75171c7148e355a2.gif)
![單片機(jī)與嵌入式系統(tǒng)4_第3頁(yè)](http://file4.renrendoc.com/view/5eb99dc98d66dc17b75171c7148e355a/5eb99dc98d66dc17b75171c7148e355a3.gif)
![單片機(jī)與嵌入式系統(tǒng)4_第4頁(yè)](http://file4.renrendoc.com/view/5eb99dc98d66dc17b75171c7148e355a/5eb99dc98d66dc17b75171c7148e355a4.gif)
![單片機(jī)與嵌入式系統(tǒng)4_第5頁(yè)](http://file4.renrendoc.com/view/5eb99dc98d66dc17b75171c7148e355a/5eb99dc98d66dc17b75171c7148e355a5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章
匯編語(yǔ)言程序設(shè)計(jì)4.1常用的偽指令<1>定義匯編起始位置偽指令ORG
ORGnn;nn為16位地址例如:ORG2000H;定義了下面指令的地址是從2000H開(kāi)始
MOVSP,#80H;設(shè)堆棧
…….<2>賦值偽指令EQU字節(jié)名稱EQU數(shù)據(jù)(或地址或匯編符號(hào))例如:LED_ABEQU2000H;LED_AB等于2000HNUMBEQU30HKKEQUR0
一般放在程序開(kāi)頭,賦值后不能更改2/4/2023<3>定義字節(jié)常量DB(查表用)
[標(biāo)號(hào):]DB8位二進(jìn)數(shù)表例如:TAB1:DB12H,34H,77H,……TAB2:DB07H,44H,……<4>定義字常量DW(查表用)
[標(biāo)號(hào):]DW16位二進(jìn)數(shù)表例如:(每個(gè)字占個(gè)字節(jié),高8位在先,低8位在后)ORG1000HTAB:DW1234H,3CH,……2/4/2023<5>預(yù)留存儲(chǔ)空間偽指令DS[標(biāo)號(hào):]DS表達(dá)式從定義地址開(kāi)始保留DS之后表達(dá)式的值所規(guī)定的存儲(chǔ)單元,以備后用。例如:
ORG
1000HDS
08HDB
30H,8AH
匯編以后,從1000H保留8個(gè)單元,然后從1008H開(kāi)始給內(nèi)存賦值,即
(1008H)=30H(1009H)=8AH2/4/2023<6>位地址符號(hào)偽指令BIT位名稱BITI/O口(或位地址)例如:CLKBITP1.4;定義P1.4為CLKAD_CSBITP1.6;定義P1.6為AD_CSFLGBIT00H;定義00H位地址為FLG<7>定義匯編結(jié)束指令END
[標(biāo)號(hào):]END[地址或標(biāo)號(hào)]END指令一定要放到程序的最后,否則不會(huì)編譯!2/4/20234.2匯編程序設(shè)計(jì)過(guò)程
<1>明確課題的任務(wù)(硬件/功能/精度等);<2>按功能,分塊規(guī)劃程序結(jié)構(gòu)(模塊設(shè)計(jì)/子程序);<3>分配存儲(chǔ)器資源(定義變量/設(shè)堆?!?);<4>根據(jù)功能選擇合適的指令組合;<5>對(duì)源程序進(jìn)行編譯,調(diào)試和修改;<6>燒寫(xiě)代碼(下載代碼….)。2/4/2023中斷向量入口地址表中
斷
源
入口地址
外部中斷0
0003H
定時(shí)計(jì)數(shù)器T0溢出
000BH
外部中斷1
0013H
定時(shí)計(jì)數(shù)器T1溢出
001BH
串行口中斷
0023H
定時(shí)計(jì)數(shù)器T2溢出或T2EX輸入負(fù)跳變
002BH
2/4/20234.3匯編程序的結(jié)構(gòu)CLKBITP1.7;I/O口定義…..NUBEQU2020H;常數(shù)或地址定義….………….;定義變量或常數(shù)ORG0000H;復(fù)位入口地址(上電)LJMPMAIN;跳到主程序ORG0003H;INT0入口地址(P3.2)LJMPT_INT0;跳到INT0中斷程序ORG000BH;定時(shí)器T0入口地址(P3.4)LJMPT_T0;跳到T0中斷程序
ORG0013H;INT1入口地址(P3.3)LJMPT_INT1;跳INT1中斷程序ORG001BH;定時(shí)器T1入口地址(P3.5)LJMPT_T1;跳T1中斷程序ORG0023H;串口入口地址(P3.0,P3.1)LJMPT_CK;跳串口中斷程序
………..;
2/4/2023
ORG0100HT_INT0:……..;INT0中斷子程序
RETIT_INT1:……;INT1中斷子程序
RETIT_T0:……;T0中斷子程序
RETIT_T1:……;T1中斷子程序
RETIT_CK:……;串口中斷子程序
RETI…………;其他子程序……..;MAIN:MOVSP,#90H;設(shè)堆棧(主程序部分)MOVIE,#00H;………;其他指令
END;結(jié)束2/4/2023順序程序分支程序單分支雙分支多分支循環(huán)程序
單重循環(huán)多重循環(huán)常用程序結(jié)構(gòu)2/4/2023順序程序例1:4字節(jié)(雙字)加法。將內(nèi)部RAM30H開(kāi)始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)和內(nèi)部RAM40H單元開(kāi)始的4個(gè)單元中存放的4字節(jié)十六進(jìn)制數(shù)相加,結(jié)果存放到40H開(kāi)始的單元中。(如圖所示)30H31H33H32H加數(shù)
1存放處4FH23HABHA0H43H42H41H40H
7BH
56H
80H
E8H加數(shù)
2存放處43H42H41H40HCAH79H2BH89H相加結(jié)果存放處+A0AB234FE880567B892B79CA12/4/2023
ORG 0000H MOV A,30H ADD A,40H MOV 40H,A ;最低字節(jié)加法并送結(jié)果
MOV A,31H ADDC A,41H MOV 41H,A ;第二字節(jié)加法并送結(jié)果MOV A,32H ADDCA,42H MOV 42H,A ;第三字節(jié)加法并送結(jié)果
MOV A,33H ADDC A,43H MOV 43H,A;第四字節(jié)加法并送結(jié)果,進(jìn)位位在CY中
SJMP$ END源程序:2/4/20232/4/2023分支程序條件成立?程序段下條指令NY程序段1條件成立?程序段2NY程序段2條件N=?程序段N-10N程序段1程序段N1N-1……多分支單分支雙分支2/4/2023單分支程序例2:如圖所示,設(shè)計(jì)一段程序?qū)崿F(xiàn)功能:如果寄存器A中1的個(gè)數(shù)為奇數(shù),所有的二極管發(fā)光;如果全0,則只讓D1-VD4發(fā)光;否則全滅。2/4/2023開(kāi)始位P=1?A=0?P2FFHP200HP20FH結(jié)束YYNN
ORG0000HMOVA,#00011100BJBP,JISHUJZ QUANMOVP2,#00HSJMP TOendJISHU:MOVP2,#0FFHSJMPTOendQUAN:MOVP2,#0FHTOend:SJMP$END流程圖:源程序:判斷奇偶標(biāo)志位的值判斷A的值是否為0A有偶數(shù)個(gè)1,二極管滅A有奇數(shù)個(gè)1,二極管全亮A為0,D1-D4亮2/4/2023A中1的個(gè)數(shù)為奇數(shù)2/4/2023A中1的個(gè)數(shù)為02/4/2023A中1的個(gè)數(shù)為偶數(shù)2/4/2023雙分支程序例3:內(nèi)部RAM的40H單元和50H單元各存放了一個(gè)8位無(wú)符號(hào)數(shù),請(qǐng)比較這兩個(gè)數(shù)的大小,比較結(jié)果用發(fā)光二極管顯示(LED為高有效):若(40H)≥(50H),則P2.0管腳連接的D1發(fā)光;若(40H)<(50H),則P2.1管腳連接的D2發(fā)光。2/4/2023流程圖X-YX≥Y,D1點(diǎn)亮CY=1?X<Y,
YND2點(diǎn)亮開(kāi)始結(jié)束
XEQU40HYEQU50HORG 0000HMOVP2,#0MOVX,#78H
MOVY,#0F0HMOVA,X CLRC SUBBA,Y JCL1 ;CY=1,轉(zhuǎn)移到
L1 SETBP2.0 ;CY=0,(40H)≥(50H),點(diǎn)亮P2.0SJMPFIN;直接跳轉(zhuǎn)到結(jié)束等待L1:SETBP2.1 ;(40H)<(50H),點(diǎn)亮P2.1FIN:SJMP$END
源程序2/4/2023多分支程序例4:在某單片機(jī)系統(tǒng)中,按下一按鍵,鍵值(代表哪個(gè)鍵被按下)存放在內(nèi)部RAM的40H單元內(nèi)。設(shè)計(jì)一段程序?qū)崿F(xiàn)功能:如果(40H)=00H,調(diào)用子程序SUB1;如果(40H)=01H,調(diào)用子程序SUB2;如果(40H)=02H,調(diào)用子程序SUB3;如果(40H)=03H,調(diào)用子程序SUB4;如果(40H)=04H,調(diào)用子程序SUB5。2/4/2023流程圖……..(40H)=?調(diào)SUB1調(diào)SUB2調(diào)SUB3調(diào)SUB4調(diào)SUB5=00H=02H=03H=04H=01H2/4/2023源程序
……MOVA,40HMOVB,#3MULABMOVDPTR,#TABJMP@A+DPTR……TAB:LJMPSUB1LJMPSUB2LJMPSUB3LJMPSUB4LJMPSUB5(40H)×3傳送給A
查表轉(zhuǎn)移轉(zhuǎn)移地址表
對(duì)AJMP指令應(yīng)將分支序號(hào)乘以2,轉(zhuǎn)移范圍為2KB;
對(duì)LJMP指令應(yīng)將分支序號(hào)乘以3,轉(zhuǎn)移范圍為64KB。2/4/2023循環(huán)程序循環(huán)次數(shù)夠否?循環(huán)初始化置循環(huán)次數(shù)循環(huán)體下一條指令NY2/4/2023定時(shí)程序:用循環(huán)程序?qū)⒅噶钪貜?fù)多次執(zhí)行,實(shí)現(xiàn)軟件延時(shí)。單重循環(huán)延時(shí)
例5:假設(shè)單片機(jī)的fosc=12MHz,計(jì)算單片機(jī)執(zhí)行下面程序消耗的時(shí)間。DELAY:MOVR5,#TIME;1機(jī)器周期
MM:NOP;1機(jī)器周期
NOP;1機(jī)器周期
DJNZR5,MM;2機(jī)器周期
RET;2機(jī)器周期1T=12/12MHZ=1s執(zhí)行完以上5條語(yǔ)句,所花時(shí)間:Tdelay=(1+(1+1+2)×TIME+2)×1s第一條和第五條指令延時(shí)時(shí)間可忽略不計(jì)Tdelay=4×TIME×1s最長(zhǎng)定時(shí):TIME=255時(shí),Tdelay≈1ms2/4/2023多重循環(huán)延時(shí)例6:假設(shè)單片機(jī)的fosc=12MHz,計(jì)算單片機(jī)執(zhí)行下面程序消耗的時(shí)間。
DELAY:MOVR3,#TIME1;1機(jī)器周期
LOOP1:MOVR2,#TIME2;1機(jī)器周期
LOOP2:NOP;1機(jī)器周期
NOP;1機(jī)器周期
NOP;1機(jī)器周期
NOP;1機(jī)器周期
NOP;1機(jī)器周期
NOP;1機(jī)器周期
DJNZR2,LOOP2;2機(jī)器周期
DJNZR3,LOOP1;2機(jī)器周期
RET;2機(jī)器周期執(zhí)行完以上語(yǔ)句(第一條和最后一條語(yǔ)句執(zhí)行時(shí)間忽略不計(jì)),所花時(shí)間:Tdelay=(1+(6+2)×TIME2+2)×TIME1×1sTIME1=TIME2=250時(shí),Tdelay≈500ms則:MOVR0,#02LOOP3:LCALLDELAYDJNZR0,LOOP3可實(shí)現(xiàn)1s延時(shí)2/4/2023練習(xí)參照下圖設(shè)計(jì)一個(gè)彩燈控制程序,讓8個(gè)led按照自己的設(shè)想發(fā)光,顯示的樣式盡可能的豐富。2/4/2023HD-51-A型學(xué)習(xí)/開(kāi)發(fā)板2/4/2023原理圖2/4/2023
ORG 0000HSTART:CLR P1.0 ;第一個(gè)LED亮
SETB P1.1;第二個(gè)LED滅
LCALL DELAY ;延時(shí)0.5秒
SETB P1.0;第一個(gè)LED滅
CLR P1.1 ;第二個(gè)LED亮
LCALL DELAY ;延時(shí)0.5秒
SJMP START ;反復(fù)循環(huán)
;延時(shí)子程序,12M晶振延時(shí)約500毫秒DELAY:MOV R4,#4L3:MOV R2,#250L1: MOV R3,#250L2: DJNZ R3,L2 DJNZ R2,L1 DJNZ R4,L3 RET ENDSTART流水燈程序2/4/20232/4/2023LED(LightEmittingDiode)八段數(shù)碼管數(shù)碼管外形agdfecbdpabcdefgdp(a)共陰極GNDVccabcdefgdp(b)共陽(yáng)極2/4/2023編碼abcdefg
dpD7D6D5D4D3D2D1D0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0
0
0000011數(shù)碼管外形agdfecbdp顯示字形“0”,編碼:03H
1
0011111數(shù)碼管外形agdfecbdp顯示字形“1”,編碼:9FH
0
0100101數(shù)碼管外形agdfecbdp顯示字形“2”,編碼:25H
0
0001101數(shù)碼管外形agdfecbdp顯示字形“3”,編碼:0DH
1
0011001數(shù)碼管外形agdfecbdp顯示字形“4”,編碼:99H
0
1001001數(shù)碼管外形agdfecbdp顯示字形“5”,編碼:49H
0
1000001數(shù)碼管外形agdfecbdp顯示字形“6”,編碼:41H
0
0011111數(shù)碼管外形agdfecbdp顯示字形“7”,編碼:1FH
0
0000001數(shù)碼管外形agdfecbdp顯示字形“8”,編碼:01H
0
0001001數(shù)碼管外形agdfecbdp顯示字形“9”,編碼:09H
0
0010001數(shù)碼管外形agdfecbdp顯示字形“A”,編碼:11H
1
1000001數(shù)碼管外形agdfecbdp顯示字形“b”,編碼:0C1H
0
1100011數(shù)碼管外形agdfecbdp顯示字形“C”,編碼:63H
1
0000101數(shù)碼管外形agdfecbdp顯示字形“d”,編碼:85H
0
1100001數(shù)碼管外形agdfecbdp顯示字形“E”,編碼:61H
0
1110001數(shù)碼管外形agdfecbdp顯示字形“F”,編碼:71H
0
0110000數(shù)碼管外形agdfecbdp顯示字形“P.”,編碼:30H2/4/2023按鍵通常,按鍵所用開(kāi)關(guān)為機(jī)械彈性開(kāi)關(guān),一般為常開(kāi)型,不按下時(shí)觸點(diǎn)斷開(kāi),按下時(shí)閉合。按鍵按下和松開(kāi)的瞬間,伴隨有一連串的抖動(dòng),抖動(dòng)時(shí)間一般為5~10ms。檢測(cè)出鍵閉合后,再執(zhí)行一個(gè)10ms左右的延時(shí)程序,以避開(kāi)抖動(dòng)時(shí)間,等信號(hào)穩(wěn)定后再進(jìn)行按鍵查詢,如果仍保持閉合,則確認(rèn)有鍵按下,否則認(rèn)為是抖動(dòng)。2/4/2023例:按鍵則數(shù)碼管增一開(kāi)始K1按下?數(shù)碼管初始顯示為0延時(shí)10ms再次判斷K1按下?K1抬起?數(shù)碼管增1顯示是否否是是否2/4/2023按鍵則數(shù)碼管增一程序K1BITP1.4SMG_SELBITP1.7SMGDATA30H ORG0000H LJMPMAIN ORG0030HMAIN:MOVP2,#03H;初始顯示0 CLRSMG_SEL;選通數(shù)碼管
L1:JBK1,L1;K1未按下,等待
ACALLDELAY;K1按下,延時(shí)去抖動(dòng)
JBK1,L1;再判K1是否按下,未按下則認(rèn)為是抖動(dòng)
JNBK1,$ ;判按鍵是否松開(kāi),沒(méi)松開(kāi)則等待
L2:INCSMG;數(shù)碼管增一
MOVA,SMG ANLA,#0FH ACALLDISP;調(diào)用顯示子程序
SJMPL12/4/2023按鍵則數(shù)碼管增一程序(續(xù));-------------延時(shí)子程序------------------DELAY:MOVR7,#20DL1:MOVR6,#00DJNZR6,$ DJNZR7,DL1 RET;------------顯示子程序-------------------DISP:MOVDPTR,#DISP_CODE;DISP_CODE為編碼表首地址
MOVCA,@A+DPTR MOVP2,A RETDISP_CODE:DB03H,9FH,25H,0DH,99H,49H,41H,1FHDB01H,09H,11H,0C1H,63H,85H,61H,71H ;對(duì)應(yīng)數(shù)碼:0123456789AbCdEF ENDMAIN2/4/2023外擴(kuò)RAM、ROM時(shí),使用鎖存器2/4/20238D鎖存器2/4/2023一、擴(kuò)展的基本信息(1)地址總線(AddressBus,AB)
A15….A8,A7…A0
(2)數(shù)據(jù)總線(DataBus,DB)
D7….D0
(3)控制總線(ControlBus,CB)
/WR、/RD、/PSEN、/EA、ALE2/4/20232/4/20232/4/2023外部數(shù)據(jù)和常數(shù)訪問(wèn)方法1.外部數(shù)據(jù)訪問(wèn)
MOVXA,@DPTRMOVX@DPTR,AMOVXA,@RiMOVX@Ri,A2.常數(shù)訪問(wèn)
MOVCA,@A+DPTRMOVCA,@A+PC2/4/2023
復(fù)習(xí)單片機(jī)I/O端口邏輯結(jié)構(gòu)
8051有4個(gè)8位并行I/O端口,記做P0、P1、P2和P3。這四個(gè)口都是準(zhǔn)雙向的I/O口,共占有32條管腳,每一條I/O線都能獨(dú)立的用作輸入或輸出。
1、P0口(I/O、總線)2/4/20232、P1口(I/O口)2/4/20233、P2口(I/O口、總線)2/4/20234、P3口(I/O口、復(fù)用功能)2/4/2
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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年全職研發(fā)工程師勞動(dòng)合同樣本
- 2025年電力工程項(xiàng)目策劃追加協(xié)議書(shū)
- 2025年全球性市場(chǎng)營(yíng)銷(xiāo)合作合同
- 2025年企業(yè)股權(quán)轉(zhuǎn)讓合同樣本(內(nèi)部交易)
- 2025年實(shí)驗(yàn)室檢測(cè)業(yè)務(wù)分包合同協(xié)議推廣
- 建設(shè)工程安全監(jiān)督申請(qǐng)協(xié)議樣本
- 2025年企業(yè)宣傳片制作合作協(xié)議書(shū)
- 工程預(yù)算與成本控制服務(wù)合同樣本2025
- 2025年反擔(dān)保合作協(xié)議標(biāo)準(zhǔn)版
- 2025年醫(yī)療機(jī)構(gòu)股份合作策劃合同書(shū)
- 杏花鄉(xiāng)衛(wèi)生院崗位說(shuō)明樣本
- 大數(shù)據(jù)與會(huì)計(jì)單招面試題
- 深圳人才公園功能分析報(bào)告
- Interstellar-星際穿越課件
- 2023-2024學(xué)年貴州省黔西南州八年級(jí)上冊(cè)1月月考語(yǔ)文質(zhì)量檢測(cè)試卷(附答案)
- 閱讀理解:如何找文章線索 課件
- 產(chǎn)品設(shè)計(jì)思維 課件 第3-5章 產(chǎn)品設(shè)計(jì)的問(wèn)題思維、產(chǎn)品設(shè)計(jì)的功能思維、產(chǎn)品設(shè)計(jì)的形式思維
- 餐券模板完整
- 2023年節(jié)能服務(wù)行業(yè)市場(chǎng)分析報(bào)告及未來(lái)發(fā)展趨勢(shì)
- 小區(qū)排水管網(wǎng)修復(fù)施工方案
- 智慧城市發(fā)展-人工智能技術(shù)在城市管理中的應(yīng)用
評(píng)論
0/150
提交評(píng)論