请教显示时序问题

[复制链接]
3035|11
 楼主| shuidi_wangdan 发表于 2013-4-26 10:39 | 显示全部楼层 |阅读模式
本帖最后由 shuidi_wangdan 于 2013-4-26 11:27 编辑

我自己做了一个12864液晶显示程序,我自己做了一个连接其他设备时的一个动态画面,发现一个现象,当我的主循环在100微妙时,动态画面会缺少一部分,扫描不全,当我把主循环改为5毫秒时,显示正常了,我用定时器改变画面的变化,定时器为10毫秒,请高手指点!!!在线等!!!
NE5532 发表于 2013-4-26 11:13 | 显示全部楼层
主循环里有些什么内容?怎么控制主循环时间5mS,10mS的??
 楼主| shuidi_wangdan 发表于 2013-4-26 11:24 | 显示全部楼层
本帖最后由 shuidi_wangdan 于 2013-4-26 11:30 编辑
NE5532 发表于 2013-4-26 11:13
主循环里有些什么内容?怎么控制主循环时间5mS,10mS的??


循环一次的时间,主循环里是检测按键的,只检测按键需要100us,这时候显示有问题,如果我在主循环里加一个显示数字的函数,主循环就变为5ms,这时候显示正常,画面中不缺少任何东西!定时器定时是10ms,我在定时器里改变换画面变化的状态.
 楼主| shuidi_wangdan 发表于 2013-4-26 13:32 | 显示全部楼层
这个问题真急死我了,单步执行还真费劲,
NE5532 发表于 2013-4-26 14:49 | 显示全部楼层
主循环里有什么程序参与了显示的?比如查字库,查表,装配数据包之类?
mohanwei 发表于 2013-4-26 15:51 | 显示全部楼层
搜一下:临界区、volatile……
 楼主| shuidi_wangdan 发表于 2013-4-26 16:15 | 显示全部楼层
我单步调试了一下,发现全局变量在定时器中被赋值以后,在主循环里的值是零了,不知道数据是怎么丢失的,我还在查找中........................
 楼主| shuidi_wangdan 发表于 2013-4-26 16:44 | 显示全部楼层
本帖最后由 shuidi_wangdan 于 2013-4-26 16:48 编辑

问题找到了,我定义了一个全局变量angle_staus,angle_staus是在定时器中被赋值,我在主循环中检测变量angle_staus状态时用了switch语句,我在变量angle_staus没有相等的值时,就default :angle_staus=0;,所以当在此语句之前定时器中断发生,虽然在中断里angle_staus被复值了,但定时器退出时,接着angle_staus就被清零了,所以才出现了动态显示不完整的现象,谢谢老师们!!
杨爱林林 发表于 2013-4-26 17:17 | 显示全部楼层
6楼一语道破
 楼主| shuidi_wangdan 发表于 2013-4-27 08:24 | 显示全部楼层
杨爱林林 发表于 2013-4-26 17:17
6楼一语道破

我不太理解6楼的意思,您能给讲解一下吗?谢谢!!
杨爱林林 发表于 2013-4-27 08:45 | 显示全部楼层
你定义的全局变量angle_staus
但是你在main里面用它的过程中
angle_staus发生意想不到的改变(此处 你的中断改变了angle_staus的值)
 楼主| shuidi_wangdan 发表于 2013-4-27 08:51 | 显示全部楼层
杨爱林林 发表于 2013-4-27 08:45
你定义的全局变量angle_staus
但是你在main里面用它的过程中
angle_staus发生意想不到的改变(此处 你的中 ...

谢谢,确实是这样,受益了,以后要注意这方面了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奇葩满天下,不分你我他! 奋斗!https://bbs.21ic.com/static/image/smiley/chubby/17.gif[/url]

65

主题

549

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部