标题: 单片机定时器和中断不够用怎么办? [打印本页]

作者: 拼命三娘    时间: 2019-5-26 05:54
标题: 单片机定时器和中断不够用怎么办?
大佬帮我出出主意吧
我芯片用的是stc89c52RC单片机 问:T0用于外部计数中断每1s,T1用于10ms的定时中断数码管刷新,现在还需要wifi通信,那么需要波特率发生器和定时中断,但是定时器只剩下T2了该怎么办?还有51的波特率发生器默认是T1,我知道是可以改的,就是想再确认下。资源不够用我该怎么变通?
作者: 13856449865    时间: 2019-5-26 10:17
用中断查询的方法,不过这个需要另加驱动,直接连肯定是不行的(我试过,当时搞了一晚上没搞出来,血的教训,一定要加驱动!)

作者: xuyaqi    时间: 2019-5-26 10:28
把波特率发生器用T2,腾出T1干别的用。
作者: wulin    时间: 2019-5-26 11:17
如果对外部计数脉冲频率不是很高不必非得用T0外部计数中断,随便用哪个IO口,在主函数中查询即可。数码管动态刷新也不必非得用定时器精确定时,只要主循环周期基本稳定也可以用计数法计时刷新数码管。
作者: m182892    时间: 2019-5-26 11:24
一个定时中断产生N个软件定时器,用这个办法试试。
作者: liuzx66    时间: 2019-5-26 11:32
根据自己的需要,把不是必须中断和使用定时器的用软件模拟,必须用中断的做好优先级,相同优先级的通过一个与门接到int端,中断程序里判断是哪个外设请求的中断,做相应处理。定时器只能针对一个事件计数或定时,软件必须针对情况作出判断和处理,实在不能绕开,就换芯片或加外部扩展
作者: 温酒斩华腾    时间: 2019-5-26 11:57
其实可以用两个单片机的。。如果项目允许你可以试试
作者: 幻剑心    时间: 2019-5-26 16:44
中断可以复用呀。比如单倍的中断处理通讯,双倍的中断处理数码管刷新。只需加一个全局变量和一个if语句罢了。还有外部中断也可以考虑。
作者: 麻吉马巧龙    时间: 2019-5-26 18:09
不必非得用T0外部计数中断,随便用哪个IO口,在主函数中查询即可。数码管动态刷新也不必非得用定时器精确定时,只要主循环周期基本稳定也可以用计数法计时刷新数码管。

作者: 麻吉马巧龙    时间: 2019-5-26 18:11
用两个单片机  就行了
作者: tehity    时间: 2019-5-26 20:33
能做10ms定时,100个10ms就是1s了
作者: liushangming    时间: 2019-5-27 08:40
单片机外设不够,换其它单片机啊
作者: 清风无虑    时间: 2020-5-25 17:53
13856449865 发表于 2019-5-26 10:17
用中断查询的方法,不过这个需要另加驱动,直接连肯定是不行的(我试过,当时搞了一晚上没搞出来,血的教训 ...

另加驱动什么意思,要是用Proteus仿真直接按照这个图不可以?

作者: Y_G_G    时间: 2020-5-26 09:11
难道数码管中断不能用T2,一定要用T1吗?
作者: 随风飘远    时间: 2020-5-26 10:43
一个定时器可以用代码处理到N个软件定时器。 或者换功能强大的单片机添加单片机个数。  
作者: hui7279    时间: 2023-11-2 15:50
初学入门,但我想思路可以有:统一各定时需求初值基准THL0H、TH0L,两个定时需求都需要打开计时器TR0=1;然后据不同的触发条件打开其相应计数开关,中断计数够后,由触发条件程序进行要处理,并复零;
作者: 大漠落日    时间: 2023-11-3 22:30
51速度太慢了,你这多个任务不如早点换上别的单片机
作者: rayin    时间: 2023-11-4 07:22
T0用于外部计数中断每1s,T1用于10ms的定时中断数码管刷新.   
这两个功能可以合并为用一个T0或T1来完成.   多想想办法, 办法总比困难多.
作者: univers    时间: 2023-11-4 14:21
两个定时器够多了,可以用一个定时器做成时基,
如果你的要求真不达不到,可以选用高级点的单片机,STC官方大把。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1