打印

关于两个中断的问题!

[复制链接]
2128|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ewewre|  楼主 | 2011-6-18 19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在程序里面有两个中断,外部中断1,跟串口中断,串口中断是赋值的,外部中断是按一次,值就加1!
我要怎么把这两个联系起来啊?就是串口如果赋个5的话,外部中断一次就+1,就是6
麻烦大侠们指点下谢谢!

相关帖子

沙发
心静自然凉| | 2011-6-19 13:06 | 只看该作者
我不是很明白LZ要表达的意思,不过关于中断你注意一下优先级的问题,要联系起来很简单,设置一个全局变量total,专门存放数值的总和

使用特权

评论回复
板凳
liang7143| | 2011-6-19 21:40 | 只看该作者
不知所云

使用特权

评论回复
地板
yewuyi| | 2011-6-20 09:16 | 只看该作者
哎,这语言组织能力真叫绝了。。。

使用特权

评论回复
5
joyme| | 2011-6-20 09:40 | 只看该作者
2L正确,加个全局变量,串口中断给其赋值,外部中断了++就可以

使用特权

评论回复
6
huangqi412| | 2011-6-20 10:00 | 只看该作者
就一个全局变量,
串口中断:  变量=串口值
外中断:    变量++

使用特权

评论回复
7
huangqi412| | 2011-6-20 10:01 | 只看该作者
你还得看看是否要关注溢出问题。

使用特权

评论回复
8
zhouxm1| | 2011-6-20 10:09 | 只看该作者
你是想统计中断次数?

使用特权

评论回复
9
zhouxm1| | 2011-6-20 10:10 | 只看该作者
搞个全局变量
在串口中断里赋值,然后再外部中断里加1就可以了

使用特权

评论回复
10
刘前辈| | 2011-6-20 17:42 | 只看该作者
本帖最后由 刘前辈 于 2011-6-21 19:23 编辑

没那么简单。 LZ提的问题是:两个随机程序共享一个公共全局变量X时,可能发生的问题。

举例:51外部中断优先权默认是高于串口中断的!——假定串口ISR正在赋值全局变量X=5,赋值还未完成时,被外部中断优先抢占执行X++ ,RETI 返回到串口ISR继续执行时,X 已经不是原值了,可能乱了。

所以,这里有个互斥问题。很简单的办法就是,把两个中断设为相同优先级,任何一个中断一旦被触发,自动阻塞其它同级优先权中断。

另一注意点就是外部中断必须设置为下降沿触发(D触发器记录保存中断状态),而电平触发是不保存的,——延迟中断处理可能会丢失中断触发信号。


、、

使用特权

评论回复
11
highgear| | 2011-6-20 21:06 | 只看该作者
2, 5, 6楼都是对的, 楼上刘小辈多虑了。
只要全局计数器是 8-bit 就不必过多关心。如果是 16-bit以上, 改变计数值时暂时关闭另一个中断就可以了。

使用特权

评论回复
12
szmc| | 2011-6-21 11:24 | 只看该作者
刘前辈精辟

使用特权

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

本版积分规则

0

主题

4

帖子

1

粉丝