下面这段程序是车载控制器里的一段清除通用寄存器的程序,当上电后,假如61H和62H的内容同时分别为0AAH和55H时,不对通用寄存器进行清除,否则清除从20H到70H的通用寄存器
请问执行了下面这段程序后,为什么49H的内容里的bit7位还是1?整个程序就只在这里对49H的bit7位进行了操作,其他任何地方都没有改变49H的bit7的值,当控制器断电后重新上电,问题再也没有发生。47H和48H也有不同的几率出现同样的问题,也可能其它位也有清除不掉的问题,只是其他位会在后面的程序里进行修改所以没有发现。
.
.
.
.
MOVLW 0AAH ;
SUBWF 61H,W ;
BTFSS STATUS,Z ;
GOTO CLRRAM ;
MOVLW 55H ;
SUBWF 62H,W ;
BTFSC STATUS,Z ;
GOTO DATA_INI ;
CLRRAM:
MOVLW 20H ;
MOVWF FSR ;
CLRRAM0 CLRF INDF ;
INCF FSR,F ;
MOVLW 070H ;
SUBWF FSR,W ;
BTFSS STATUS,CARRY ;
GOTO CLRRAM0 ;
DATA_INI:
M0VLW 0AAH ;
MOVWF 61H ;
MOVLW 55H ;
MOVWF 62H ;
.
.
.
.
一周热门 更多>