51里面怎样实现长达3分钟的延时

[复制链接]
3743|16
 楼主| 程龙 发表于 2008-11-18 16:58 | 显示全部楼层 |阅读模式
aceice 发表于 2008-11-18 17:29 | 显示全部楼层

中断里放标志~或者外面挂一个带中断的RTC~

NE5532 发表于 2008-11-18 19:50 | 显示全部楼层

定时器做成1秒延时,再计180次就是了。

原来哪位说过的:记到太阳爆炸都够了。
耕在此行 发表于 2008-11-18 19:56 | 显示全部楼层

定时器能做成1秒延时吗?

能做成1秒的都是RTC吧
icmap 发表于 2008-11-18 20:04 | 显示全部楼层

定时器作一万年延时都可以,而且不需要用中断。

王紫豪 发表于 2008-11-18 20:06 | 显示全部楼层

三分钟算个鸟

5880527 发表于 2008-11-18 20:21 | 显示全部楼层

又来一个不会写万字的同学

aceice 发表于 2008-11-18 20:23 | 显示全部楼层

关键是精度问题,高精度定时器延时还是要动一点脑筋的

动态调整重载值还是比较麻烦的
jerkoh 发表于 2008-11-18 20:26 | 显示全部楼层

re

引用 原来哪位说过的:记到太阳爆炸都够了。
经典
AIRWILL 发表于 2008-11-18 20:37 | 显示全部楼层

记到太阳爆炸?

你的晶振早停工不干了
ayb_ice 发表于 2008-11-18 20:51 | 显示全部楼层

2**N=xxx

NE5532 发表于 2008-11-18 21:48 | 显示全部楼层

“能做成1秒的都是RTC吧”

特推荐我写的书,详见签名链接。
icmap 发表于 2008-11-18 21:51 | 显示全部楼层

没必要用 RTC,不论是 1 秒还是一万年。

xhtxzxw 发表于 2008-11-19 01:53 | 显示全部楼层

嘿嘿

把LZ说蒙了!晚上做梦太阳大爆炸!

硬件中断,结合软件累加,就可以了.

会用T0/T1的中断做20ms定时吧?

事先声明的一个比较有长度的全局变量比如就叫做TC吧, unsigned long TC=0;

然后在T0/T1中断服务函数里,你TC增量啊!每中断一次,TC增1,就是增加了20ms.

51C里,你定义的这个TC有32位呀,最大可以数出(2的32次方-1)个20ms 来

(2的32次方-1)*20ms = 85899345900ms
也就是说等到TC从0变化到最大,大约就是经过差不多994天了吧?

太阳爆炸当然不会来得这么快的啦!

不过还可以整一个(一个不够就俩吧)32位的全局变量嘛,比如就叫做KTC,当TC最大以后再加1导致回0了,就给KTC增1嘛
等到KTC也最大了,估计一下,多长时间过去了呢?

994天*85899345900=85383949824600天 约= 233928629656年,恩,够了,好象两千多亿年了!够太阳来回爆炸十几次呢!





呆板书生 发表于 2008-11-19 07:33 | 显示全部楼层

善于使用外设才是MCU的强项

和从前的Z80,6502之类的CPU相比,MCU多了很多外设,

例如51系列中,定时器,利用定时中断计数,MCU既可以继续自己的任务,又可以按一定时间间隔去计时,

这是MCU的发展方向,和51相比,PIC,AVR中的外设更多,在简单系统中,电路更简单
aceice 发表于 2008-11-19 09:43 | 显示全部楼层

一切取决与精度要求

icmap 发表于 2008-11-19 22:07 | 显示全部楼层

论坛上有解决这个问题的方法。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部