独闷闷网

 找回密码
 立即注册
搜索
查看: 2568|回复: 0
收起左侧

[原创] 51单片机累计定时中断计时时间不准的诡异现象?已解答。

[复制链接]
发表于 2014-10-20 11:23:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ajian_佛山:
我有个问题,以下是原理图和源代码。第5节 LED灯为什么会是这样,程序应该是亮一秒灭一秒。从波形上看时间不准确。为什么会是这样啊?
原理图.jpg
波形图.jpg
  1. void led_flicker() //第三区 LED闪烁应用程序
  2. {
  3.   
  4.   switch(ucLedStep)
  5.   {
  6.      case 0:

  7.            if(uiTimeLedCnt>=const_time_05s) //时间到
  8.            {
  9.              uiTimeLedCnt=0; //时间计数器清零
  10.              led_dr=1;    //让LED亮
  11.              ucLedStep=1; //切换到下一个步骤
  12.            }
  13.            break;
  14.      case 1:
  15.            if(uiTimeLedCnt>=const_time_05s) //时间到
  16.            {
  17.               uiTimeLedCnt=0; //时间计数器清零
  18.               led_dr=0;    //让LED灭
  19.               ucLedStep=0; //返回到上一个步骤
  20.            }
  21.            break;
  22.   }

  23. }
复制代码


鸿哥--深圳:
跟开发的设置环境有关。要调整keil设置环境的Meory Model和Code Rom Size。你截图让我看看你的设置模式。

ajian_佛山:
好的。
原来设置.jpg

鸿哥--深圳:
把code rom size 改成compact模式,再告诉我们效果如何。我等你。

ajian_佛山:
我设置了之后还是这样,没解决问题。

鸿哥--深圳:
再改一下。

ajian_佛山:
改哪里?

鸿哥--深圳:
还是改那里。
改那里.jpg

ajian_佛山:
还是不行。

鸿哥--深圳:
你是用实物开发板还是仿真软件?

ajian_佛山:
仿真软件。

鸿哥--深圳:
这样吧,我现在用实物开发板,和示波器观察一下,一会告诉你结果。

鸿哥--深圳:
实物波形图.jpg
请看我上面在实物硬件学习板上用示波器观察的波形,学习板上用示波器观察时间是正确的,但是你在仿真软件看到的是不正确,说明仿真软件protues跟硬件实物是有差距的。当然,也可能不完全是protues的问题,今天我之所以专门用示波器去观察这段代码,是因为我以前也遇到过一些诡异现象,就是让一个LED灯闪烁,结果时间明显不准确,后来我通过调整keil设置环境的Meory Model和Code Rom Size后就正常了。


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-6-18 09:56 , Processed in 0.147677 second(s), 21 queries .

快速回复 返回顶部 返回列表