关于51单片机的位寻址问题在51单片机
寄存器地址与特殊功能寄存器位地址不能混为一谈。
P0寄存器的字节地址是80H,
P0寄存器中P0。0∽P0。7对应的位地址是80∽87H。
P0。0的位地址是80H。
虽然同样是80H,但意义完全不一样。 采用的操作指令也不同,不会混淆。
例如:
清零指令:
P0。0清零的汇编指令是 CLR P0。0 , 机器码是 C2 80
而P0清零的汇编指令是 MOV P0,#00H 机器码是 75 80 00
[当然,P0清零时肯定P0。 0也清零,但反之不成立]
累加器A(E0H)清零的汇编指令是 CLR A , 机器码是 E4
Acc。0(E0H)清零的汇编指令是 CLR Acc。1...全部
寄存器地址与特殊功能寄存器位地址不能混为一谈。
P0寄存器的字节地址是80H,
P0寄存器中P0。0∽P0。7对应的位地址是80∽87H。
P0。0的位地址是80H。
虽然同样是80H,但意义完全不一样。
采用的操作指令也不同,不会混淆。
例如:
清零指令:
P0。0清零的汇编指令是 CLR P0。0 , 机器码是 C2 80
而P0清零的汇编指令是 MOV P0,#00H 机器码是 75 80 00
[当然,P0清零时肯定P0。
0也清零,但反之不成立]
累加器A(E0H)清零的汇编指令是 CLR A , 机器码是 E4
Acc。0(E0H)清零的汇编指令是 CLR Acc。1 ,机器码是 C2 E0
传送指令:
将P0的内容(8位)传送到A:MOV A,P0---E5 80
将P0。
0的内容(1位)传送到标志位C:MOV C,80H---92 80
可以看出,51单片机可以对一位数据进行位操作处理,
而字节操作是对8位的字节同时处理。
字节操作与位操作对象不同、处理方法不同、指令不同、机器码也不同,不会混淆。
补充:
没有直接 CLR Po的指令。字节直接清零仅累加器A(字节地址E0H)可以,使用 CLR A指令(机器码E4)。
位操作与字节操作是根据使用要求而定,如果要控制一个开关,当然是使用位操作方便、快捷、节省资源,如果进行大容量数据计算,必须使用字节操作。
字节操作当然影响其中的位。但当我们仅需要其中一位工作时,何必费时、费力、浪费资源进行字节操作?
。收起