泛水线:关于单片机的定时问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/20 00:26:44
我想用51单片机定时
方式1最大只能定时到65536us
如果要定时1分钟或更长,如何实现呢?循环?
如果有高手知道,能简单的用汇编语言帮我描述一下么?

可以用定时器中断时现
比如用定时器1
通过写TMOD寄存器进行如下设置:
C/T=0 定时/计数器1工作于定时方式
M1=1;M0=0--选择工作模式1,构成最大定时器
GATE=0
再通过写TL1和TL0指定定时时间,
比如定时50ms可设为
TL1 = 0x13; TH1 = 0x2C; //指定定时时间为50ms
//65536-50/(11.0592/12)=11283=2C13h
然后开定时器中断
ET1 = 1
当计时满后会进入定时器中断服务程序
在中断服务程序中这样设计:
TL1 = 0x13; TH1 = 0x2C; //重新赋值
timer_count++;//定时器计数器加1
timer_count为自己定义的一个变量,每进入一次中断,对变量加1,然后再退出中断,这样可以实现任意时间的定时,比如定时1s,即当timer_count等于20时时定时时间即为1s。
我是用C语言写的,你可以转为汇编语言。