关于PIC 单片机 Timer0的问题

2020-02-09 11:27发布

最近在调试LCD,然后用到定时器,遇到这样的问题,还请各位高手指导,小弟先行谢过了。
问题如下:
    定时器定时200ms,主函数程序执行200ms时然后进入中断,执行中断程序,执行完就又返回到主函数里接着执行,
此时,问题就出现了,在LCD上显示的东西就乱了。
  一直不知道什么问题。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
lffpga
1楼-- · 2020-02-10 16:18
 精彩回答 2  元偷偷看……
eduhf_123
2楼-- · 2020-02-10 18:11
关于状态机,请参考本坛中马潮老师的帖子跟书、还有傻孩子的帖子。
另外,请阅读《时间触发嵌入式系统设计》这本书。
lffpga
3楼-- · 2020-02-10 19:08
回复【8楼】eduhf_123 经历
-----------------------------------------------------------------------

  你好!谢谢你的耐心的指导,程序现在可以正常运行了。真的十分感谢!

  我是按照你说的第二种方法写的,因为我在处理按键的时候就是以这种方法来的,但是好像不是用的状态机扫描,
因为,在单片机中我对状态机好像没有概念。

程序大概这个样子:
while(1)
{
   1、按键扫描;
   2、if(按键标志)
      按键处理;
   4、if(中断标志)
      中断处理。
}

还有我想问一下:
1、用状态机是不是比较稳定?我笨想,就是好像不用去抖动。它只能从上一个状态跳到下一个状态。
2、就您给我建议的这两种按键扫描的方法,有没有什么意义?
   比如说,什么情况下用第一种,什么情况下用第二种?或者说由自己决定,就是设计的时候是用的中断,然后就用中断
扫描。再或者是对时间要求比较严格的时候用中断扫描(以为,我认为中断扫描比状态机的快)。
3、您在这两种方法中都说要在while(1)之前清中断标志,然后再开中断,我对着不是很清楚,还请您给解释一下。

直到你给我回帖,我才知道,我来这个论坛这么长时间了,都没有去过 马潮老师和傻孩子的帖子的那个地方。很是遗憾,
以后得经常光顾一下了。
你说的《时间触发嵌入式系统设计》这本书就是《时间触发嵌入式系统设计模式:使用8051微控制器开发可靠应用》这本书吧?

这的谢谢你,能这么及时、细心,耐心的指导。再次感谢!
eduhf_123
4楼-- · 2020-02-10 21:55
1、用状态机是不是比较稳定?我笨想,就是好像不用去抖动。它只能从上一个状态跳到下一个状态。
-----------------
关于状态机,《时间触发嵌入式系统设计》这本书以及马老师跟傻孩子的帖子中有很多很详细的讨论,你看过就能有自己的看法了。


2、就您给我建议的这两种按键扫描的方法,有没有什么意义?
   比如说,什么情况下用第一种,什么情况下用第二种?或者说由自己决定,就是设计的时候是用的中断,然后就用中断
扫描。再或者是对时间要求比较严格的时候用中断扫描(以为,我认为中断扫描比状态机的快)。
-----------------
通常来说,只有在系统对按键响应的实时性要求非常高的时候,才需要用中断来实现;其他场合都可以用时间片+状态机的方式来实现。
毕竟,中断向量的跳转与返回、中断入口的现场保护、出口的现场恢复等等这些都是要占用代码空间和运行时间的。


3、您在这两种方法中都说要在while(1)之前清中断标志,然后再开中断,我对着不是很清楚,还请您给解释一下。
-----------------
因为在初始化过程中,可能已经发生了一些中断、对应的中断标志已经置位了,在开总中断允许之前,应该先清除这些中断标志,然后再开中断允许。
lffpga
5楼-- · 2020-02-11 01:07
回复【10楼】eduhf_123 经历
-----------------------------------------------------------------------

哦,那好的,我知道了,谢谢你!
我再看看资料,然后继续写我的程序了。
coolwater
6楼-- · 2020-02-11 05:19
 精彩回答 2  元偷偷看……

一周热门 更多>