如何利用定时器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,它们的设置都大同小异。

一、用定时器中断,50ms中断的1 次,20次就笑镇是1秒

#include <REG51.H>

#define uchar unsigned char

sbit LED =P1^1//接一LED,1 秒钟亮或灭一次

uchar time

void init_t0int()

{

TMOD=0x01

TH0=(65535-50000)/256

TL0=(65535-50000)%256

EA=1

ET0=1

TR0=1

}

void main()

{

init_t0int()

while(1)

}

void t0int() interrupt 1

{

TH0=(65535-50000)/256

TL0=(65535-50000)%256

time++

if(time==20)

{

time=0

LED=~LED

}

}

二、用循环延时可能程序更简单一点,但没实际销笑意义 。单片机在这1 秒内只能循环而不能做其它事。

#include<reg51.h>

sbit LED=P1^0

void delay_ms(unsigned char ms)

{

unsigned char i

while(ms--)

for(i=0i<123i++)

}

void main()

{

while(1)

{

delay_ms(1000)

LED=~P1^0 //P1.0接一LED,可看到LED每亏升含1S亮或灭一次

}

}

参考资料: LED


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存