51單片機指令集設計實例
當你編寫完一個程序後,通過軟件調試,你可以看到程序的指令集,從指令集你就能知道單片機內部是如何工作的,比如數據存取的寄存器與地址,下麵是ob体育竞彩 找的一篇指令集,講的蠻好的。
一、數據傳送類指令(7種助記符)
MOV(英文為Move):對內部數據寄存器RAM和特殊功能寄存器SFR的數據進行傳送;
MOVC(Move Code)讀取程序存儲器數據表格的數據傳送;
MOVX (Move External RAM) 對外部RAM的數據傳送;
XCH (Exchange) 字節交換;
XCHD (Exchange low-order Digit) 低半字節交換;
PUSH (Push onto Stack) 入棧;
POP (Pop from Stack) 出棧;
二、算術運算類指令(8種助記符)
ADD(Addition) 加法;
ADDC(Add with Carry) 帶進位加法;
SUBB(Subtract with Borrow) 帶借位減法;
DA(Decimal Adjust) 十進製調整;
INC(Increment) 加1;
DEC(Decrement) 減1;
MUL(Multiplication、Multiply) 乘法;
DIV(Division、Divide) 除法;
三、邏輯運算類指令(10種助記符)
ANL(AND Logic) 邏輯與;
ORL(OR Logic) 邏輯或;
XRL(Exclusive-OR Logic) 邏輯異或;
CLR(Clear) 清零;
CPL(Complement) 取反;
RL(Rotate left) 循環左移;
RLC(Rotate Left throught the Carry flag) 帶進位循環左移;
RR(Rotate Right) 循環右移;
RRC (Rotate Right throught the Carry flag) 帶進位循環右移;
SWAP (Swap) 低4位與高4位交換;
四、控製轉移類指令(17種助記符)
ACALL(Absolute subroutine Call)子程序絕對調用;
LCALL(Long subroutine Call)子程序長調用;
RET(Return from subroutine)子程序返回;
RETI(Return from Interruption)中斷返回;
SJMP(Short Jump)短轉移;
AJMP(Absolute Jump)絕對轉移;
LJMP(Long Jump)長轉移;
CJNE (Compare Jump if Not Equal)比較不相等則轉移;
DJNZ (Decrement Jump if Not Zero)減1後不為0則轉移;
JZ (Jump if Zero)結果為0則轉移;
JNZ (Jump if Not Zero) 結果不為0則轉移;
JC (Jump if the Carry flag is set)有進位則轉移;
JNC (Jump if Not Carry)無進位則轉移;
JB (Jump if the Bit is set)位為1則轉移;
JNB (Jump if the Bit is Not set) 位為0則轉移;
JBC(Jump if the Bit is set and Clear the bit) 位為1則轉移,並清除該位;
NOP (No Operation) 空操作;
五、位操作指令(1種助記符)
CLR 位清零;
SETB(Set Bit) 位 置1 。
8種常用偽指令
1.ORG 16位地址 ;
此指令用在原程序或數據塊的開始,指明此語句後麵目標程序或數據塊存放的起始地址。
2.[標號:] DB 字節數據項表;
將項表中的字節數據存放到從標號開始的連續字節單元中。例如:SEG: DB 88H,100,“7”,“C”
3.[標號:]DW 雙字節數據項表;
定義16位地址表,16地址按低位地址存低位字節,高位地址存高位字節。
例如:TAB: DW 1234H,7BH
4.名字 EQU 表達式 或名字=表達式;
用與給一個表達式賦值或給字符串起名字。之後名字可用做程序地址,數據地址或立即數地址使用。名字必須是一字母開頭的字母數字串。
例如:COUNT=10 或 SPACE EQU 10H
5.名字 DATA 直接字節地址;
給8位內部RAM單元起個名字,名字必須是一字母開頭的字母數字串。同一單元可起多個名字。
例如:ERROR DATA 80H
6.名字 XDATA 直接字節地址;
給8位外部RAM起個名字,名字規定同DATA偽指令。
例如:IO_PORT XDATA 0CF04H
7.名字 BIT 位指令;
給一可位尋址的位單元起個名字,規定同DATA偽指令。
例如:SWT BIT 30H
8.[標號:] END;
指出源程序到此結束,彙編對其後的程序語句不予理睬。源程序隻在主程序最後使用一個END。
1.數據傳送指令(30條)
MOV A,Rn 寄存器送 A 1 1 E8--EF
MOV A,data 直接字節送A 2 1 E5
MOV A,@Ri 間接RAM 送A 1 1 E6--E7
MOV A,#data 立接數送 A 2 1 74
MOV Rn,A A 送寄存器 1 1 F8--FF
MOV Rn,data 直接數送寄存器 2 2 A8--AF
MOV Rn,#data 立即數送寄存器 2 1 78--7F
MOV data,A A 送直接字節 2 1 F5
MOV data,Rn 寄存器送直接字節 2 1 88—8F
MOV data,data 直接字節送直接字節 3 2 85
MOV data,@Ri 間接 Rn 送直接字節 2 2 86;87
MOV data,#data 立即數送直接字節 3 2 75
MOV @Ri,A A 送間接 Rn 1 2 F6;F7
MOV @Ri,data 直接字節送間接Rn 1 1 A6;A7
MOV @Ri,#data 立即數送間接 Rn 2 2 76;77
MOV DPTR,#data16 16 位常數送數據指針 3 1 90
MOV C,bit 直接位送進位位 2 1 A2
MOV bit,C 進位位送直接位 2 2 92
MOVC A,@A+DPTR A+DPTR 尋址程序存貯字節送 A 3 2 93
MOVC A,@A+PC A+PC 尋址程序存貯字節送A 1 2 83
MOVX A,@Ri 外部數據送A(8 位地址) 1 2 E2;E3
MOVX A,@DPTR 外部數據送A(16 位地址) 1 2 E0
MOVX @Ri,A A 送外部數據(8 位地址) 1 2 F2;F3
MOVX @DPTR,A A 送外部數據(16 位地址) 1 2 F0
PUSH data 直接字節進棧道,SP 加1 2 2 C0
POP data 直接字節出棧,SP 減1 2 2 D0
XCH A,Rn 寄存器與 A 交換 1 1 C8—CF
XCH A,data 直接字節與A 交換 2 1 C5
XCH A,@Ri 間接Rn 與A 交換 1 1 C6;C7
XCHD A,@Ri 間接Rn 與A 低半字節交換 1 1 D6;D7
2.邏輯運算指令(35條)
ANL A,Rn 寄存器與到A 1 1 58—5F
ANL A,data 直接字節與到A 2 1 55
ANL A,@Ri 間接RAM與到A 1 1 56;57
ANL A,#data 立即數與到A 2 1 54
ANL data,A A與到直接字節 2 1 52
ANL data,#data 立即數與到直接字節 3 2 53
ANL C,bit 直接位與到進位位 2 2 82
ANL C,/bit 直接位的反碼與到進位位 2 2 B0
ORL A,Rn 寄存器或到A 1 1 48—4F
ORL A,data 直接字節或到A 2 1 45
ORL A,@Ri 間接RAM或到A 1 1 46;47
ORL A,#data 立即數或到A 2 1 44
ORL data,A A或到直接字節 2 1 42
ORL data,#data 立即數或到直接字節 3 2 43
ORL C,bit 直接位或到進位位 2 2 72
ORL C,/bit 直接位的反碼或到進位位 2 2 A0
XRL A,Rn 寄存器異或到A 1 1 68—6F
XRL A,data 直接字節異或到A 2 1 65
XRL A,@Ri 間接RAM異或到A 1 1 66;67
XRL A,#data 立即數異或到A 2 1 64
XRL data,A A異或到直接字節 2 1 62
XRL data,#data 立即數異或到直接字節 3 2 63
SETB C 進位位置 1 1 1 D3
SETB bit 直接位置 1 2 1 D2
CLR A A清0 1 1 E4
CLR C 進位位清 0 1 1 C3
CLR bit 直接位清 0 2 1 C2
CPL A A求反碼 1 1 F4
CPL C 進位位取反 1 1 B3
CPL bit 直接位取反 2 1 B2
RL A A循環左移一位 1 1 23
RLC A A 帶進位左移一位 1 1 33
RR A A右移一位 1 1 03
RRC A A 帶進位右移一位 1 1 13
SWAP A A 半字節交換 1 1 C4
3.算術運算指令(24條)
ADD A,Rn 寄存器加到A 1 1 28—2F
ADD A,data 直接字節加到A 2 1 25
ADD A,@Ri 間接RAM 加到A 1 1 26;27
ADD A,#data 立即數加到A 2 1 24
ADDC A,Rn 寄存器帶進位加到 A 1 1 38—3F
ADDC A,data 直接字節帶進位加到A 2 1 35
ADDC A,@Ri 間接RAM 帶進位加到A 1 1 36;37
ADDC A,#data 立即數帶進位加到 A 2 1 34
SUBB A,Rn 從A 中減去寄存器和進位 1 1 98—9F
SUBB A,data 從A 中減去直接字節和進位 2 1 95
SUBB A,@Ri 從A 中減去間接RAM 和進位 1 1 96;97
SUBB A,#data 從A 中減去立即數和進位 2 1 94
INC A A加1 1 1 04
INC Rn 寄存器加 1 1 1 08—0F
INC data 直接字節加1 2 1 05
INC @Ri 間接RAM 加1 1 1 06;07
INC DPTR 數據指針加1 1 2 A3
DEC A A減1 1 1 14
DEC Rn 寄存器減 1 1 1 18—1F
DEC data 直接字節減1 2 1 15
DEC @Ri 間接RAM 減1 1 1 16;17
MUL AB A乘B 1 4 A4
DIV AB A被B除 1 4 84
DA A A十進製調整 1 1 D4
4.轉移指令(22條)
AJMP addr 11 絕對轉移 2 2 *1
LJMP addr 16 長轉移 3 2 02
SJMP rel 短轉移 2 2 80
JMP @A+DPTR 相對於DPTR 間接轉移 1 2 73
JZ rel 若A=0 則轉移 2 2 60
JNZ rel 若A≠0 則轉移 2 2 70
JC rel 若C=1 則轉移 2 2 40
JNC rel 若C≠1 則轉移 2 2 50
JB bit,rel 若直接位=1 則轉移 3 2 20
JNB bit,rel 若直接位=0 則轉移 3 2 30
JBC bit,rel 若直接位=1 則轉移且清除 3 2 10
CJNE A,data,rel 直接數與 A 比較,不等轉移 3 2 B5
CJNE A,#data,rel 立即數與 A 比較,不等轉移 3 2 B4
CJNE @Ri,#data,rel 立即數與間接RAM比較,不等轉移 3 2 B6;B7
CJNE Rn,#data,rel 立即數與寄存器比較不等轉移 3 2 B8—BF
DJNZ Rn,rel 寄存器減 1 不為0 轉移 2 2 D8—DF
DJNZ data,rel 直接字節減1 不為 0 轉移 3 2 D5
ACALL addr 11 絕對子程序調用 2 2 *1
LCALL addr 16 子程序調用 3 2 12
RET 子程序調用返回 1 2 22
RETI 中斷程序調用返回 1 2 32
NOP 空操作 1 1 00
智能PID控製參數調試重點參數值 | |
智能PID控製參數調試過程中,由於自整定得到的PID控製參數不一定是最佳值,所以自整定後儀表的控製效果不一定最理想,如不能滿足控製係統的精度要求,可以通過手動設定,微調這幾個參數的值,使係統達到滿意的控製效果。 (1)比例帶P的選取 由於P的大小直接影... |
模糊智能PID溫控器的參數意義 | |
國內生產廠家的PID幾乎都是一樣的原理下麵就說一說模糊智能PID溫控器的參數意義: P:為比例帶,它在PID調節中,輸出控製量的大小與測量值和設定值之間的偏差成比例關係,偏差越大,輸出越大,儀表比例參數P的設定值越大,控製靈敏度越低,穩定性越高;P的設定值越小... |
比武考試題目兩台泵排水係統控製 | |
比武考試的題目,是兩台泵排水係統控製。 要求: 1、水到達中水位時,一個泵開始排水,一個泵排不急,水位上升到高水位時,另一台泵也開始排水,水位下降到中水位時,這台泵停。 2、當水位到達中水位時,一個泵開始排水,水位到達低水位時泵停,當水位再次到... |
行程開關和組合開關的區別 | |
一、行程開關 1、行程開關又稱限位開關,是利用機械運動部件的碰撞或接近來控製其觸頭動作的主令電器,用來控製機械運動部件的行程和變換運動的方向、速度及程序控製。常用形式有按鈕式和轉臂式兩種。按鈕式行程開關與按鈕開關極其類似,不同之處是它依靠機... |
法蘭變送器比普通變送器精度低的原因 | |
普通變送器沒有遠傳密封裝置,被測介質通過導壓管進入測量室。 法蘭變送器在普通變送器基礎上增加遠程密封裝置,基本構成有法蘭膜盒、毛細管、毛細管內填充液。 如何工作?被測介質直接作用在法蘭膜盒上,此刻膜盒發生形變,毛細管內填充液將壓力傳遞到變送... |
- 富士達故障代碼識別
- 風電設備安裝中塔架出現輕微變形的原因及
- 電梯變頻器維護注意事項
- 變頻器出現欠電壓的處理方法
- 變頻器回饋製動電路原理及算法
- 單相交流電機可以用變頻器嗎
- 起動機工作原理
- 給電子愛好者或電氣類專業學生的個人經驗
- 丹佛斯變頻器維修常見故障實例
- 人機界麵設計過程和步驟分類
- 三菱變頻器e700規格參數表
- 西門子變頻器故障代碼F231維修實例
- 壓力傳感器計量檢定方法
- 變頻器專用進線電抗器功能有哪些
- 深川變頻器常見故障維修案例
- 可編程控製器工作原理和信號傳遞過程(從
- abb變頻器報接地故障原因分析
- 西門子變頻器無顯示故障維修實例
- 鼠籠式電機軟起動器參數設置說明
- PT100溫度變送器接線圖及程序設計