如何利用定时器T0的工作方式1实现1秒钟延时程序(单片机)?

如何利用定时器T0的工作方式1实现1秒钟延时程序(单片机)?,第1张

1、#include <reg52.h>

2、#define uchar unsigned char

3、#define uint unsigned int

4、sbit LED = P0^0uchar T_Count = 0void main(){TMOD = 0x01TH0  = (65535-50000)/256TL0  = (65535-50000)%256IE   = 0x82TR0  = 1while(1)}

5、void LED_Flash() interrupt 1{TH0  = (65535-50000)/256TL0  = (65535-50000)%256if(++T_Count == 20){LED = !LEDT_Count = 0}}

6、这个程序是1秒钟LED灯会亮与灭显示。

1单片机,拥有两个定时器,用来中断计数,分别是T0和T1。而52单片机和51单片机的定时器是一样的,只是52比51多了一个定时器/计数器T2,它们的设置都大同小异。

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

采用定时器定时很精确的,如果定时时间为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 <reg51.h>

#define uchar unsigned char

sbit LED=P1^0

uchar time

void InitTimer0(void)

{

TMOD = 0x01  //定时器0,工作方式1

TH0 = 0x3c

TL0 = 0xb0   //50ms中断一次

EA = 1

ET0 = 1

TR0 = 1

}

void main(void)

{

InitTimer0()

while(1)      

if(time==20) //中断20次,1s

{

time=0

LED=!LEDP1.0上的LED1s亮灭一次

}

}

void Timer0Interrupt(void) interrupt 1

{

TH0 = 0x3c

TL0 = 0xb0

time++

}


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

原文地址:https://54852.com/yw/8094992.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存