#include <STC15.H>
unsigned int a0=0;
sbit INT0=P3^2;
sbit led1=P3^5;
void pulseIn0 ();
void Timer0Init (void)
{
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00;
TH0 = 0x00;
TF0 = 0; //定时计数器0 溢出标志
TR0 = 0; //定时计数器0 使能
}
void main ()
{
EA = 1; //开总断(所有中断)
EX0 = 0; //外部中断0 使能
IT0 = 0; //外部中断0 边沿触发
Timer0Init ();
while (1)
{
pulseIn0 ();
if (a0>950&&a0<1380) //-100:1100 中位:1520 +100:1940
led1=1;
else if (a0>1660&&a0<2090)
led1=0;
}
}
void INT_0 (void) interrupt 0 using 2
{
while (INT0 == 1);
while (INT0 == 0);
TR0 = 1; //启动定时器中断
while (INT0 == 1);
TR0 = 0;
a0 = TH0;
a0 = a0*256+TL0;
TL0 = 0x00;
TH0 = 0x00;
EX0 = 0;
}
void pulseIn0 ()
{
if (INT0 == 1)
EX0 = 1;
}