打印

430的一个中断问题

[复制链接]
614|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
迪卡|  楼主 | 2016-1-21 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用TIMERA0实现1s中断,在中断函数里做一个3S到达判断,然后对P2端口状态取反(LED显示)
运行结果:当直接在中断函数内对端口对端口状态取反时,运行正常。(注:在主函数内执行了P2OUT = 0XFF;这句时,LED灯亮的时间极短,远不到一秒)当在中断函数内添加了IF判断语句后,端口无反应。找了几天也没有找到原因

相关帖子

沙发
lwsn| | 2016-1-21 20:59 | 只看该作者
当在中断函数内添加了IF判断语句后,端口无反应

那是因为IF语句没有实现吧

使用特权

评论回复
板凳
nanmoj| | 2016-1-22 15:38 | 只看该作者
可能是变量定义的问题吧?有些变量在中断中发生改变,跳出中断后又恢复正常,在AVR中遇到过这种问题,定义成volatile类型就好了。

使用特权

评论回复
地板
米尔豪斯| | 2016-1-23 14:34 | 只看该作者
volatile类型变量有什么特点,在什么时候用

使用特权

评论回复
5
Thor9| | 2016-1-23 14:59 | 只看该作者
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

使用特权

评论回复
6
豆腐块| | 2016-1-23 15:39 | 只看该作者
正确使用 volatile 变量的条件
  只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:
  ● 对变量的写操作不依赖于当前值。
  ● 该变量没有包含在具有其他变量的不变式中。

使用特权

评论回复
7
zhangbo1985| | 2016-1-23 16:50 | 只看该作者
正确处理好中断相关系的寄存器的默认值的。

使用特权

评论回复
8
auv555| | 2016-1-26 13:16 | 只看该作者
楼主 解决了吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

650

帖子

1

粉丝