1 往期链接
2 STC89C52汇编指令
1.setb p1.0 ;p1.0=1
clr c ;c=0
cpl c ;c=~c 位反转
2.AJMP main ;直接跳转到main标号处
------控制转移指令----------
3.djnz 51h,$ ;将地址中的数据减去1,若结果不为0,则跳转
jz rel ;若a=0,则跳转
jnz rel ;若a!=0,则跳转
cjne a,direct,rel ;比较转移指令:若a!=direct,则跳转
djnz direct,rel ;direct-1:若结果不为0,则跳转
--------------下列三者的区别----------------
lcall loop1(长调用子程序)
--子程序调用,子程序执行完通过RET返回到lcall指令的下一条指令继续执行;
ljmp loop2(无条件长转移)
---程序地址范围超过2K时要用的长跳转指令;
ajmp loop3(无条件绝对转移)
------------下列转移的区别-------------------
JB bit,rel ;若直接寻址位为1,则转移
JNB bit,rel;若直接寻址位为0,则转移
JBC bit,rel ;若直接寻址位为1,则转移并且清除该位;
-----------------------------------------------
4.ret ;子程序返回指令
***ret返回调用该子程序的指令,并从其下一条指令开始执行
reti ;中断返回指令
5.51压栈和出栈 (操作数是8位长度)
push direct
pop direct
6.Inc a ;加1指令 a+1
dec a ;减1指令 a-1
7.mul A B ; B:A=A*B
DIV A B ; A=商, B=余数
8.$ 代表当前指令的地址
在字符串是结束标志
9.循环移位指令
RL A ;累加器A循环左移一位
RLC A ;累加器A带进位标志循环左移一位
RR A:累加器A循环右移一位
RRC A:累加器A带进位标志循环右移一位
10.逻辑操作指令
ANL A,Rn ;将A和Rn中内容相与,结果送A
ORl A,Rn ;将A和Rn中内容相或,结果送A
XRL A,Rn ;A和Rn中内容相异或,结果送A
CLR A ;A中内容清0
CPL A ;A中内容取反
----------------------------------------
CON EQU 0d8f0h;(65536-55536) ;定时0.01s
EQU 如果操作数是十进制,则转换出来的定时时间,可能很长;
因为单片机要将十进制转换成十六进制,会花费很长时间!
-----------keil查看内存-----------
d:0 直接寻址的内部RAM
i:o 间接寻址的片内RAM
x:0 扩展的外部RAM
c:0 扩展到内部ROM
----------寻址方式---------------
1.寄存器寻址
mov a,r0;将寄存器r0中的内容送a
2.立即寻址
mov a,#00h;将立即数00h送累加器A
3.直接寻址
mov 31h,30h;将30h单元中的内容送31h单元
4.寄存器间接寻址(只能是R0和R1作为地址指针来寻址内部RAM:00h-0ffh)
mov a,@R0 ;将R0指向的内部RAM单元的内容送累加器A
5.相对寻址
JC rel ;目的地址=源地址+rel+跳转指令字节长度(2/3)
6.变址寻址(基址寄存器+变址寄存器间接寻址)
注释:51中使用DPTR或者PC作为基址寄存器,累加器A作为变址寄存器;
movc a,@a+DPTR ; 将a和DPTR中的内容相加,作为地址单元,并将该地址单元中的数据送a
7.位寻址
CLR bit(位地址)
注释:51单片机中有两部分可以作为位寻址:20h-2fh,和字节地址能被8整除的特殊功能寄存器
----------51单片机内部寄存器和RAM结构----------------
1.单片机16bit寄存器:
PC程序计数器、DPTR数据指针(DPH、DPL)
2.普通寄存器
A累加器、B寄存器(常作为乘法:结果高字节和除法:余数的寄存器)
PSW:程序状态字:反应程序的状态信息
3.寄存器区选择控制位
X区=(RS1:RS2)
每个寄存器区分为8个字节单元,每个区的每个字节单元对应一个寄存器(R0-R7)
四个区一共32组寄存器单元,RAM内存地址为:00H--1FH
(其中R1和R0也可作为寄存器间接寻址的寄存器)
4.堆栈指针SP
是一个8bit专用寄存器,它指出栈顶内部在内部RAM中的位置;
系统初始化SP=07H
5.端口P0-P3
分别是I/O端口的P0-P3锁存器
6.串行数据缓冲器
SBUF:实际上有两个,分为数据接收缓冲器和数据发送缓冲器
——2020.08.06——