8051单片机计数器

来源:百度知道 编辑:UC知道 时间:2024/07/07 19:23:35
我再做8051单片机的时候遇到一个问题,就是在用数码管动态扫描的时候,我的动态扫描程序是放在中断里面去执行的,但是单片机工作的时候既要去执行主程序里面的内容,又要执行动态扫描的中断响应以及其他的中断响应(我用了四个中断)。我的问题是如果这样执行下去,会不会影响动态显示的效果的。我问问大家再平时写程序的时候是将动态扫描作为什么来处理的。
二楼的这位兄弟,你所说的不放在中断里面,那怎么解决一定时间去执行它一次。

定时查询,

我所有的动态扫描都不是中断,都是用的子程序调用。目前没有出现影响显示效果的现象。
显示也用中断我认为会影响其它的中断程序执行。除非你的显示中断是最低的中断级别。

中断中指令多了,就可能发生嵌套中断,但是你也可以将显示子程序放在中断中,不过执行显示子程序时你可以将总中断关掉,那就不会有影响了!!!
完成后在开总中断。

你也可以在中断中设置一个显示子程序执行的标志,然后在显示子程序中的前面检测这个标志,看是否要执行显示程序,显示程序结束后将其还原到不显示的状态就可以了。。。

这主要要看你四个中断的内容了及重要性!想你这样的程序千万不要采用,软件延时的方法!你使用的不是动态显示吗?那好办用时间节拍的方式,用一个定时器做一个最小最基本的定时(如1MS),其他要定时的程序可在定时程序里加个计算器.
这样你的显示如果在定时中断里,你每中断一次就只去显示一位数码管,动态显示各个数码管之间的延时不能低于10MS,10-100MS都可以的.如果是在主程序中,那你的中断也就是修改一下片选某个数码管的信号(0,1)而已.这样也照样能用中断延时的.记住最重要的是你时钟节拍要安排适当,你学过嵌入式操作系统就会明白的!

最好别放到中断处理里去处理,常用的方法是设一个全局变量做标志,中断里设置标志,主程序的循环里放置一个标志判断语句,如果为真就调用显示函数,并将标志复位。

动态扫描可以不放在中断里啊,尽量保证中断子程序的指令少一些,减少中断处理时间。