㈠ 單片機的冒泡排序時總是出現error 65:access violation的錯誤,請問是怎麼回事呢
jb 10h,main 執行到這句如果條件不成立沒跳轉到main,,那麼順序執行程序地址不明確
改為
jb 10h,main
ajmp $
end
或者
jb 10h,main
ajmp 標號
end
或者
ajmp,main
end
㈡ 單片機指令
單片機指令功能一覽表
助記符 代碼 說明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 dircet 直接位元組送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data 立即數送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,dircet A8~AF dircet 直接位元組送寄存器
MOV Rn,#data 78~7F data 立即數送寄存器
MOV dircet,A F5 dircet A送直接位元組
MOV dircet,Rn 88~8F dircet 寄存器送直接位元組
MOV dircet1,dircet2 85 dircet1 dircet2 直接位元組送直接位元組
MOV dircet,@Ro 86~87 間接RAM送直接位元組
MOV dircet,#data 75 dircet data 立即數送直接位元組
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,#data 76~77 data 直接位元組送間接RAM
MOV @Ri,#data 76~77 data 立即數送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數送數據指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))定址的程序存貯
器位元組選A
MOVC A,@A+PC 83 由((A)+(PC));定址的程序存貯器位元組送A
MOVX A,@Ri E2~E3 送外部數據(8位地址)送A
MOVX A,@DPTR E0 送外部數據(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數據(8位地址)
MOVX @DPTR,A F0 A送外部數據(16位地址)
PUSH dircet C0 dircet 直接位元組進棧,SP加1
POP dircet D0 dircet 直接位元組退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,dircet C5 dircet 交換A和直接位元組
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
算術操作 (A的二個半位元組交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,dircet 25 dircet 直接位元組加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data 立即數加到A
ADD A,Rn 38~3F 寄存器和進位位加到A
ADD A,dircet 35dircet 直接位元組和進位位加到A
ADD A,@Ri 36~37 間接位元組和進位位加到A
ADD A,data 34 data 立即數和進位位加到A
ADD A,Rn 98~9F A減去寄存器和進位位
ADD A,dircet 95 dircet A減去直接位元組和進位位
ADD A,@Ri 36~37 間接RAM和進位位加到A
ADD A,data 34 data 立即數和進位位加到A
SUBB A,Rn 98~9F A減去寄存器和進位位
SUBB A,dircet 95 dircet A減去直接位元組和進位位
SUBB A,@Ri 96~97 A減去間接RAM和進位位
SUBB A,#data 94 data A減去立即數和進位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC dircet 05 dircet 直接位元組加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC dircet 15 dircet 直接位元組減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數據指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進制加法調整
邏輯操作
ANL A,Rn 58~5F 寄存器「與」到A
ANL A,dircet 55 dircet 直接位元組「與」到A
ANL A,@Ri 56~57 間接RAm「與」到A
ANL A,#data 54 data 立即數「與」到A
ANL dircet A 52 dircet A「與」到直接位元組
ANL dircet,#data 53 dircet data 立即數「與」到直接位元組
ORL A,Rn 48~4F 寄存器「或」到A
ORL A,dircet 45 dircet 直接位元組「或」到A
ORL A,@Ri 46~47 間接RAM「或」到A
ORL A,#data 44 data 立即數「或」到A
ORL dircet,A 42 dircet A「或」到直接位元組
ORL dircet,#data 43 dircet data 立即數「或」到直接位元組
XRL A,Rn 68~6F 寄存器「異或」到A
XRL A,dircet 65 dircet 直接位元組「異或」到A
XRL A,@Ri 66~67 間接RAM「異或」到A
XRL A,#data 64 data 立即數「異或」到A
XRL dircet A 62 dircet A「異或」到直接位元組
XRL dircet,#data 63 dircet data 立即數「異或」到直接位元組
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環移
RLC A 33 A通過進位左環移
RR A 03 A右環移
RRC A 13 A通過進位右環移
控製程序轉移
ACALL addr 11 *1 addr(a7~a0) 絕對子程序調用
LCALL addr 16 12 addr(15~8) 長子程序調用
addr(7~0)
RET 22 子程序調用返回
RETI addr 11 32 中斷調用返回
AJMP addr 11 △1 addr(a7~a6) 絕對轉移
LJMP addr 16 02addr(15~8) 長轉移
addr(7~0)
SJMP rel 80 rel 短轉移,相對轉移
JMP @A+DPTR 73 相對於DPTR間接轉移
JZ rel 60 rel A為零轉移
JNZ rel 70 rel A為零轉移
CJNE A,dircet,rel B5 dircet rel 直接位元組與A比較,不等則轉移
CJNE A,#data,rel B4 data rel 立即數與A比較,不等則轉移
CJNE A,Rn,#data,rel B8~BF data rel 立即數與寄存器比較,不等則轉移
CJNE @Ri,#data,rel B6~B7 data rel 立即數與間接RAM比較,不等則轉移
DJNZ Rn,rel D8~DF rel 寄存器減1,不為零則轉移
DJNZ dircet,rel B5 dircet rel 直接位元組減1,不為零則轉移
NOP 00 空操作
*=a10a9a8l
△=a10a9a80
布爾變數操作
CLR C C3 清零進位
CLR bit C2 清零直接位
SETB C D3 置位進位
SETB bit D2 置位直接位
CPL C B3 進位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接數「與」到進位
ANL C,/bit B0 直接位的反「與」到進位
ORL C,bit 72 bit 直接位「或」到進位
ORL C,/bit A0 bit 直接位的反「或」到進位
MOV C,bit A2 bit 直接位送進位
MOV bit,C 92 bit 進位送直接位
JC rel 40 rel 進位位為1轉移
JNC rel 50 rel 進位位為0轉移
JB bit,rel 20 bit rel 直接位為1相對轉移
JNB bit,rel 30 bit rel 直接位為0相對轉移
JBC bit,rel 10 bit rel 直接位為1相對轉移,然後清零該位
㈢ 單片機將立即數65H送入內部RAM30H單元,用立即定址、直接定址寄存器定址寄存器間址怎麼做 啊 !
立即定址:MOV A,#65H
MOV 30H,A
直接定址:MOV 30H,#65H
寄存器定址:MOV R0,#65H
MOV 30H,R0
寄存器間接定址:
MOV R0,#65H
MOV 30H,@R0
㈣ 我們單片機老師說 十進制65就等於符號A,而A就等於41H,那麼這個65為什麼等於41H 怎麼算的
65是十進制數
41H是十六進制數
65換算成16進制數是這么算的
65/16=4餘1,所以十六進制數是41H