|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于单片机的定时,在我刚刚学习的时候,都是用软件实现的.但在软件进行延时的过程中,cpu时间被白白浪费了,此时能利用cpu的只有中断.0 a: @3 v/ a- }* t X
3 c" L/ f! a+ v' I {7 L
# H3 ^1 O( F Q/ q随着使用的深入,我越发觉得软件定时这是不是个好方法,虽然它很简单.
& i8 t" {: L3 e$ R7 X5 J: p, l' e/ A6 E) E6 y: q5 e
随后我对硬件定时进行了了解,发现替代的方法有个用定时器来搞的:
) e2 `. o9 U$ M/ g在定时器中断里设置一个标志位,每当定时器运行到设定的时间,就将该位置置位(定时短)或+1(定时时间较长),然后用外部程序去查询这个标志位,做判断.- R% n8 D) j; j' r
4 Y5 ^. r5 C" n5 v7 u: a0 ]' I3 K但是我又有了个疑惑,对于后者,假如我要定时30毫秒,定时器溢出时间为1ms,标志位用8位无符号
6 h# e5 Z% p# ^& O5 J/ Z) p那到了240的时候,240+30=14 ,溢出了~ 这个怎么处理?" e* m- Q. o9 P; Q) u( c! T1 T7 D
难道我把最大阈值设定为225么? 那假如我有多个不同的延时需要进行处理呢?.... 没办法呀~ 难道要设置最大延时限制值么?...; @1 a" E& l6 {: {
5 p9 E1 Z& ^8 s让人很是摸不着头脑,求大家帮助一下我呀~8 s- ], W0 Y5 ^. B d1 w% G1 y2 D
A+ }. o# c. ]---------------分割线---------------
) V2 J- ?2 M9 M* p( t1 y一天后更新,感谢大家的回复与指教,我看了感觉无地自容.....愧对坛龄,愧对老师....- I% R$ {+ F+ I5 G7 D
大家的回复我都有好好看,我会好好学习的,谢谢大家
- F2 d: b% B1 z |
|