EDN51验证 ,不过,我不知道为什么,在台灯下面存在问题,就是会误报,不知道是不台灯也是38KHZ,呵呵,谁来解释哈撒
/**************************************************************************
简单的被动式红外线报警器
PA=P1^0发射;
PB=P0^7LED闪;
PC=P0^6;灯
PD="P1"^7蜂鸣器
***************************************************************************/
#include //
#include
void delay_nus(unsigned int n);//函数声明,本实验中会用到这两个函数
void delay_nms(unsigned int n);
sbit PA="P1"^0;
sbit PB="P0"^7;
sbit PD="P1"^7;
sbit PC="P0"^6;
void main(void)//主函数
{
unsigned int i;
unsigned int n;
unsigned int j;
IP="0x02";
TMOD="0x01";
PA="0";
//TH0=-(26/256);
//TL0=-(26%256);
TH0=0xD1;
TL0=0x33;
IT0=1; //电平触发
EA="1";
ET0=1;
TR0=1;
EX0 = 1; //允许外部中断0
// TR0=1;
//EX0 = 1; //允许外部中断0
PB="0";
PC="1";
PD="1";
j="0";
while(1)
{
EX0 = 1;
if(PC==0)
{
j++;
if(j>10)
{
for(i=0;i<5;i++)
{
PB="0";//led
PD="0";
delay_nms(100);
PB="1";//led
PD="1";
}
j="0";
}
PC="1";
}
}
}
void time() interrupt 1 using 1//产生38KHz的方波信号
{
PA=!PA;
TH0=0xD1;
TL0=0x33;
}
void xian() interrupt 0 using 0
{
PC="0";
EX0 = 0;
}
void delay_nus(unsigned int n)//n微秒延时函数
{
unsigned int i;
for (i=0;i {
_nop_();
}
}
void delay_nms(unsigned int n)//n毫秒延时函数
{
unsigned int i;
for (i=0;i delay_nus(1000);
}
用户13449 2010-5-9 16:06
用户187290 2009-5-4 22:26
用户393407 2008-4-18 15:33
用户1364249 2008-4-18 12:40