设单片机系统采用6M晶振,写出用定时器1方式2实现1ms的延时程序?

设单片机系统采用6M晶振,写出用定时器1方式2实现1ms的延时程序?,第1张

6M晶振,方式2定时1mS的时间太长,不能直接实掘链现,(最大定时应该是512uS)下面是500uS定时示判巧例程序,可在中断函数中计数每2次得1S。

void Timer1Init(void) //500微秒@6.000MHz

{

AUXR &= 0xBF //定时器时钟12T模式

TMOD &= 0x0F //设置定时器模式

TMOD |= 0x20 //设置定时器模式

TL1 = 0x06 //设置定时初值

TH1 = 0x06 //设判冲孙置定时重载值

TF1 = 0 //清除TF1标志

TR1 = 1 //定时器1开始计时

}

电子闹钟如何精确定时一秒如下笑腊

采用定时器定皮逗时很精确的,如果定时时间为1ms,那循环1000次就是1s。

定时初值要看你采用的晶振频率了,下面是12M晶振,定时器0的定时1ms程序。

timer0() interrupt 1 /

1ms延时(12.0MHz)

{

TR0=0

ET0=0

TH0=0xfc

TL0=0x18

if(delayTimes1!=0) delayTimes1--

TR0=1

ET0=1

}

当要程序中把delayTimes1赋值1000后,等到delayTimes1为0的时候碰握滑定时1s钟。

#include<time.h>

#include<stdio.h>前链郑

void main()

{

clock_t start,finish

double durtion=0

printf("计时开始\n")

start=clock()

while(1-durtion>0.00001)

{

finish=clock()

durtion=(double)(finish-start)

}

printf("唤好1ms计时完毕\慧颂n")

}

原理:两个时间差值是1ms就立即跳出while循环,C语言中时间分度值是ms


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12441108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存