过程原理明白后我们就可以着手编写直接的初始化代码,结合上电标志即可满足复位运行不清零 RAM 的需求,参考示例代码如下。
unsigned char i;
//unsigned char i=200; 赋值失败
// 空函数,使编译器结果对RAM不作为
void _gsinit_startup()
{ }
// 手动上电复位下RAM初始值处理
void user_init_ram()
{
i=200;
}
//主函数
void main()
{
if(POR&&LVR==0)// 非上电复位下的 欠压复位
{
LVR=1;// 可继续监听欠压复位
}
if(POR==0) //上电复位标志
{
POR=1;
SLVREN=1;// 默认状态为开
LVR=1; // 可接受欠压复位标志
user_init_ram();
}
//===============================
init_mcu(); // 功能初始化
while(1)
{
// 添加自己的代码
}
}
|