资源简介

利用51单片机实现了红外发射以及接受功能,其中一块单片机控制发射,另一快控制接受

资源截图

代码片段和文件信息

			 // STC 12T系列单片机红外接收NEC解码程序。适用于市场上用量最大的HT6121/6122及其兼容的IC编码。
// 使用外部中断0接收P3.2
//
#include 
#include 
#define uchar unsigned char    
#define uint  unsigned int  

uchar code tab[] = {0xc00xf90xa40xb00x990x920x820xf80x800x90};

sbit IR    = P3^2;  

uchar N[4];  //识别码,操作码存放
uchar   X;


void YS(uchar time);

/****************** 主函数 *******************/
void main(void)

  X = 0;
  
  IT0 = 1; 
  EX0 = 1;
  EA  = 1;

  while(1)
  {
   P1=tab[X];
  }
}



/********************** 外部中断函数************************/
void exint0() interrupt 0 
{   
   uint cnt;
   uchar i;

   EX0 = 0;
   cnt = 0;

   while(!IR) cnt++;                               //记录引导码时间 
   if(cnt < 1000){EX0=1;return;}                   //9ms的计数值(12MHz:1000< cnt <1500)
   
   cnt = 0;  
   while(IR) if(cnt++ > 400){EX0=1;return;}        //防卡死,超时保护(12MHz: > 300)    
   if(cnt < 200){EX0=1;return;}                    //(12MHz不分频: <260)     

   for(i=0; i<32; i++)                             //读取32位位码
       {
         cnt = 0;
         while(!IR);        
         while(IR) if(cnt++ > 200){EX0=1;return;}  //超时保护(12MHz:>=200)
         N[i/8]>>= 1;
         if(cnt>60) N[i/8]|= 0x80;                //0和1的计数界线(12MHz:< 109)    
       }
 

  if(N[0] == ~N[1] && N[2] == ~N[3])            //校验识别码,操作码   
   
X = N[2]%16;
   

EX0 = 1;  


/***************************************************************
函数功能:按键消抖    延时程序
入口参数:1ms×time       (晶振=12MHz)
***************************************************************/
void YS(uchar time)
{
     uchar ij;
 for(i=0; i     for(j=0; j<247; j++)_nop_();

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-07-01 13:09  红外综结版\
     文件        1178  2013-07-01 12:54  红外综结版\发射.hex
     文件         836  2013-07-01 12:55  红外综结版\接收.hex
     文件        1885  2013-07-01 12:52  红外综结版\红外接收.c
     文件      108174  2013-07-01 12:52  红外综结版\红外模块 .DSN
     文件        4935  2013-07-01 12:08  红外综结版\红外线发射.c

评论

共有 条评论