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

📄 rs_main.lst

📁 51单片机红外线遥控器解码源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
CX51 COMPILER x7.00  RS_MAIN                                                               05/07/2006 20:40:55 PAGE 1   


CX51 COMPILER V7.00, COMPILATION OF MODULE RS_MAIN
OBJECT MODULE PLACED IN RS_Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\CX51.EXE RS_Main.c DB OE SMALL ROM(LARGE)

stmt level    source

   1          
   2          #include                <REG51.H>
   3          
   4          //定义端口资源
   5          
   6          sbit            Control_1       =       P1^0;                           /*      输出到光耦,低电平选通*/
   7          sbit            Control_2       =       P1^2;                           /*      输出到光耦,低电平选通*/
   8          sbit            Control_3       =       P1^4;                           /*      输出到光耦,低电平选通*/
   9          sbit            Control_4       =       P1^6;                           /*      输出到光耦,低电平选通*/
  10          
  11          sbit            Control_LED1    =       P1^1;                   /*      输出到发光二极管,低电平点亮*/
  12          sbit            Control_LED2    =       P1^3;                   /*      输出到发光二极管,低电平点亮*/
  13          sbit            Control_LED3    =       P1^5;                   /*      输出到发光二极管,低电平点亮*/
  14          sbit            Control_LED4    =       P1^7;                   /*      输出到发光二极管,低电平点亮*/
  15          
  16          sbit            BUZZER_Control  =       P3^6;                   /*      蜂鸣器,低电平蜂鸣*/
  17          
  18          sbit            RUN_LED         =       P3^7;                   /*      运行指示LED     */
  19          
  20          
  21          //键盘编码
  22          
  23          #define KEY_SHIFT               0x06
  24          #define KEY_TONE                0x16
  25          #define KEY_POWER               0x86
  26          #define KEY_1                   0x7E
  27          #define KEY_2                   0x2E
  28          #define KEY_3                   0x26
  29          #define KEY_4                   0x5E
  30          #define KEY_5                   0x6E
  31          #define KEY_6                   0x56
  32          #define KEY_7                   0x9E
  33          #define KEY_8                   0xAE
  34          #define KEY_9                   0xB6
  35          #define KEY_0                   0xBE
  36          #define KEY_ESC         0x96
  37          #define KEY_DEC         0xDE
  38          #define KEY_OK                  0x8E
  39          #define KEY_INC                 0xCE
  40          
  41          
  42          void            Main_Initlization( void );                      /*      主初始化程序*/
  43          void            Interrupt_INT0( void );                         /*      遥控解码*/
  44          void            Interrupt_INT1( void );                         /*      10ms定时脉冲中断*/
  45          void            Interrupt_T0( void );                           /*      遥控解码*/
  46          void            Interrupt_T1( void );                           /*      PWM 定时器*/
  47          
  48          void            KEY_Process( void );                            /*      遥控按键解码*/
  49          
  50          void            APP_Initlization( void );                       /*      应用程序初始化*/
  51          
  52          void            CH_LED_Control( void );                 /*      通道指示灯*/
  53          void            CH_Power_ON( void );                            /*      电源控制*/
  54          void            RUN_LED_Control( void );                        /*      运行指示灯控制*/
  55          unsigned char           VOL_INC( unsigned char VOL );   /*      通道功率增加*/
CX51 COMPILER x7.00  RS_MAIN                                                               05/07/2006 20:40:55 PAGE 2   

  56          unsigned char           VOL_DEC( unsigned char VOL );   /*      通道功率减小*/
  57          
  58          /*      遥控器解码变量定义*/
  59          bit                             KEY_DECODE_OK;                  /*      遥控器解码成功标志*/
  60          bit                             Fresh_KEY_Flag;                         /*      首次按键标志*/
  61          unsigned char           KEY_DECODE;                             /*      解码后的键值*/
  62          
  63          unsigned char           RS_Index;                                       /*      当前遥控码位置*/
  64          unsigned char           RS_High;                                        /*      遥控器解码定时器高位*/
  65          unsigned long           RS_Decode;                                      /*      解码数据*/
  66          
  67          union   URS_CODE                                                        /*      遥控码解码数据*/
  68          {                                                                                       /*      格式:设备码1E,设备反码E1*/
  69                  unsigned char KEY[4];                                           /*      数据码,数据反码,32bit */
  70                  unsigned long   FULL_KEY;
  71          } RS_CODE;
  72          
  73          /*      PWM 信号发生脉冲变量定义*/
  74          unsigned char           TimeSlot;                                       /*      PWM定时器*/
  75          unsigned char           CH_Vol[4];                                      /*      通道音量数据*/
  76          unsigned char           Current_CH;                                     /*      当前遥控控制通道选择0~3*/
  77          
  78          bit                             POWER_FLAG;                             /*      电源总开关标志*/
  79          
  80          #define                 PWM_INIT        200                             /*      初始计数值*/
  81          #define                 VOL_MAX PWM_INIT-2              /*      最大值,越大,功率越大*/
  82          #define                 VOL_MIN VOL_MAX-40              /*      最小值,越小,功率越低*/
  83          #define                 VOL_INIT        VOL_MIN + 10            /*      初始亮度*/
  84          
  85          #define                 IDLE_Cnt        3                               /*      空闲时间,确定新键按下*/
  86          
  87          unsigned        char            P1_Mirror;                                      /*      P1口镜像寄存器*/
  88          unsigned char           LED_Mirror;                                     /*      LED镜像寄存器*/
  89          
  90          /*      系统处理变量定义*/
  91          bit     System_Timer;                                                   /*      系统10ms定时标志,来自100Hz中断*/
  92          bit     Timer_Flag;                                                             /*      10ms定时器标志*/
  93          
  94          unsigned char           LED_FLASH_Cnt;                          /*      LED闪烁定时器*/
  95          unsigned char           PRE_KEY;                                        /*      前一个按键数据*/
  96          
  97          /********************************************************************/
  98          /*                                                      主程序                                                          */
  99          /********************************************************************/
 100          void            main( void )
 101          {
 102   1              Main_Initlization( );                                           /*      主初始化程序*/
 103   1              APP_Initlization( );                                            /*      应用程序初始化*/
 104   1      
 105   1              while( 1 )
 106   1              {
 107   2                      KEY_Process( );                                         /*      键盘处理*/
 108   2                      CH_LED_Control( );                                      /*      通道指示灯*/
 109   2      
 110   2      
 111   2                      /*      定时器服务*/
 112   2                      if( System_Timer )
 113   2                      {
 114   3                              System_Timer = 0;
 115   3                              Timer_Flag = 1;
 116   3                      }
 117   2      
CX51 COMPILER x7.00  RS_MAIN                                                               05/07/2006 20:40:55 PAGE 3   

 118   2                      /*      RUN_LED闪灯程序,正常1s闪烁一次,遥控解码时,快速闪烁*/
 119   2      
 120   2                      RUN_LED_Control( );
 121   2      
 122   2                      if( Timer_Flag )
 123   2                              Timer_Flag = 0;
 124   2              }
 125   1      }
 126          
 127          /********************************************************************/
 128          /*              遥控按键解码处理程序                                                            */
 129          /********************************************************************/
 130          void            KEY_Process( void )                             /*      遥控按键解码*/
 131          {
 132   1              if( KEY_DECODE_OK )
 133   1              {
 134   2                      KEY_DECODE_OK = 0;                                      /*      处理结束*/
 135   2      
 136   2                      switch( KEY_DECODE )                                    /*      根据键值散转*/
 137   2                      {
 138   3                              /*      电源总开关控制*/
 139   3                              case    KEY_POWER:      if( Fresh_KEY_Flag )
 140   3                                                                      {
 141   4                                                                              POWER_FLAG = !POWER_FLAG;
 142   4                                                                              if( POWER_FLAG )
 143   4                                                                                      CH_Power_ON( );
 144   4                                                                      }
 145   3                                                                      break;
 146   3                              /*      通道电源功率增加*/
 147   3                              case    KEY_INC:        if( POWER_FLAG )
 148   3                                                                      {
 149   4                                                                              if( Current_CH == 0 )           /*      所有通道*/
 150   4                                                                              {
 151   5                                                                                      CH_Vol[ 0 ]  = VOL_INC( CH_Vol[ 0 ] );
 152   5                                                                                      CH_Vol[ 1 ]  = VOL_INC( CH_Vol[ 1 ] );
 153   5                                                                                      CH_Vol[ 2 ]  = VOL_INC( CH_Vol[ 2 ] );
 154   5                                                                                      CH_Vol[ 3 ]  = VOL_INC( CH_Vol[ 3 ] );
 155   5                                                                              }
 156   4                                                                              else
 157   4                                                                                      CH_Vol[ Current_CH -1 ]  = VOL_INC( CH_Vol[ Current_CH -1 ] );
 158   4                                                                      }
 159   3                                                                      break;
 160   3                              /*      通道电源功率减小*/
 161   3                              case    KEY_DEC:        if( POWER_FLAG )
 162   3                                                                      {
 163   4                                                                              if( Current_CH == 0 )           /*      所有通道*/
 164   4                                                                              {
 165   5                                                                                      CH_Vol[ 0 ]  = VOL_DEC( CH_Vol[ 0 ] );
 166   5                                                                                      CH_Vol[ 1 ]  = VOL_DEC( CH_Vol[ 1 ] );
 167   5                                                                                      CH_Vol[ 2 ]  = VOL_DEC( CH_Vol[ 2 ] );
 168   5                                                                                      CH_Vol[ 3 ]  = VOL_DEC( CH_Vol[ 3 ] );
 169   5                                                                              }
 170   4                                                                              else
 171   4                                                                                      CH_Vol[ Current_CH -1 ]  = VOL_DEC( CH_Vol[ Current_CH -1 ] );
 172   4                                                                      }
 173   3                                                                      break;
 174   3                              /*      遥控控制通道切换,循环切换*/
 175   3                              case    KEY_TONE:       if( Fresh_KEY_Flag )
 176   3                                                                      {
 177   4                                                                              Current_CH ++;
 178   4                                                                              if( Current_CH > 4 )
 179   4                                                                                      Current_CH = 1;
CX51 COMPILER x7.00  RS_MAIN                                                               05/07/2006 20:40:55 PAGE 4   

 180   4                                                                      }

⌨️ 快捷键说明

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