14832|8

1673

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

上电复位和掉电复位的问题 [复制链接]

先来说掉电复位
掉电复位:在单片机运行过程中电压突然跌落,这个时候单片机会出现很多不确定的现象,所以在这个时候需要将单片机复位,让它处于一个确定的状态。
我手头有个89S52,P3.2(外中断0)上连接了一个电压检测芯片S808,
掉电标志位:掉电标志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上电期间POF置“1”。POF可以软件控制使用,但不受复位影响。

如果掉电S808输出个低电平,引起了INT0外中断,这个复位程序应该怎么写?还要保存数据~
void service_int0()interrupt 0 using 1//外部中断service_int0
{   。。。    }

麻烦高手们给指导下,俺刚学这个~~~
各位是否有类似的C例程,借鉴学习下~~~~~~~~

[ 本帖最后由 simonprince 于 2009-9-28 14:49 编辑 ]

S80830_DataSheet.pdf

672.25 KB, 下载次数: 39

此帖出自单片机论坛

最新回复

这个,式中没有变量,编译器被执行时应已能算出结果,而不是CPU动态计算的。 觉得式子还是这样写出来好,概念清晰,便于维护。 如果要改的话,不妨改成如下形式,更能说明TH0、TL0的上下位关系。使用移位的方法,即使CPU动态算也是很舒服的:  TH0 = -50000 >> 8;  TL0 = -50000;  // ← 再想清晰点可写成: TL0 = -50000 & 0xff; [ 本帖最后由 仙猫 于 2009-10-2 09:34 编辑 ]  详情 回复 发表于 2009-10-2 09:32
点赞 关注(1)
 

回复
举报

1673

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
先占个沙发
一但S808检测到电压低于4.5V,触发中断,在中断服务程序中把数据写到EEPROM中保护起来   
注意: 写一个字节的EEPROM时间,所以不能写入太多数据,电源滤波电容也要选大一些
可是还是不明白复位程序怎么写,这样可以吗?
void service_int0()interrupt 0 using 1//外部中断service_int0
{ flag2==1;
for(;;)
if(p3.2==1)//电压恢复
{...............}???????????????}
main()
{
  U_93C46() ;//调用外数据存储器写程序
。。。

}

[ 本帖最后由 simonprince 于 2009-9-29 10:34 编辑 ]

2009010811521980.bmp (206.33 KB, 下载次数: 2)

2009010811521980.bmp
此帖出自单片机论坛
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

板凳
 
呵呵 复位程序不用写 直接在程序开始的时候运行就可以了
你在程序开始的时候 去读eeprom 做一个标志 是否异常启动还是正常启动
如果异常启动 那么就按照eeprom里面的数据继续操作
您上次问过了这个问题 我建议你使用铁电的FR24C02 速度快 读写次数可达100亿次
而常规的EEPROM不行 数据多 有时候会丢数据
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

4
 
o ~~~~~~呵呵上次没细看,没领悟到您的意思~~
谢谢老练版主的指点,我研究下,整理下思路~~~~~呵呵
此帖出自单片机论坛
 
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

5
 

回复 板凳 njlianjian 的帖子

也就是说,是不是这样
void service_int0()interrupt 0 using 1//外部中断service_int0
{
  flag2=1;
}
void main()
{
  uint i;
  if(flag2==1)
  {B=Read9346(0X00);
  P1=B;}
  else
  {
  flag1=0;
  flag2=0;
  }
  TMOD=0X7F;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;//初值
  ET0=1;
  TR0=1;
  EA=1;
  IP=0X04;
  IE=0X84;//中断设置
此帖出自单片机论坛
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

6
 
呵呵 基本是这样的 不过还是建议一下   
TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;//初值

这个还是自己计算出来吧 单片机已经很辛苦了 我们能节约就节约点吧
此帖出自单片机论坛
 
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

7
 

回复 6楼 njlianjian 的帖子

哈哈~~
谢谢老练版主,接收您的建议
不过我在琢磨电子工程师是不是比单片机还辛苦呀~~
因为我们要负责一个产品从电路的设计到制板再到程序的开发直到调试试产OK:Q

[ 本帖最后由 simonprince 于 2009-9-30 07:16 编辑 ]
此帖出自单片机论坛
 
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

8
 
呵呵 这样更能锻炼人 其实在中国 按照老板的思路 希望一专多能 但是实际上 按照管理的角度 每个人只要做好自己最擅长的事情 并做得最好 再和同事配合好 那就可以了
既然在中国 那就从头做到尾吧
付出的越多 得到的就越多
此帖出自单片机论坛
 
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

9
 
原帖由 njlianjian 于 2009-9-29 22:29 发表
呵呵 基本是这样的 不过还是建议一下   
TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;//初值

这个还是自己计算出来吧 单片机已经很辛苦了 我们能节约就节约点吧

这个,式中没有变量,编译器被执行时应已能算出结果,而不是CPU动态计算的。
觉得式子还是这样写出来好,概念清晰,便于维护。

如果要改的话,不妨改成如下形式,更能说明TH0、TL0的上下位关系。使用移位的方法,即使CPU动态算也是很舒服的:
 TH0 = -50000 >> 8;
 TL0 = -50000;  // ← 再想清晰点可写成: TL0 = -50000 & 0xff;

[ 本帖最后由 仙猫 于 2009-10-2 09:34 编辑 ]
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表