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

📄 jiemama.lst

📁 基于386红外一体华的红外遥控解码程序
💻 LST
字号:
C51 COMPILER V7.50   JIEMAMA                                                               04/14/2008 21:47:27 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE JIEMAMA
OBJECT MODULE PLACED IN jiemama.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE jiemama.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //这个解码方式是针对目前最常用的宽度调剂方式编的.
   2          //注意:1.遥控器中红外信号是反相输出的。
   3          #include<STC89C51RC.H>
   4          
   5          sbit T2   = P2^0;
   6          
   7          
   8          
   9           void dely(int time)  //定义延时函数
  10              {
  11   1               while(time--)
  12   1                 {
  13   2                 }
  14   1          }            
  15          
  16          
  17             unsigned char bianma(void)
  18               {
  19   1                char wei,pm,ma;
  20   1                int gdp;      
  21   1                pm=0xff;
  22   1            for (wei=0;wei<8;wei++)
  23   1              {
  24   2           while(T2==0);//SBUF=5;     //低电平时停住
  25   2               TH0=0;       //进入高电平后开始计时
  26   2               TL0=0;
  27   2               TR0=1;
  28   2               while(T2==1);  // SBUF=6;
  29   2               TR0=0;     //进入低电平后计时结束
  30   2               gdp=TH0*256+TL0;   //高电平的时间长度
  31   2                        if ((gdp<2000)&&(gdp>100))   //属于编码长度范围
  32   2                         {         //SBUF=7;
  33   3                   if (gdp>1000) ma=1;
  34   3                           else          ma=0;
  35   3      
  36   3                           pm<<=1;
  37   3                   pm+=ma;
  38   3                     }
  39   2              }
  40   1            return pm;
  41   1           }  
  42          
  43            
  44            void fasong(void) interrupt 4  using 2
  45             { char j;
  46   1           if(RI)
  47   1             {  
  48   2              RI=0;
  49   2                      j=SBUF;
  50   2                      dely(300);
  51   2                      SBUF=j;          
  52   2             }
  53   1      
  54   1           if(TI)
  55   1             {
C51 COMPILER V7.50   JIEMAMA                                                               04/14/2008 21:47:27 PAGE 2   

  56   2               TI=0;
  57   2             }
  58   1          }
  59          
  60          
  61          
  62            main()
  63            { 
  64   1         char thh,tll;
  65   1         unsigned char jiema1,jiema2,jiema3,jiema4;
  66   1         int low,high;
  67   1         TMOD=0X21;    //      12M晶体,不能用11.0592
  68   1         SCON=0X50;    //SM1=1,工作方式为1,REN=1,接收允许;其他为0
  69   1         PCON=0X80;    //不加倍
  70   1         TH1=0XF3;    //定时器初值,用于设定波特率
  71   1         TL1=0XF3;    //同上  
  72   1         EA=1;        //中断总允许
  73   1         ES=1;        //串行口的中断允许位
  74   1         ET0=1;       //定时器T0中断允许位
  75   1         PS=1;        //串行中断优先值
  76   1         ET1=1;
  77   1         TR1=1;       //启动定时器1
  78   1      
  79   1         //unsigned char bianma(void);   //函数原型说明
  80   1         
  81   1         while(1)                       //解码程序
  82   1          {    
  83   2           while(T2==1); //SBUF=0Xff; //最开始没信号时为高电平,停住不动
  84   2               TH0=0;  TL0=0;  TR0=1;        //来信号,进入引导码低电平后开始计时
  85   2           while(T2==0); //SBUF=4;//停住,计时引导码的低电平
  86   2               TR0=0;           //进入高电平后计时结束
  87   2           thh=TH0;
  88   2               tll=TL0;          
  89   2           TH0=0;  TL0=0;  TR0=1;        //进入高电平后开始计时
  90   2               low=thh*256+tll;
  91   2                //低电平的时间长度
  92   2           while(T2==1); // SBUF=8;//停住,计时引导码的高电平
  93   2           TR0=0;                        //进入低电平后计时结束       
  94   2           high=TH0*256+TL0;      //高电平的时间长度                            
  95   2          if ((high>3000)&&(high<6000)&&(low>8000)&&(low<10000))
  96   2              { //引导码高低电平符合范围               
  97   3                         jiema1=bianma();          //用户码
  98   3                         jiema2=bianma();          //用户反码
  99   3                         jiema3=bianma();          //键码
 100   3                         jiema4=bianma();          //键反码
 101   3                                              
 102   3              //向串口输出数据
 103   3               if((jiema1==~jiema2)&&(jiema3==~jiema4)) SBUF=jiema3;   
 104   3               //else                                   SBUF=0x00;     
 105   3              
 106   3               dely(255);
 107   3              //j1为0x00,j2为0xff,这里我只输出了键码   
 108   3      
 109   3              //本程序经调试可行!!!!!
 110   3                  }                            
 111   2          }                           
 112   1         
 113   1        }                                             
 114          
 115              
 116          
 117          
C51 COMPILER V7.50   JIEMAMA                                                               04/14/2008 21:47:27 PAGE 3   

 118          
 119          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    311    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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