打印

请教 定时中断

[复制链接]
1582|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
electron0101|  楼主 | 2009-5-20 20:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
tingtang| | 2009-5-20 20:54 | 只看该作者

我亲爱的

买个高hz的

使用特权

评论回复
板凳
lyjian| | 2009-5-20 20:56 | 只看该作者

思路有问题

使用特权

评论回复
地板
electron0101|  楼主 | 2009-5-21 07:49 | 只看该作者

回3楼能否指点一下???

使用特权

评论回复
5
救火车| | 2009-5-21 10:45 | 只看该作者

把串行数据收发,改成中断方式。

只要程序协调好,51也能实现你这些功能。

使用特权

评论回复
6
electron0101|  楼主 | 2009-5-21 12:12 | 只看该作者

回5楼 正是用的51也是 串行数据收发在中断里

键盘 扫 也在中断 .  

 在主循环里 描,

就按了下键盘 过了1秒才反映过来

使用特权

评论回复
7
zyboy| | 2009-5-21 13:05 | 只看该作者

是队列方式吗?

每收一个串口数据都跳到串口中断函数吗?如果是真正中断方式,只是每个数据到达主程序才会跳到中断响应,数据传输的时候,主程序都是空闲的,你应该有足够的时间做其他的

使用特权

评论回复
8
刘前辈| | 2009-5-21 13:41 | 只看该作者

要是不好解决,送你个书上的程序?

其实把这两个中断注意独立互锁就行了。

原因:由于接收采用的是串口中断(23H ?)假定发送端以19.2K比特率连续发送,那么接收端就要1ms左右中断一次。

那么还有另一个定时扫描键盘中断假设50ms中断一次,能保证定时中断1ms内把键盘扫描程序运行完?

所以,原理上应该没问题。可能自己的程序哪里有漏洞不完善的地方。
调试技巧:
1:先去掉通信任务,把独立键盘扫描程序时序调试好。
2、去掉键盘扫描程序,把独立通信任务调试好。
3、也许把键盘扫描程序放在主程序,50ms定时中断仅向键盘扫描程序传递定时到标志,瞬间运行完毕、退出更合理吧。
4、两中断IP寄存器应该设置同等优先级?还是进入一个,立即封锁另一个?

都注意到就没什么了。

使用特权

评论回复
9
928315| | 2009-5-21 15:08 | 只看该作者

为什么用定时中断?

开辟一段接受缓冲区后,可以根据收到数据的长度来判断是否需要处理。搞2个指针,一个读缓冲,一个写缓冲。类似循环队列。只要两个指针不相等,就应该有数据可以读。好像不需要用定时器啊。

使用特权

评论回复
10
刘前辈| | 2009-5-21 21:49 | 只看该作者

键盘扫描的3种方式。

1、程序控制;也就是在主程序中无限循环方式;
2、定时控制;就是利用定时器定时扫描,例如50ms一次;像HOT说的“零耗时”技术就是根据定时扫描控制来的;
3、中断控制方式:这是效率最高的,因为定时扫描可能大部分时间没有键按下。但是中断方式可能要加硬件,也许现在有些MCU有多个管脚可以作为中断脚了。

你若不用定时方式,而用无限循环控制,当然也行,除了效率低点。

使用特权

评论回复
11
ayb_ice| | 2009-5-21 22:59 | 只看该作者

通过队列处理比较好

使用特权

评论回复
12
electron0101|  楼主 | 2009-5-22 07:45 | 只看该作者

先谢楼上各位 !

我设置串口 中断 为最 高优先级别 
 
定时器0为 显示输出
定时器2为 键盘 和发送数据  

接收只管把数据送 缓存 接收完 21个后 置标志 位

发送只管把数据送 缓存 发送完 21个后 置标志 位

发送  接收都有 缓存 21个字节 


主程序负责 把要发的数据打包  填入缓存

和把接收完的数据校验  取出缓存 

使用特权

评论回复
13
xppx1987| | 2014-11-27 10:02 | 只看该作者
肯定是lz主循环中任务处理不合理,把按键扫描放在中断中处理~

使用特权

评论回复
14
coody| | 2014-11-27 11:30 | 只看该作者
这点任务,用个老的51跑11.0592MHZ都轻松完成

使用特权

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

本版积分规则

16

主题

79

帖子

0

粉丝