我试图为PIC16F设备执行此操作
clrf BIT
bsf REGISTER,BIT
给出了编译错误。
然而,这样做
clrf BIT
movf BIT,W
bsf REGISTER,W
没有编译错误。
我做得对,还是有聪明的方法来实现它?
答案 0 :(得分:2)
这些代码都不能满足您的需求。位号不允许来自寄存器。它必须是硬编码的数字。
在第一种情况下,汇编程序正确地给出了错误。为什么第二种情况会聚集呢?简单地W
实际上并不是一个寄存器名称,它是用于控制具有方向位的指令的目的地的伪装数字零。因此代码有效地是:
clrf BIT
movf BIT,W
bsf REGISTER,0
巧合的是,您向变量BIT
写入零,然后清除REGISTER
中的位数零。您的代码符合您的预期,但不是出于正确的原因。