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++;
} |