过程原理明白后我们就可以着手编写直接的初始化代码,结合上电标志即可满足复位运行不清零 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)
- {
- // 添加自己的代码
- }
- }
|