當前位置:編程學習大全網 - 源碼下載 - 51單片機指令有哪些啊?

51單片機指令有哪些啊?

MCS-51單片機的指令集

1、數據傳送類指令

助記符 功能說明 字節數 振蕩周期

MOV A,Rn 寄存器內容送入累加器 1 12

MOV A,direct 直接地址單元中的數據送入累加器 2 12

MOV A,@Ri 間接RAM中的數據送入累加器 1 12

MOV A,#data8 8位立即數送入累加器 2 12

MOV Rn,A 累加器內容送入寄存器 1 12

MOV Rn,direct 直接地址單元中的數據送入寄存器 2 24

MOV Rn,#data8 8位立即數送入寄存器 2 12

MOV direct,A 累加器內容送入直接地址單元 2 12

MOV direct,Rn 寄存器內容送入直接地址單元 2 24

MOV direct,direct 直接地址單元中的數據送入直接地址單元 3 24

MOV direct,@Ri 間接RAM中的數據送入直接地址單元 2 24

MOV direct,#data8 8位立即數送入直接地址單元 3 24

MOV @Ri,A 累加器內容送入間接RAM單元 1 12

MOV @Ri,direct 直接地址單元中的數據送入間接RAM單元 2 24

MOV @Ri,#data8 8位立即數送入間接RAM單元 2 12

MOV DPTR,#data16 16位立即數地址送入地址寄存器 3 24

MOVC A,@A+DPTR 以DPTR為基地址變址尋址單元中的數據送入累加器 1 24

MOVC A,@A+PC 以PC為基地址變址尋址單元中的數據送入累加器 1 24

MOVX A,@Ri 外部RAM(8位地址)送入累加器 1 24

MOVX A,@DPTR 外部RAM(16位地址)送入累加器 1 24

MOVX @Ri,A 累加器送入外部RAM(8位地址) 1 24

MOVX @DPTR,A 累加器送入外部RAM(16位地址) 1 24

PUSH direct 直接地址單元中的數據壓入堆棧 2 24

POP DIRECT 堆棧中的數據彈出到直接地址單元 2 24

XCH A,Rn 寄存器與累加器交換 1 12

XCH A,direct 直接地址單元與累加器交換 2 12

XCH A,@Ri 間接RAM與累加器交換 1 12

XCHD A,@Ri 間接RAM與累加器進行低半字節交換 1 12

2、算術操作類指令

助記符 功能說明 字節數 振蕩周期

ADD A,Rn 寄存器內容加到累加器 1 12

ADD A,direct 直接地址單元加到累加器 2 12

ADD A,@Ri 間接RAM內容加到累加器 1 12

ADD A,#data8 8位立即數加到累加器 2 12

ADDC A,Rn 寄存器內容帶進位加到累加器 1 12

ADDC A,dirct 直接地址單元帶進位加到累加器 2 12

ADDC A,@Ri 間接RAM內容帶進位加到累加器 1 12

ADDC A,#data8 8位立即數帶進位加到累加器 2 12

SUBB A,Rn 累加器帶借位減寄存器內容 1 12

SUBB A,dirct 累加器帶借位減直接地址單元 2 12

SUBB A,@Ri 累加器帶借位減間接RAM內容 1 12

SUBB A,#data8 累加器帶借位減8位立即數 2 12

INC A 累加器加1 1 12

INC Rn 寄存器加1 1 12

INC direct 直接地址單元內容加1 2 12

INC @Ri 間接RAM內容加1 1 12

INC DPTR DPTR加1 1 24

DEC A 累加器減1 1 12

DEC Rn 寄存器減1 1 12

DEC direct 直接地址單元內容減1 2 12

DEC @Ri 間接RAM內容減1 1 12

MUL A,B A乘以B 1 48

DIV A,B A除以B 1 48

DA A 累加器進行十進制轉換 1 12

3、邏輯操作類指令

助記符 功能說明 字節數 振蕩周期

ANL A,Rn 累加器與寄存器相“與” 1 12

ANL A,direct 累加器與直接地址單元相“與” 2 12

ANL A,@Ri 累加器與間接RAM內容相“與” 1 12

ANL A,#data8 累加器與8位立即數相“與” 2 12

ANL direct,A 直接地址單元與累加器相“與” 2 12

ANL direct,#data8 直接地址單元與8位立即數相“與” 3 24

ORL A,Rn 累加器與寄存器相“或” 1 12

ORL A,direct 累加器與直接地址單元相“或” 2 12

ORL A,@Ri 累加器與間接RAM內容相“或” 1 12

ORL A,#data8 累加器與8位立即數相“或” 2 12

ORL direct,A 直接地址單元與累加器相“或” 2 12

ORL direct,#data8 直接地址單元與8位立即數相“或” 3 24

XRL A,Rn 累加器與寄存器相“異或” 1 12

XRL A,direct 累加器與直接地址單元相“異或” 2 12

XRL A,@Ri 累加器與間接RAM內容相“異或” 1 12

XRL A,#data8 累加器與8位立即數相“異或” 2 12

XRL direct,A 直接地址單元與累加器相“異或” 2 12

XRL direct,#data8 直接地址單元與8位立即數相“異或” 3 24

CLR A 累加器清0 1 12

CPL A 累加器求反 1 12

RL A 累加器循環左移 1 12

RLC A 累加器帶進位循環左移 1 12

RR A 累加器循環右移 1 12

RRC A 累加器帶進位循環右移 1 12

SWAP A 累加器半字節交換 1 12

4、控制轉移類指令

助記符 功能說明 字節數 振蕩周期

ACALL addr11 絕對短調用子程序 2 24

LACLL addr16 長調用子程序 3 24

RET 子程序返回 1 24

RETI 中斷返回 1 24

AJMP addr11 絕對短轉移 2 24

LJMP addr16 長轉移 3 24

SJMP rel 相對轉移 2 24

JMP @A+DPTR 相對於DPTR的間接轉移 1 24

JZ rel 累加器為零轉移 2 24

JNZ rel 累加器非零轉移 2 24

CJNE A,direct,rel 累加器與直接地址單元比較,不等則轉移 3 24

CJNE A,#data8,rel 累加器與8位立即數比較,不等則轉移 3 24

CJNE Rn,#data8,rel 寄存器與8位立即數比較,不等則轉移 3 24

(相等則執行本指令的下壹條)

CJNE @Ri,#data8,rel 間接RAM單元,不等則轉移 3 24

(但有時還想得知兩數比較之後哪個大,哪個小,

本條指令也具有這樣的功能,如果兩數不相等,

則CPU還會反映出哪個數大,哪個數小,

這是用CY(進位標誌位)來實現的。

如果左邊的數(A,Rn,@Ri)大或者等於右邊的數(direct,#date8),則CY=0;否則CY=1)

DJNZ Rn,rel 寄存器減1,非零轉移 3 24

DJNZ direct,rel 直接地址單元減1,非零轉移 3 24

NOP 空操作 1 12

控制轉移指令***有17條,可分為“無條件轉移指令” “有條件轉移指令” “子程序調用指令” 及 “返回指令”。

5、布爾變量操作類指令

助記符 功能說明 字節數 振蕩周期

CLR C 清進位位 1 12

CLR bit 清直接地址位 2 12

SETB C 置進位位 1 12

SETB bit 置直接地址位 2 12

CPL C 進位位求反 1 12

CPL bit 直接地址位求反 2 12

ANL C,bit 進位位和直接地址位相“與” 2 24

ANL C,/bit 進位位和直接地址位的反碼相“與” 2 24

ORL C,bit 進位位和直接地址位相“或” 2 24

ORL C,/bit 進位位和直接地址位的反碼相“或” 2 24

MOV C,bit 直接地址位送入進位位 2 12

MOV bit,C 進位位送入直接地址位 2 24

JC rel 進位位為1則轉移(CY=O不轉移,=1轉移) 2 24

JNC rel 進位位為0則轉移(和上面相反) 2 24

JB bit,rel 直接地址位為1則轉移 3 24

JNB bit,rel 直接地址位為0則轉移 3 24

JBC bit,rel 直接地址位為1則轉移,該位清零 3 24

偽指令

助記符 功能說明

ORG 設置程序起始地址

END 標誌源代碼結束

EQU 定義常數

SET 定義整型數

DATA 給字節類型符號定值

BYTE 給字節類型符號定值

WROD 給字類型符號定值

BIT 給位地址取名

ALTNAME 用自定義名取代保留字

DB 給壹塊連續的存儲區裝載字節型數據

DW 給壹塊連續的存儲區裝載字型數據

DS 預留壹個連續的存儲區或裝入指定字節。

INCLUDE 將壹個源文件插入程序中

TITLE 列表文件中加入標題行

NOLIST 匯編時不產生列表文件

NOCODE 條件匯編時,條件為假的不產生清單

  • 上一篇:hog特征中文全稱是
  • 下一篇:夢見家人之間分裂
  • copyright 2024編程學習大全網