日志档案

发表于 2008-4-12 0:06:04

1

标签: 无标签

大家帮我看哈这个红外报警的怎么回事情

不知道怎么不行,哭

/**************************************************************************
简单的被动式红外线报警器
 PA=P1^0发射;
 PB=P0^7LED闪;
 //PC=P0^6;灯

 
***************************************************************************/

#include<reg51.h>   //

#include <intrins.h>
void delay_nus(unsigned int n);//函数声明,本实验中会用到这两个函数
void delay_nms(unsigned int n);
sbit PA="P1"^0;
sbit PB="P0"^7;
//sbit PD="P3"^2;
//sbit PC="P1"^2;

void main(void)//主函数

  unsigned int i;
  unsigned int j;
  unsigned int n;
 
  IP="0x02";
  TMOD="0x01";
  PA="0";
  TH0=-(26/256);
  TL0=-(26%256);
  IT0=1;  //电平触发
  EA="1";
  ET0=1;
  TR0=1;
  EX0 = 1; //允许外部中断0
 
 // TR0=1;
  //EX0 = 1; //允许外部中断0

   j="1";
   PB="0";
  
 
 while(1)
    {
    
  
  if(j>10)
   {
     for(i=0;i<20;i++)
      {
          PB=!PB;//led
    //PC=0;
         // PC=!PC;//灯快闪  
       delay_nms(10000);
    }
      j="0";
    }
 
 
 
    } 
}

void time() interrupt 1 using 1//产生38KHz的方波信号
{
  PA=!PA;
  TH0=-(26/256);
  TL0=-(26%256);
}


void xian() interrupt 0 using 0
{   unsigned int j;
    j++;   
 EX0 = 0;
 
}


void delay_nus(unsigned int n)//n微秒延时函数
{
unsigned int i;
for (i=0;i<n;i++)
  {
      _nop_();
  }
}

void delay_nms(unsigned int n)//n毫秒延时函数
{
  unsigned int i;
  for (i=0;i<n;i++) //执行n次1毫秒延时
  delay_nus(1000);
}

系统分类: 单片机   |   用户分类: 单片机   |   来源: 原创   |   【推荐给朋友】

    阅读(293)    回复(3)  

投一票您将和博主都有获奖机会!

  • mpuhome

    2008-4-16 11:18:33

    请说明具体问题及现象 看程序的话,看不出什么的

  • jizzll

    2008-4-16 21:02:12

    经过大虾指正,已经改进。原来是中断不会返回值的

  • jizzll

    2008-4-16 21:03:12

    不过麻烦看哈另外一个红外的,是不是台灯也有部分光是38KHZ哦