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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)