我正在使用此说明:
DEC COUNT
MOVF COUNT,w
BSF PORTB,w
我收到以下错误:
Symbol not previously defined (W)
当然是注册w。
答案 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
...