开发过程
这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:
单片机试验板
ORG 0000H
LJMP START
ORG 040H
START:
MOV SP,#5FH ;设堆栈
LOOP:
NOP
LJMP LOOP ;循环
END ;结束
单片指令
传送操作
助记符代码 说明
MOV A,Rn E8~EF寄存器A
MOV A,direct E5 direct 直接字节送A
MOV A,@Ri ER~E7 间接RAM送A
MOV A,#data 74 data立即数送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,direct A8~AF direct 直接字节送寄存器
MOV Rn,#data 78~7F data立即数送寄存器
MOV direct,A F5 direct A送直接字节
MOV direct,Rn 88~8F direct 寄存器送直接字节
MOV direct1,direct2 85 direct1 direct2 直接字节送直接字节
MOV direct,@Ro 86~87 间接RAM送直接字节
MOV direct,#data 75 direct data立即数送直接字节
MOV @Ri,A F6~F7 A送间接RAM
MOV @Ri,direct 76~77 direct 直接字节送间接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 direct C0 direct 直接字节进栈,SP加1
POP direct D0 direct 直接字节退栈,SP减1
XCH A,Rn C8~CF 交换A和寄存器
XCH A,direct C5 direct 交换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,direct 25 direct 直接字节加到A
ADD A,@Ri 26~27 间接RAM加到A
ADD A,#data 24data立即数加到A
ADD A,Rn 38~3F 寄存器和进位位加到A
ADD A,direct 35direct 直接字节和进位位加到A
ADD A,@Ri 36~37 间接字节和进位位加到A
ADD A,data 34 data立即数和进位位加到A
ADD A,Rn 98~9F A减去寄存器和进位位
ADD A,direct 95 direct A减去直接字节和进位位
ADD A,@Ri 36~37 间接RAM和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,direct 95 direct 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 direct 05 direct 直接字节加1
INC @Ri 06~07 间接RAM加1
DEC A 14 A减1
DEC Rn 18~1F 寄存器减1
DEC direct 15 direct 直接字节减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,direct 55 direct 直接字节“与”到A
ANL A,@Ri 56~57 间接RAm“与”到A
ANL A,#data 54 data立即数“与”到A
ANL direct A 52 direct A“与”到直接字节
ANL direct,#data 53 direct data立即数“与”到直接字节
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,direct 45 direct 直接字节“或”到A
ORL A,@Ri 46~47 间接RAM“或”到A
ORL A,#data 44 data立即数“或”到A
ORL direct,A 42 direct A“或”到直接字节
ORL direct,#data 43 direct data立即数“或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,direct 65 direct 直接字节“异或”到A
XRL A,@Ri 66~67 间接RAM“异或”到A
XRL A,#data 64 data立即数“异或”到A
XRL direct A 62 direct A“异或”到直接字节
XRL direct,#data 63 direct data立即数“异或”到直接字节
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左环移
RLC A 33 A通过进位左环移
RR A 03 A右环移
RRC A 13 A通过进位右环移
程序转移