我用C8051F单片机,其中需要上电判断复位类型如下: 1、电池有电 2、电池没电 3、看门狗或手动复位(MAX706) 4、上电复位 我利用MCU自带的寄存器RSTSRC,控制字中bit1 = 1是上电复位标志。 控制字中bit0 = 1RST引脚复位标志(外部复位) 程序如下; uint rst_type; void Rst_Judge(){ if(rst_type == 0x55aa){//电池有电 if(RSTSRC & 0X01){//外部RST引脚复位(看门狗或手动复位) data_deal(); } else{ read_flash();//读flash数据 } else{//电池没电 rst_type = 0x55aa; if(RSTSRC & 0X02){//上电复位 语句1) read_flash();//读flash数据 } else if(RSTSRC & 0X01){//外部RST引脚复位(看门狗或手动复位) data_deal(); } } 遇到的问题是每次上电都执行不了语句1),也就是RSTSRC一直等于0X01 其中max706 RST和CUP的 RST相连。 706的Vrst = 4.4v,而CPU Vrst = 2.55V. |