单片机 CLR 指令的问题

CLR A;是运算指令对字节操作?
为什么不能用来操作位?比如说:
CLR Acc.1等等

可以用来操作位。

单片机中CLR指令其实只有两类、三种用法:

第一类:字节操作:
仅有将A清0一条指令,即:CLR A

第二类:位操作
1、CLR C:将进位标志位CY(即平时所说的C)清零;这是一条独立的指令,只清除C,机器码只有1个字节(0C3H);
2、CLR bit:将位地址为bit的位清0;bit可以是单片机中任意可进行位寻址的位,机器码占两个字节(0C2H,位地址)。

对ACC.1清0使用CLR命令是可以的,因为A的每一位都有相应的位地址,都可以进行位寻址。如果编译有错只能说明编译器不支持ACC.1的写法,你可以尝试直接使用ACC.1的位地址0E1H来替代,即:
CLR 0E1H
肯定是可以的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-15
CLR A是对整个A寄存器清零
如果要对其中某位进行清零,可以使用ANL,比如要对ACC.1清零,用ANL A,#11111101B即可,其他位没有影响
如果要对某位置1,则用ORL即可,比如要对ACC.1置1,用ORL A,#00000010B即可,其他位没有影响

CLR C 是对Cy清零,实实在在的位清零操作

单片机内的指令是由编译器规定好的,有其规则,不同的功能用不同的指令实现即可,不必执着
第2个回答  2011-08-15
CLR是清零的意思啊,对字节对位都可以
第3个回答  2018-01-02
s
第4个回答  2011-08-15
不是每个寄存器都支持位操作的
相似回答