⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 一个51单片机下编写红外遥控接收程序
💻 C
字号:


#include "config.h"

sbit IR_Line = P3^7;
sbit KEY     = P1^1;

bit  REC_IR_STA=0;
unsigned int  IR_cnt=0;

uchar Rev_IR_DAT[60];

uchar Rev_Byte= 0;
uchar Rev_bit = 0;
bit   Rev_OK  = 0;
bit   Rcv_Flag=0;
uchar Rcv_cnt_Flag=0;
uchar Rcv_cnt=0;



uchar IR_Key=0;



void init_timer0(void)  //初始化
{
	TMOD &= 0XF0;
	TMOD  |= 0X1;
	TL0 = 0x80;
	TH0 = 0xFF;
	TR0 = 1;
	PT0 = 1;
    ET0 = 1;
    IR_Line=1;
	EA = 1;
}

void timer_isr() interrupt 1  //中断函数
{
  DISABLE;
  

     if(IR_Line==REC_IR_STA)
      {
         IR_cnt++;
         if(IR_cnt>200)
           IR_cnt=200;
       }
   
    else
       {

          REC_IR_STA=IR_Line;
 //         if((IR_cnt>2)&&(IR_cnt<0x0d))
 //            { 
               Rev_IR_DAT[Rev_bit] = IR_cnt;
               Rev_bit++;
/*
               Rev_IR_DAT[Rev_Byte]<<=1;
               if(IR_cnt>7)
                Rev_IR_DAT[Rev_Byte]|=1;
               if(Rev_bit==8)
                 { 
                   Rev_bit=0;    
                   Rev_Byte++; 
                 }
                                  
               if((Rev_Byte==2)&&(Rev_bit==5))
                 {
                   Rcv_Flag=1;
                   Rcv_cnt_Flag=0;
                 } 
*/

 //            }

 //         else
 //            {
  //              Rev_Byte =0;
  //              Rev_bit  =0;
 //            }
/*
          if(Rcv_Flag)
             {
                Rcv_cnt_Flag++;
                if(Rcv_cnt_Flag==3)
                 {
                   Rcv_cnt_Flag=0; 
                   Rcv_Flag=0;
                   Rcv_cnt++;
                   if(Rcv_cnt==2)
                    {
                      Rcv_cnt=0;
                      Rev_OK=1;
                      Rev_Byte =0;
                      Rev_bit  =0;
                      if((Rev_IR_DAT[1]==0x00)&&(Rev_IR_DAT[2]==0x80))
                        IR_Key=1;
                      else if((Rev_IR_DAT[1]==0x00)&&(Rev_IR_DAT[2]==0x83))
                        IR_Key=2;
                      else if((Rev_IR_DAT[1]==0x00)&&(Rev_IR_DAT[2]==0x02))
                        IR_Key=3;
                    }
                 }
             }

*/
//             {
 //              Rev_IR_DAT[Rev_Byte]=0xFF;
 //              Rev_Byte++;
             if(Rev_bit>59)
               {
                 Rev_OK=1;
                 Rev_bit=0;
                }
 //             } 
           IR_cnt=0;
         } 

       
   
	TL0 = 0x80;
	TH0 = 0xFF;
  ENABLE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -