找回密码
 注册
关于网站域名变更的通知
查看: 1542|回复: 11
打印 上一主题 下一主题

单片机同时用两个计数器怎么弄啊

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-10 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机同时用两个计数器怎么弄啊$ i" {# S; n6 M* }) t
" U5 c: Z7 {) q5 X1 ~1 u) p
单片机同时用两个计数器,T0 计时,T1计数,T0的中断优先级比T1的高,在T0计时的同时,一直不让T1计满发生中断。这样在计时时间内计数,各位大大,这想法行不?3 U' H2 K$ l; d& l! F

该用户从未签到

2#
发表于 2019-5-10 10:00 | 只看该作者
m3,和m4都可以的

该用户从未签到

3#
发表于 2019-5-10 10:09 | 只看该作者
没看懂,如果不想让T1发生溢出中断,那就在T0里面清除T1的计数值就OK

点评

我的意思就是让单片机在计时的同时计数,计时时间到了把计数值取出来  详情 回复 发表于 2019-5-10 10:23

该用户从未签到

4#
发表于 2019-5-10 10:18 | 只看该作者
设置T1溢出值,计算溢出次数,就可以了

该用户从未签到

5#
 楼主| 发表于 2019-5-10 10:23 | 只看该作者
kinidrily 发表于 2019-5-10 10:093 o. A8 a& O* T: g8 i
没看懂,如果不想让T1发生溢出中断,那就在T0里面清除T1的计数值就OK
. v* {; w" X6 o7 p
我的意思就是让单片机在计时的同时计数,计时时间到了把计数值取出来
- |0 f9 F- {. w6 r7 O/ @

该用户从未签到

6#
发表于 2019-5-10 10:31 | 只看该作者
当然可以,我想你更担心的是计数的那个定时器会溢出吧?! 可以这样做:
& G% r+ Q$ b% J" e9 q. Y高优先级定时器中断
# F) s" q% `/ P# ^) u* ^{/ }3 v( o  [. E
        计时
8 y' {( e. a% ~/ T0 m% |5 ?}
7 r7 z6 v& u+ s' N+ _3 p
  x3 a( @; v, E低优先级定时器中断
) @% L; J+ m8 P; O. }8 W{
+ u" E- v& |5 J3 X+ [8 p6 f5 s        赋初值; {7 J! Q! L$ z( x2 [
        num++;/ L5 B3 d' J& |2 q# n" h
}
, ~8 X; i! u( J9 @: w# t/ U6 b
! |" L' w( M! \  F6 c; iif(定时时间到)# }/ R  q) A' k, E+ S. y8 {. s- V
{
+ l  K/ }" z6 [- B  Y* [( E8 B* H' w        计时次数=num*溢出时的计数的次数  +  当前计数的次数;/ n. T) X% F3 M
}

点评

嗯差不多就是这样  详情 回复 发表于 2019-5-10 10:41

该用户从未签到

7#
 楼主| 发表于 2019-5-10 10:41 | 只看该作者
fanichicl 发表于 2019-5-10 10:31
8 _6 w& I& C0 X& F当然可以,我想你更担心的是计数的那个定时器会溢出吧?! 可以这样做:* v0 T" e+ g' A0 X/ c
高优先级定时器中断
- s+ ?4 n4 ]9 l# n+ ?{
  ^3 ?3 r' m& h( }5 @$ ~
嗯差不多就是这样
! {, i! K) N" U: g8 P

该用户从未签到

8#
 楼主| 发表于 2019-5-10 10:43 | 只看该作者
低优先级中断和高优先级中断同时到达不会响应低优先级中断,所以一开始就不让低优先级溢出,产生中断。通过检测计数值达到某个数值后,重置计数值。

该用户从未签到

9#
发表于 2019-5-10 10:46 | 只看该作者
我之前做了一个电机测速的程序,就是测定规定时间内的转数,应该跟你说的一个意思,对于T1,计一个数,进行一次中断,在中断程序里记录数据,最后T0时间到,直接处理数据就完了,应该不用你说的那么复杂吧

点评

确实差不多 ,本来就不是很复杂的东西  详情 回复 发表于 2019-5-10 10:58

该用户从未签到

10#
 楼主| 发表于 2019-5-10 10:58 | 只看该作者
yxlk 发表于 2019-5-10 10:46
9 S' u& }( V* O5 Q3 K我之前做了一个电机测速的程序,就是测定规定时间内的转数,应该跟你说的一个意思,对于T1,计一个数,进行 ...

8 o: b4 U2 O# k3 N4 \确实差不多 ,本来就不是很复杂的东西. i: L4 M/ k1 N, ]0 \( i6 ]6 g

该用户从未签到

11#
发表于 2019-5-15 14:54 | 只看该作者
我之前在做一个220V电源开关机(用来实现按键可调自动循环开关220V电源,带数码管显示、按键实现功能选择、计时时间调节、开关机循环开关计数调节等),我当时就是用了51单片机中的两个定时器,但是我当时上网查发现两个定时器中断在执行过程中可能会产生冲突,于是我就在T1中断函数中做了判断标志位,当标志位变量达到某一个值时,就暂时关闭T0中断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-24 01:38 , Processed in 0.140625 second(s), 29 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表