3683|6

252

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

请教高手STC单片机中的疑问 [复制链接]

STC单片机EEPROM读写程序中在执行读、写或擦除前后为什么都要先进行关中断(EA=0),再进行开中断(EA=1)?可不可以省掉这两个步骤?

说明:我有这样一个光源(前几天我的一个帖子上请教的一个光源),这个光源的是PWM调光,采用单片机是STC12CLE5A48S2,定时器0用来作为PCA的时钟输入源,使PCA产生1KHz PWM的方波,定时器0的初始化程序是:

void Initial_timer0(void)  
{  
    AUXR = 0x80;   //T0为1T模式
    TMOD = 0x01;   // T0为模式1 
    TH0 = (65536 - 26) / 256;  //使PCA产生1KHzPWM波
    TL0 = (65536 - 26) % 256;
    EA = 1;
    ET0 = 1;
    TR0 = 1; 
}

以及定时器0中断程序是:

void timer0_int (void) interrupt 1 using 1  
{  
    TH0 = (65536 - 26) / 256;  
    TL0 = (65536 - 26) % 256;      
}

光源通过上下键调节PWM的占空比来调节光源的亮度,当光源有上键或者下键按下时都会调用EEPROM写程序(保存光源的亮度值)。

实践中的疑问:当屏蔽EEPROM写程序是,有上键或下键按下时,光源能够正常的变亮或变暗;当不屏蔽EEPROM写程序是,有上键或下键按下时,光源都会闪烁一下再变亮或变暗。

自我分析:EEPROM写程序中有关中断,而且EEPROM执行时间比较长,导致定时器0不能调用定时器0中断程序,所以在EEPROM执行时间里定时器0不能使PCA产生1KHz的方波,产生一个频率远低于1KHz的方波,从而导致人眼能看到闪烁一下,当EEPROM写程序执行完成并且也没有按键按下时,又一切恢复正常,产生1KHz的方波,光源正常显示。

请高手们帮忙分析一下是否是这样的一个过程,能否把关中断和开中断这两个步骤去掉?谢谢喽

 

此帖出自单片机论坛

最新回复

不用关中断也可以;增加关中断是提高可靠性; STC写入内部EEPROM(实际上是FLASH)会挂起MCU,因此EA的影响不大,要想完美的话需要外接E2P或换芯片,或在断电前写入E2P;  详情 回复 发表于 2011-10-22 21:17
点赞 关注
 

回复
举报

1469

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
估计是因为防止在写数据的时候被打断吧,那样的话可能会造成写入错误,严重了有可能写到程序代码的存储空间去,那样你的程序就完了

我也是猜的,等高手来详细解答吧
此帖出自单片机论坛
 
 

回复

165

帖子

2

TA的资源

纯净的硅(高级)

板凳
 

回复 楼主 whwshiyuan1984 的帖子

写EEPROM数据需要一定的时序操作,关闭中断就是防止中断导致EEPROM数据写入读取错误。个人认为
此帖出自单片机论坛
 
 
 

回复

1万

帖子

16

TA的资源

版主

4
 

怕别的中断打扰

此帖出自单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1万

帖子

16

TA的资源

版主

5
 

楼主分析的完全正确

此帖出自单片机论坛
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

6
 
楼主一口气敲了那么多的字符,不如省下敲字符的时间自己试试,就一关中断开中断而已,不久知道结论了?
此帖出自单片机论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(高级)

7
 
不用关中断也可以;增加关中断是提高可靠性;
STC写入内部EEPROM(实际上是FLASH)会挂起MCU,因此EA的影响不大,要想完美的话需要外接E2P或换芯片,或在断电前写入E2P;
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表