W在汇编中注册未定义? - Microchip pic16f84a

时间:2014-10-19 16:53:55

标签: assembly pic

我正在使用此说明:

DEC COUNT
MOVF COUNT,w
BSF PORTB,w

我收到以下错误: Symbol not previously defined (W)当然是注册w。

1 个答案:

答案 0 :(得分:3)

有问题的指示是

BSF PORTB, w

BSF需要一个位数,而不是一个寄存器 - 有趣的是,当切换到大写W时,它会通过汇编程序,但很可能生成其他代码而非预期。使用像

这样的东西
BSF PORTB, 2      ; set bit number 2 (0b00000100)

代替。如果您需要计算位数,则必须手动执行,例如通过旋转指令,如下所示:

    ...
    MOVLW   0b00000001  ; bit 0
    MOVWF   COUNT

Loop:
    MOVFW   COUNT       ; COUNT => W
    MOVWF   PORTB       ; COUNT => PORTB (8 bits!)

    BCF     STATUS, C   ; clear carry
    RLF     COUNT, F    ; shift left COUNT

    BTFSS   STATUS, C   ; eight bits rotated?
    GOTO    Loop        ; no, continue

    ...