掉电保护程序

掉电保护程序,第1张

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

bit write=0; //写24C02的标志;

sbit sda=P2^0;

sbit scl=P2^1;

sbit dula=P2^6;

sbit wela=P2^7;

uchar sec,tcnt;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay()

{ ;; }

void delay1ms(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void start() //开始信号

{

sda=1;

delay();

scl=1;

delay();

sda=0;

delay();

}

void stop() //停止

{

sda=0;

delay();

scl=1;

delay();

sda=1;

delay();

}

void respons() //应答

{

uchar i;

scl=1;

delay();

while((sda==1)&&(i<250))i++;

scl=0;

delay();

}

void init()

{

sda=1;

delay();

scl=1;

delay();

}

void write_byte(uchar date)

{

uchar i,temp;

temp=date;

for(i=0;i<8;i++)

{

temp=temp<<1;

scl=0;

delay();

sda=CY;

delay();

scl=1;

delay();

}

scl=0;

delay();

sda=1;

delay();

}

uchar read_byte()

{

uchar i,k;

scl=0;

delay();

sda=1;

delay();

for(i=0;i<8;i++)

{

scl=1;

delay();

k=(k<<1)|sda;

scl=0;

delay();

}

return k;

}

void write_add(uchar address,uchar date)

{

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

write_byte(date);

respons();

stop();

}

uchar read_add(uchar address)

{

uchar date;

start();

write_byte(0xa0);

respons();

write_byte(address);

respons();

start();

write_byte(0xa1);

respons();

date=read_byte();

stop();

return date;

}

void display(uchar bai_c,uchar sh_c) //显示程序

{

dula=0;

P0=table[bai_c]; //显示第一位

dula=1;

dula=0;

wela=0;

P0=0x7e;

wela=1;

wela=0;

delay1ms(5);

dula=0;

P0=table[sh_c]; //显示第二位

dula=1;

dula=0;

wela=0;

P0=0x7d;

wela=1;

wela=0;

delay1ms(5);

}

void main()

{

init();

sec=read_add(2); //读出保存的数据赋于sec

if(sec>100) //防止首次读取出错误数据

sec=0;

TMOD=0x01; //定时器工作在方式1

ET0=1;

EA=1;

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //使定时器005秒中断一次

TR0=1; //开始计时

while(1)

{

display(sec/10,sec%10);

if(write==1) //判断计时器是否计时一秒

{

write=0; //清零

write_add(2,sec); //在24c02的地址2中写入数据sec

}

}

}

void t0() interrupt 1 //定时中断服务函数

{

TH0=(65536-50000)/256; //对TH0 TL0赋值

TL0=(65536-50000)%256; //重装计数初值

tcnt++; //每过50ms tcnt加一

if(tcnt==20) //计满20次(1秒)时

{

tcnt=0; //重新再计

sec++;

write=1; //1秒写一次24C02

if(sec==100) //定时100秒,再从零开始计时

sec=0;

}

}

掉电时不会到flash中运行程序。掉电时,计算机的电源突然中断,计算机中的所有程序都会停止运行,而且所有的数据都会丢失,在这种情况下,计算机的BIOS芯片上的程序将会被激活,而不是Flash中的程序。

使用仿真器烧写app并且仿真是直接运行的app,没有经过IAP跳转。掉电后重新上电运行app则要通过IAP进行跳转。

说白了,那你的IAP存在bug,多半是逻辑上的,自己在IAP里面多看看吧,找找原因。

您好:

根据描述,建议您尝试以下 *** 作来减少电池损耗:

1、在不用设备时,可以通过按下电源键切换到休眠模式

2、通过任务管理器(常按HOME键两秒)关闭不必要的应用程序

3、关闭蓝牙和WLAN功能

4、减少背景灯时间

5、调低显示屏的亮

若以上 *** 作后手机依然耗电不正常,那么请您携带购机发票、三包凭证和手机联系三星服务中心由工程师检测。

三星服务中心具体位置请点击以下链接:

>

欢迎您访问三星数字服务平台:>

手机发热是设计问题也是使用问题,苹果的设计我们就不讨论,应该是手机行业里面设计最强的,那就只有使用问题了,以下解决问题供你参考:

升级最新系统,新系统会优化各个部件的协调功能,对散热也有帮助的;

减少长时间玩游戏或者看视频, CPU高速运转热量是无法避免的;

在空调房或者温度较低的地方使用手机有利于装热量快速散发;

最后一条,买个风扇,一边用一边吹哈哈

不知道你说的是S7-200的还是S7-300的。

就S7-300来说,如果是新型号的,使用MMC卡的不同担心断电后程序丢失,如果是老型号的用大卡的,在电池没电的时候要注意这个问题,正确更换电池的方法是在PLC上电启动的时候更换。

就S7-200来说,使用电容保持程序,有时间限制,一般也就7天。

不断电重启的办法就是,用装有STEP7的电脑连接你的PLC,然后用STEP7中的停止启动键重启PLC。

你同事担心的也许不是程序丢失,而是运行参数丢失。如何保护运行参数要在程序编写的时候就考虑好要保护的运行参数然后加以保护。

以上就是关于掉电保护程序全部的内容,包括:掉电保护程序、掉电时会到flash中运行程序吗、Stm32里用IAP方式烧程序正常,但是发现掉电再上电之后,程序好像就不进主程序了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9484453.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存