打印

LED的扫描程序放中断里,还是在放中断外好呢?

[复制链接]
3664|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzdianzimi|  楼主 | 2008-4-2 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2008-4-2 16:36 | 只看该作者

放定时器中断去定期刷新好。当然会需要一个定时器...

不过还可以将键盘扫描也一起放进去,那么你的主程序就会很轻松了~~~~~

使用特权

评论回复
板凳
Etual| | 2008-4-2 16:41 | 只看该作者

个人喜欢放在中断外面做

使用特权

评论回复
地板
zzdianzimi|  楼主 | 2008-4-2 16:42 | 只看该作者

那样做,中断里的程序岂不很长?

能否提供一个范例?现在刚开始学,有点吃力,不过我**每天学到晚上十二点,按LS说的,那中断程序岂不是很长 啊???我也看了LS的时钟程序,不过不是很理解

使用特权

评论回复
5
computer00| | 2008-4-2 16:54 | 只看该作者

长点就长点,扫描个LED要不了多少时间的。几个指令就搞定

使用特权

评论回复
6
zzdianzimi|  楼主 | 2008-4-2 17:04 | 只看该作者

好的,我回去在试试!!!谢谢各位

有什么好的思路多说说哦!!!!

使用特权

评论回复
7
ayb_ice| | 2008-4-2 18:42 | 只看该作者

肯定是中断好

因为必须保证LED显示不闪烁,而中断更能保证及时扫描,当然在主循环如果能保证及时扫描也是没有问题的,而且一位LED一般是1~2个MS,而主循环一般很难保证小于这个时间。

使用特权

评论回复
8
xzl| | 2008-4-2 18:58 | 只看该作者

这要看你是否有对实时性要求更高的任务

如果只有LED要求高,放到中断里是个不错的选择.不过中断服务不能执行时间太长

使用特权

评论回复
9
leasor| | 2008-4-2 19:27 | 只看该作者

我的天~~~~~~~~~~


你们还在搞分任务的教科书模式吗?

快点改时间片,不然写代码那简直是一场灾难。

使用特权

评论回复
10
doublers| | 2008-4-3 08:32 | 只看该作者

赞同computer00的说法

赞同computer00的说法,放到中断中去主程序不但轻松很多,而且结构清晰,易于管理,更能体现C的优点

使用特权

评论回复
11
zzdianzimi|  楼主 | 2008-4-3 09:29 | 只看该作者

我是这样想的

我是使用有四位的共阳LED,学习使用的89C51芯片,编程语言用汇编,我昨晚又试了一个晚上,还是没能成功实现我的想法,问题是这样的:我是把显示放到中断,使用的是散转指令(刚刚接触单片机不知道怎样用汇编语言来实现我的想法,大家有没有什么好的学习意见?),结果前三次的中断时间间隔是一样的,第四次却跟前三次不一样,一时查不出来,由于已经12点多了,今天还得上班,所以先睡了,晚上继续调试

使用特权

评论回复
12
computer00| | 2008-4-3 10:04 | 只看该作者

建议你学C语言,用switch语句很轻松

汇编的话,可以计算出偏移量,然后跳转。实际上就是一个状态机,每跳一次就显示一位LED,并将状态改到下一种,
然后就可以返回了。状态到最后一种时复位状态,如此反复。

使用特权

评论回复
13
winloop| | 2008-4-3 11:14 | 只看该作者

我的放在主程序里扫描

使用特权

评论回复
14
gyt| | 2008-4-3 13:23 | 只看该作者

C的switch

就是散转指令的意思啊

使用特权

评论回复
15
杨益成| | 2008-4-3 15:59 | 只看该作者

都可以实现

其实放在外面或者中断里面都可以,扫描的程序不算很长,中断处理影响不是很大。放在外面,通过读定时器的值,一样可以做到很准确。例如:你要100hz扫描一次,在循环通过读Tcc的值可以得到,打开定时器,假设的Tcc递增一次是1ms,主循环不断读Tcc的值,当前Tcc-上一次Tcc=10,就扫描一次,不就是100Hz了,然后保存这次的Tcc,为下一次用。

使用特权

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

本版积分规则

42

主题

163

帖子

1

粉丝