P3.2外部中斷,下降沿觸發。3秒計時周期,脈沖個數小于2,led點亮輸出,否則led熄滅。
#include "reg51.h"
sbit LED=P2^1;
unsigned char num=0,count=0;
void main()
{
TMOD= 0x01; //設置定時器模式
TL0 = 0xB0; //50毫秒@12.000MHz
TH0 = 0x3C;
TR0 = 1; //定時器0開始計時
ET0 = 1; //開定時器0中斷
IT0 = 1; //外部中斷下降沿觸發
EX0 = 1; //開外部中斷0
EA = 1; //開總中斷
while(1);
}
void Timer0() interrupt 1
{
TL0 = 0xB0; //設置定時初值
TH0 = 0x3C; //設置定時初值
count++;
if(count>=60) //3秒
{
count=0;
if(num>=2)
{
LED=0;
num=0;
}
else LED=1;
}
}
void exint0() interrupt 0
{
num++;
} |