版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、8051 指令,暫存器-1,累積器:ACC,簡(jiǎn)稱(chēng)A 乘法暫存器: B程式計(jì)數(shù)暫存器: PC堆疊指標(biāo):SP5 資料指標(biāo)暫存器:DPTR (DPH, DPL) 1. 由一個(gè)高位元組(DPH)以及一個(gè)低位 元組(DPL)所組成 2. 它可以二者合一,成為一個(gè)16位元的暫 存器,當(dāng)做存取資料的位址指標(biāo)用, 3. 或者是2個(gè)獨(dú)立的8位元存器(DPH, DPL),視作
2、 一般暫存器來(lái)用。,暫存器-2,6. P0~P3: 8051晶片與外界溝通的主要管道 P0沒(méi)有輸出提升電阻 P1、P2、P3則有提升電阻。 BIT表示法:P0.0~P0.7 P1.0~P1.7 P2.0~P2.7 P3.0~P3.7,7.串列資料: SCON, SMOD串列資料緩衝器:SBUF 一個(gè)為發(fā)送緩衝暫存器,另一個(gè)是接收緩衝暫存器。兩者名稱(chēng)相同(SBUF) MOV SBUF, A
3、(指發(fā)送緩衝暫存器) MOV A, SBUF (指接收緩衝暫存器)計(jì)時(shí)計(jì)數(shù)器: TMOD, TCON, THX, TLX中斷: IE, IP程式狀態(tài)暫存器: PSW,立即定址(Immediate Addressing)將某個(gè)位址或暫存器直接存入一個(gè)值立即定址的前置符號(hào)為#直接定址(Direct Addressing)直接將某個(gè)位址的值傳給CPU中的某一個(gè)暫存器 間接定址(Indirect Addressin
4、g)利用暫存器R0,R1,SP及DPTR當(dāng)成指標(biāo),間接取得指標(biāo)內(nèi)的資料間接定址的前置符號(hào)為@ 暫存器定址(Register Addressing)凡透過(guò)R0~R7 暫存器作資料的搬移或加減運(yùn)算統(tǒng)稱(chēng)為暫存器定址索引定址法利用DPTR或PC為基底值然後加上ACC所得位址,8051定址模式,8051定址模式,1. 立即常數(shù)定址(immediate constants) MOV A, #127?
5、(A)=1272.直接定址(direct addressing) MOV A, 7FH?(A)=(7FH)=65H,常數(shù)127,A,,65H,Cpu內(nèi)記憶體7FH,A,,8051定址模式,3.間接定址(indirect addressing) (a) MOV A, @R0; 搬移cpu內(nèi)MEM ?(A)=((R0)) (b)
6、 MOVX A, @DPTR;搬移外部MEM ?(A)=((DPTR))=77H,1245H,77H,A,DPTR,1245H,,,外部記憶體1245H,,,,,8051定址模式,4. 暫存器定址 (register addressing) MOV A, R7 ?(A)=(R7)=7AH,R7=7AH,A,,8051定址模式,5.索引定址 (index addressing)
7、 MOVC A, @A+PC; 搬移ROM資料?(A)=((A)+(PC)),8051定址模式,5.索引定址 (index addressing)MOVX A, @A+DPTR; 搬移外部RAM資料A)+(PC?(A)=((A)+(DPTR))=77H,8051指令,,符號(hào),Rn: R0~R7Ri: R0, R1direct: 0~127data (常數(shù))123(十進(jìn)位)23H(十六進(jìn)位
8、)10011110B(二進(jìn)位),資料轉(zhuǎn)移指令MOV,** 將資料從mem,暫存器搬移至A暫存器 (read)MOV A, Rn :暫存器暫存器內(nèi)容移至累加器MOV A, direct :直接位元組內(nèi)容移至累加器 MOV A, @Ri : 間接位元組內(nèi)容移至累加器MOV A, #data : 常數(shù)值移至?xí)捍嫫?* 將A暫存器資料搬移至mem,暫存器(write)MOV Rn, A : (Rn)?
9、(A)MOV direct, A : (direct) ? (A)MOV @Ri, A : ((Ri)) ?( A),資料轉(zhuǎn)移指令-example 1,MOV A, # 33H(A)=33HMOV A, #01011100B (A)=5CHMOV A, #77 (A)=77MOV A, #1 ? (A)=1 MOV R1, A ? ( R1)=(A) ?( R1
10、)=(A)=1,資料轉(zhuǎn)移指令-example 2,MOV A, 33H given (33H)=65H(A)=65HMOV @R1, A given (R1)=30H, (A)=10H (30H)=10HMOV A, R1 given (R1)=22H (A)=22H,MOV A, direct :直接位元組內(nèi)容移至累加器 MOV A, @Ri : 間接位元組內(nèi)容移
11、至累加器MOV A, Rn : 暫存器內(nèi)容移至累加器,,,,資料轉(zhuǎn)移指令MOVX, PUSH , POP XCH,**CPU外部RAM的資料移入累加器(8位元位址)MOVX A, @Ri :CPU外部RAM的資料移入累加 器(8位元位址)MOVX A, @DPTR : CPU外部RAM的資料移入累 加器(16位元位址)**CPU將資料移
12、入/取出 堆疊區(qū)SPPUSH direct :直接位元組的內(nèi)容放置SP POP direct : 從SP拿回資料至直接位元組**CPU將A資料與暫存器暫存器內(nèi)容互換XCH A, direct : 累加器與直接位元組的內(nèi)容換XCH A, Rn : 累加器與暫存器的內(nèi)容交換,資料轉(zhuǎn)移指令-3,[1] Given (R1)=33H, (33H)=77H,
13、(DPTR)=1111H (1111H)=66HMOVX A, @R1 (A)=(外部RAM(R1))=((外部RAM (33H))=77H MOVX A, @DPTR (A)=((DPTR))=(1111H)=66H,資料轉(zhuǎn)移指令-4,PUSH APUSH 30HPUSH R1…POP R1POP 30HPOP A,A,,,A,,30H,A,R1,30H,,,,A,,,A,,30H,,,,
14、,,,stack,stack,SP,SP,SP,SP,FILO:FIRST IN LAST OUT,資料轉(zhuǎn)移指令-5,Given (A)=34H, (R1)=56H, (30H)=78HXCH A, 30H(A)=78H, (30H)=34HXCH A, R1 (A)=56H, (R1)=34H,算數(shù)運(yùn)算指令,加: ADD, ADDC, INC減: SUBB, DEC乘:MUL除:DIV,算數(shù)運(yùn)算指令add,
15、 addc,Add A ,Rn : 加暫存器至累加器Add A,direct : 加直接位元組至累加器Add A,@Ri : 加間接位元組至累加器Add A,#data : 加常數(shù)值至累加器Addc A,Rn : (A)? (A)+(Rn)+(CY) Addc A,direct : (A)?(A)+(direct)+(CY )Addc A,@Ri : (A)?(A)+((Ri))+(CY
16、 )Addc A,#data : (A)? (A)+data+(CY),算數(shù)運(yùn)算指令-2,Given (A)=20H, (R1)=30H, (30H)=66H, (CY)=1ADD A,#03H(A)= (A)+3H= 20H+3H=23HADDC A, R1(A)= (A)+ (R1)+ (CY)= 20H+30H+1=51H,算數(shù)運(yùn)算指令subb, INC,Subb A, Rn :累加器-暫存器Rn-C
17、YSubb A, direct : 累加器-direct-CYSubb A, @Ri : 累加器-(Ri)-CYSubb A, #data : 累加器-data-CYINC (DEC) A : 累加器+(-)1INC (DEC) Rn : 暫存器+(-)1INC (DEC) direct : 直接位元組+(-)1INC (DEC) @Ri : 間接位元組+(-)1,Given (A)=10
18、INC A ; (A)=(A)+1=11Given (A)=20 DEC A ; (A)=(A)-1=19Given (R1)=20DEC R1 ; ( R1)=(R1)-1=20-1=19Given (A)=30, (R2)=10, CY=0SUBB A, R2 ;(A)=(A)-(R2)-(CY)=30-10-0=20,算數(shù)運(yùn)算指令MUL, DIV,Mul A ,B : A
19、, B?A*BDiv A, B : A, B?A/B商數(shù)存於A; 餘數(shù)存於BGiven (A)=15, (B)=20MUL A, B (A)x(B)=15x20=300?(A)=1, (B)=44Given (A)=17, (B)=4DIV A, B ; 17/4=4…1? (A)=4, (B)=1,邏輯運(yùn)算指令,ANL, ORL, XORRL, RLC, RR, RRCCLR,邏輯運(yùn)算指令A(yù)
20、NL,ORL,對(duì)每一位元做AND/OR運(yùn)算ANL A ,Rn : 暫存器AND至累加器(每一位元)ANL A,direct : 直接位元組AND至累加器ANL A,@Ri : 間接位元組AND至累加器ANL A,#data : 常數(shù)值A(chǔ)ND至累加器ORL A ,Rn : 暫存器AND至累加器ORL A,direct : 直接位元組OR至累加器ORL A,@Ri : 間接位元組OR至累加器ORL A,#d
21、ata : 常數(shù)值OR至累加器,Given (A)=10110010, (R1)=11110000, (30H)=22H[1] ANLA, R1 ; (A)=(A) and (R1)(A): 10110010(R1): 11110000-------------------- 10110000[2] ORL A, #11100000B ; (A): 10110010 D0H:
22、 11100000-------------------------- 11110010=F0H,AND A, 30H 10110010 00100010-------------------- 00100010=22HORL A, @R1 A or ((R1))=A or (30H) =A or 22H=B2H1011001000100010-------------
23、---10110010=B2H,邏輯運(yùn)算指令XRL,CLR,*兩資料相同為0,不相同為1XRL A , Rn : 暫存器XOR至累加器XRL A, direct : 直接位元組XOR至累加器XRL A, @Ri : 間接位元組XOR至累加器XRL A, #data : 常數(shù)值XOR至累加器*清除累加器為0CLR A : 清除累加器; A=0,邏輯運(yùn)算指令RL,RLC,RR,RRC,**左旋轉(zhuǎn)RL A : 累加器向
24、左旋轉(zhuǎn)RLC A : 累加器與CY一起向左旋轉(zhuǎn)**右旋轉(zhuǎn)RR A : 累加器向右旋轉(zhuǎn)RRC A : 累加器與CY一起向右旋轉(zhuǎn),Given (A)=10H, (R1)=33HXRL A, #FFH ; (A)=EFHXRL A, R1 ; 0001000000110011-------------------00100011=23H,RL A ;(A)=(A)*2,A7 A6 A5 A4 A3 A2 A1
25、 A0 ?0 = A6 A5 A4 A3 A2 A1 A0 0 (A)=23H=00100011 RL A=001000110=01000110=46H,,,RR A; (A)=(A)/2,0? A7 A6 A5 A4 A3 A2 A1 A0 =0 A7 A6 A5 A4 A3 A2 A1 (A)=23H=00100011 RR A=000100011=00010001=11H
26、,,,RLC A; (A)=2*(A)+(CY),CY ?A7 A6 A5 A4 A3 A2 A1 A0?CY = A6 A5 A4 A3 A2 A1 A0 CY * (CY)=A7 Given ( CY)=1, (A)=23H=00100011 RLC A (CY)?00100011?(CY)=01000111=47H, (CY)=0,,,,,RRC A,(CY) ? A7 A6 A5 A4 A3 A2
27、 A1 A0 ? (CY) (A) =CY A7 A6 A5 A4 A3 A2 A1 (CY) = A0 (CY) =1, (A)=23H=00100011 RRC A (CY) ?00100011? (CY) (A)=10010001=91H (CY) =1,,,,,程式跳躍指令--副程式呼叫ACALL, LCALL, RET,*** CALL **ACALL address : 絕對(duì)副程式呼
28、叫(0~+-127)LCALL address :絕對(duì)副程式呼叫(0~65535)RET : 從副程式返回 (RETI 中斷反返回),CALL---RET,...CALL DRLAYMOV A,#56H...,...DRLAY: MOV R0,#56H .. .. RET.,,,,,跳躍指令,無(wú)條件跳躍AJMP, JMP有條件跳躍JZ, JNZCJNEJB
29、JNB,無(wú)條件跳躍,AJMP address : 絕對(duì)位址跳躍(0~+-127) JMP @A+DPTR : 跳到一間接位址,有條件跳躍1,JZ rel : 若零值旗標(biāo)(PSW.Z)=0 就跳躍JNZ rel : 若零值旗標(biāo)(PSW.Z)!=0就跳躍,有條件跳躍2,CJNE A, direct, rel :若累加器與直接位元組內(nèi)容不相同就跳躍至relCJNE A, #data, rel:若累加器與data內(nèi)容不相同就跳躍至rel
30、CJNE Rn, #data, rel:若Rn與data內(nèi)容不相同就跳躍至relCJNE @Ri, #data, rel: ((Ri))與data內(nèi)容不相同就跳躍至relNOP : 沒(méi)動(dòng)作(短暫時(shí)間延遲 1 MT=12TOSC),程式跳躍指令3,CJNE A, direct, rel CJNE A, 30H, LOOP1CJNE A, #data, relCJNE A, #30H, LOOP1CJNE Rn, #da
31、ta, relCJNE R2, 30H, LOOP1CJNE @Ri, #data, rel CJNE @R1, #30H, LOOP1,有條件跳躍4,JC relJC LOOP1JNC relJNC LOOP1JB bit, relJB PSW.5, LOOP1JNB bit, relJNB 25H.5, LOOP1JBC bit, relJBC PSW.5, LOOP1,布林運(yùn)算指令,CLR C?
32、CY=0CLR bitCLR P0.1?P0.1=0CLR PSW.Z?PSW.Z=0SETB C?CY=1SETB bit SETB P1.2?P1.2=1SET TMOD.3? TMOD.3=1,布林運(yùn)算指令,ANL C, bitANL C, P3.1?(CY)=)CY)and P3.1ANL C, /bitANL C, /20H.4ORL C, bitORL C, 23H.4ORL C, /
溫馨提示
- 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ù)僅提供信息存儲(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)論