51单片机程序——定时器控制LED闪烁
#define uint unsigned int
uint i=0;
void delay(uint z) //延迟函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
void main (void)
{
TMOD=0x10; //TMOD赋值,以确定T0和T1的工作方式
TH1=(65536-50000)/256; //计算初值,并将其写入TH0、TL0或TH1、TL1
TL1=(65536-50000)%6;
EA=1; //打开总中断
ET1=1; //打开定时器1中断
TR1=1; //启动定时器1
while(1)
{
if(i==20) //定时器计数时间20*50MS=1S
{
i=0; //清除标志位
P0=0xaa;
delay(500);
P0=0xff;
delay(500);
}
}
}
void exter1() interrupt 3 //定时器1中断函数
{
TH1=(65536-50000)/256; //中断函数中也需要赋定时器初值
TL1=(65536-50000)%6;
i++; //定时器每50MS就使i加一
}
评论