開發(fā)過程
這里所說的開發(fā)過程并不是一般書中所說的從任務(wù)分析開始,我們假設(shè)已設(shè)計(jì)并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數(shù)、地址,事實(shí)上這些常數(shù)、地址在設(shè)計(jì)階段已被直接或間接地確定下來了。如當(dāng)某器件的連線設(shè)計(jì)好后,其地址也就被確定了,當(dāng)器件的功能被確定下來后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯(cuò),直到?jīng)]有語法錯(cuò)誤,除了極簡單的程序外,一般應(yīng)用仿真機(jī)對軟件進(jìn)行調(diào)試,直到程序運(yùn)行正確為止。運(yùn)行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴(kuò)展名為HEX的目標(biāo)文件,一般編程器能夠識別這種格式的文件,只要將此文件調(diào)入即可寫片。在此,為使大家對整個(gè)過程有個(gè)認(rèn)識,舉一例說明:
單片機(jī)試驗(yàn)板
ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;設(shè)堆棧
LOOP:
NOP
LJMP LOOP ;循環(huán)
END ;結(jié)束
單片指令
傳送操作
助記符代碼 說明
MOV A,Rn E8~EF寄存器A
MOV A,direct E5 direct 直接字節(jié)送A
MOV A,@Ri ER~E7 間接RAM送A
MOV A,#data 74 data立即數(shù)送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字節(jié)送寄存器
MOV Rn,#data 78~7F data立即數(shù)送寄存器
MOV direct,A F5 direct A送直接字節(jié)
MOV direct,Rn 88~8F direct 寄存器送直接字節(jié)
MOV direct1,direct2 85 direct1 direct2 直接字節(jié)送直接字節(jié)
MOV direct,@Ro 86~87 間接RAM送直接字節(jié)
MOV direct,#data 75 direct data立即數(shù)送直接字節(jié)
MOV @Ri,A F6~F7 A送間接RAM
MOV @Ri,direct 76~77 direct 直接字節(jié)送間接RAM
MOV @Ri,#data 76~77 data 立即數(shù)送間接RAM
MOV DPTR,#data16 90 data 15~8 16位常數(shù)送數(shù)據(jù)指針
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))尋址的程序存貯
器字節(jié)選A
MOVC A,@A+PC 83 由((A)+(PC));尋址的程序存貯器字節(jié)送A
MOVX A,@Ri E2~E3 送外部數(shù)據(jù)(8位地址)送A
MOVX A,@DPTR E0 送外部數(shù)據(jù)(16位地址)送A
MOVX @Ri,A F2~F3 A送外部數(shù)據(jù)(8位地址)
MOVX @DPTR,A F0 A送外部數(shù)據(jù)(16位地址)
PUSH direct C0 direct 直接字節(jié)進(jìn)棧,SP加1
POP direct D0 direct 直接字節(jié)退棧,SP減1
XCH A,Rn C8~CF 交換A和寄存器
XCH A,direct C5 direct 交換A和直接字節(jié)
XCH A,@Ri C6~C7 交換A和間接RAM
XCH A,@Ri D6~D7 交換A和間接RAM的低位
SWAP A C4
算術(shù)操作
(A的二個(gè)半字節(jié)交換)
ADD A,Rn 28~2F 寄存器加到A
ADD A,direct 25 direct 直接字節(jié)加到A
ADD A,@Ri 26~27 間接RAM加到A
ADD A,#data 24data立即數(shù)加到A
ADD A,Rn 38~3F 寄存器和進(jìn)位位加到A
ADD A,direct 35direct 直接字節(jié)和進(jìn)位位加到A
ADD A,@Ri 36~37 間接字節(jié)和進(jìn)位位加到A
ADD A,data 34 data立即數(shù)和進(jìn)位位加到A
ADD A,Rn 98~9F A減去寄存器和進(jìn)位位
ADD A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
ADD A,@Ri 36~37 間接RAM和進(jìn)位位加到A
ADD A,data 34 data 立即數(shù)和進(jìn)位位加到A
SUBB A,Rn 98~9F A減去寄存器和進(jìn)位位
SUBB A,direct 95 direct A減去直接字節(jié)和進(jìn)位位
SUBB A,@Ri 96~97 A減去間接RAM和進(jìn)位位
SUBB A,#data 94 data A減去立即數(shù)和進(jìn)位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC direct 05 direct 直接字節(jié)加1
INC @Ri 06~07 間接RAM加1
DEC A 14 A減1
DEC Rn 18~1F 寄存器減1
DEC direct 15 direct 直接字節(jié)減1
DEC @Ri 16~17 間接RAM減1
INC DPTR A3 數(shù)據(jù)指針加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十進(jìn)制加法調(diào)整
邏輯操作
ANL A,Rn 58~5F 寄存器“與”到A
ANL A,direct 55 direct 直接字節(jié)“與”到A
ANL A,@Ri 56~57 間接RAm“與”到A
ANL A,#data 54 data立即數(shù)“與”到A
ANL direct A 52 direct A“與”到直接字節(jié)
ANL direct,#data 53 direct data立即數(shù)“與”到直接字節(jié)
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字節(jié)“或”到A
ORL A,@Ri 46~47 間接RAM“或”到A
ORL A,#data 44 data立即數(shù)“或”到A
ORL direct,A 42 direct A“或”到直接字節(jié)
ORL direct,#data 43 direct data立即數(shù)“或”到直接字節(jié)
XRL A,Rn 68~6F 寄存器“異或”到A
XRL A,direct 65 direct 直接字節(jié)“異或”到A
XRL A,@Ri 66~67 間接RAM“異或”到A
XRL A,#data 64 data立即數(shù)“異或”到A
XRL direct A 62 direct A“異或”到直接字節(jié)
XRL direct,#data 63 direct data立即數(shù)“異或”到直接字節(jié)
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左環(huán)移
RLC A 33 A通過進(jìn)位左環(huán)移
RR A 03 A右環(huán)移
RRC A 13 A通過進(jìn)位右環(huán)移
程序轉(zhuǎn)移