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

📄 rem.lst

📁 单片机键值测定程序
💻 LST
字号:
C51 COMPILER V7.08   REM                                                                   03/10/2006 07:53:15 PAGE 1   


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

line level    source

   1          
   2          #include "define.h"
   3          #include "global.h"
   4          #include <AT89X52.H>
   5          #include <intrins.h>
   6          
   7          extern void Initial_16311(void);
   8          extern void Validate_Key(uchar,uchar);
   9          //---------------------------------------------------------------------------
  10          // Delay
  11          //---------------------------------------------------------------------------
  12          uchar REM_value;
  13          bit BZ_rem;
  14          uchar REM_add;
  15          
  16          static void Delay100us(void)   //24MHz(LJMP:CLR A;MOV R7 A;INC A;CNJE R6 65)
  17          {
  18   1         uchar data i;
  19   1         for(i=0; i<65; i++);
  20   1      }
  21          
  22          //------------------------------------------------------------------
  23          void REM_KEY(void)
  24          {
  25   1        uchar count, i, j;
  26   1        uchar aIRCodes[4]; //接收32位代码
  27   1        uchar bByte;//做数剧接收时的移位寄存器
  28   1              if(PIN_IR)return;
  29   1              // --------------- Leader signal (low 9ms + high 4.5 ms) -----------------
  30   1              for (count=0; !PIN_IR; count++) 
  31   1               Delay100us();  // 接收9mS的低电平头码;
  32   1              if ((count < 80) || (count > 100)) {
  33   2              BZ_rem=0;
  34   2              return;}        //判别是否是9mS,如果不是就反回;并清除标志变量。
  35   1      
  36   1              for (count=0; (PIN_IR) && (count < 54) ; count++) Delay100us(); //接收4.5ms的高电平信号。
  37   1      
  38   1      
  39   1                      if ((count >= 19) && (count <= 24)) //如果连续按住了同一个按键则只发送开始码和结束码, low (9ms) , high (
             -2.25), low (0.56)
  40   1                        {
  41   2                              for (count=0; !PIN_IR ; count++) 
  42   2                      Delay100us();
  43   2                                 if ((count >= 4) && (count <= 7))
  44   2                            {
  45   3                             BZ_rem=1;
  46   3                                         return;
  47   3                                    }}
  48   1                      
  49   1              else if ((count > 35) || (count < 54))//读遥控代码, logic 0 = low (0.56) + high (0.56), logic 1= l
             -ow (0.56) + high (1.68)
  50   1              {       
  51   2                      for(i=0; i<4; i++)
  52   2                   {
  53   3                         bByte = 0;
C51 COMPILER V7.08   REM                                                                   03/10/2006 07:53:15 PAGE 2   

  54   3                              for (j=0; j<8; j++)
  55   3                            {
  56   4                                           for (count=0; (!PIN_IR); count++) 
  57   4                                   Delay100us();              //经过底电平
  58   4                                              for (count=0; PIN_IR && (count < 30); count++) 
  59   4                                          Delay100us();
  60   4                                                  if (count == 0)
  61   4                                            {
  62   5                                                          j--;
  63   5                                                              continue; // 考虑有信号噪声
  64   5                                                         }
  65   4                                                bByte >>= 1; // shift right one bit
  66   4                                                if (count >= 9)
  67   4                                       {  // bit=0 => count<9; bit=1 => count>9
  68   5                                                          // > 0.9 ms==> logic 1
  69   5                                                          // else ==> logic 0
  70   5                                                      if (count >= 30){  BZ_rem=0; return;  } // count>30 => error
  71   5                                                      bByte |= 0x80;
  72   5                                                   }
  73   4                                    }
  74   3                             aIRCodes[i] = bByte;
  75   3                       }
  76   2                 }
  77   1      
  78   1      //------------------
  79   1      //      if (aIRCodes[0] != IR_CUSTOMER_CODE) return;            // 测试用户码是否能对应
  80   1      //      if ((aIRCodes[0]==0) && (aIRCodes[1]==0) && (aIRCodes[2]==0) && (aIRCodes[3]==0))
  81   1      //      { 
  82   1      //              BZ_rem=0;return;
  83   1      //        }
  84   1      //      else 
  85   1      //      {
  86   1                      if (aIRCodes[2] == ~aIRCodes[3])
  87   1                {
  88   2                              REM_value = aIRCodes[2];
  89   2                              REM_add=aIRCodes[0];
  90   2                              BZ_rem=1;//return;//"0x00"表示遥控用户码,"0x01"表示遥控键值,"0x02"表示16311键值.
  91   2                        }
  92   1      //              else 
  93   1      //                {BZ_rem=0;return;}
  94   1      //         }
  95   1      }
  96          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    198    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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