|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于单片机的定时,在我刚刚学习的时候,都是用软件实现的.但在软件进行延时的过程中,cpu时间被白白浪费了,此时能利用cpu的只有中断.
( }7 R& Y& O* K, _. _! Z T; u- k7 u7 \$ C3 ^$ ]( ^" p
# G3 y7 v# H- r
随着使用的深入,我越发觉得软件定时这是不是个好方法,虽然它很简单.+ O$ o* `, J, n9 [0 X
: s, b& Z5 `2 g7 x随后我对硬件定时进行了了解,发现替代的方法有个用定时器来搞的:
7 K# y: \2 w( r; I# h在定时器中断里设置一个标志位,每当定时器运行到设定的时间,就将该位置置位(定时短)或+1(定时时间较长),然后用外部程序去查询这个标志位,做判断." ?+ O. r& n* A( Y4 h7 O0 U
0 h1 U7 c8 G9 u, f, M% p0 P, b
但是我又有了个疑惑,对于后者,假如我要定时30毫秒,定时器溢出时间为1ms,标志位用8位无符号
+ w7 P# j8 |- @/ K( ^; N那到了240的时候,240+30=14 ,溢出了~ 这个怎么处理?
( r/ Z* Q- B* }" H, Z f R. _& h难道我把最大阈值设定为225么? 那假如我有多个不同的延时需要进行处理呢?.... 没办法呀~ 难道要设置最大延时限制值么?...0 @$ x: \ I8 F. X4 D7 L' C
* G; @( h8 Y i* m让人很是摸不着头脑,求大家帮助一下我呀~+ i" Y+ U" |$ l- u& h$ a
$ N. t/ J( H; v( D1 V4 F9 I
---------------分割线---------------
+ ^& F" q9 z% C2 G8 S一天后更新,感谢大家的回复与指教,我看了感觉无地自容.....愧对坛龄,愧对老师....; ^+ y- g. i' K- _) c
大家的回复我都有好好看,我会好好学习的,谢谢大家3 W E( ~7 I' x0 p, p' p0 S
|
|