再问点阵模块乱点

hallowwar 2010-06-17 04:40:43

前几天问了点阵的这个问题:
http://topic.csdn.net/u/20100609/12/541ac056-8c07-41ce-997b-7ecb02ee281a.html
问题还没得到解决,刚才终于发现了一个模拟,数据接收我改为定时器中断:

void time0() interrupt 1 //外中断0入口服务程序
{
TH0=0xFF; // 20ms
TL0=0xaf;

_nop_();
_nop_();
_nop_();
_nop_();
}


循环动态显示。在while(1)里面。
由于定时中断与数据接收的外部中断频率较为吻合,果然又出现了乱点(并且乱的程度与上电时间成正比)。
现在已经彻底排除了硬件问题的可能。
还望大家讨论讨论,中断函数究竟对ram区有什么影响。
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Peasant_Lee 2010-06-18
  • 打赏
  • 举报
回复
对堆栈会有所影响,毕竟要压栈,保护现场。但是,对于静态存储区,估计没什么影响吧。
hallowwar 2010-06-18
  • 打赏
  • 举报
回复
问题解决了,终于解决了,但是只是一个memset(buff, 0,10)的问题,怎么都不会想到这里啊。
hallowwar 2010-06-18
  • 打赏
  • 举报
回复
 这种问题把全局变量都改为 static 局部变量是解决办法么?
hallowwar 2010-06-18
  • 打赏
  • 举报
回复
这里涉及几个方面的知识:
1. 全局变量和静态数据放在静态存储区,生命周期为从申请到程序退出。因此局部变量若定义为static,则存储在静态存储区,否则存储在函数的栈内,生命周期为本函数内。(如果中断,那么这个变量生命周期就结束了?)
2. 全局变量和局部变量的作用域,全局变量为从申请到整个程序结束,局部变量为从申请到本{}范围内。
3. 局部变量对全局变量的屏蔽。若在本函数内定义的变量与全局变量同名,则将全局变量屏蔽,使用时为内部定义的局部变量。
4. 定义为static类型的局部变量,再次进入该函数,可以使用保留的结果。
hallowwar 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 galle 的回复:]

恭喜呀,有时候把=写成==也会出莫名其妙的问题!
我们还是要仔细呀!
[/Quote]
真的是莫名其妙的错误,看上去让你感觉还像高深的错误,一直困扰了很久。小心再小心,查bug真的很痛苦。
galle 2010-06-18
  • 打赏
  • 举报
回复
恭喜呀,有时候把=写成==也会出莫名其妙的问题!
我们还是要仔细呀!

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧