请问PIC单片机上电复位后内部通用寄存器随机值的问题

2020-02-08 09:25发布

下面这段程序是车载控制器里的一段清除通用寄存器的程序,当上电后,假如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       ;

                              .
                              .
                              .
                              .
0条回答

一周热门 更多>