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

📄 remote_drv.lst

📁 atmel at89c51snd1c mp3芯片方案源码
💻 LST
字号:
C51 COMPILER V7.50   REMOTE_DRV                                                            02/16/2009 09:59:54 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE REMOTE_DRV
OBJECT MODULE PLACED IN remote_drv.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE lib_mcu\remote\remote_drv.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\remote_
                    -drv.lst) OBJECT(remote_drv.obj)

line level    source

   1          
   2          #include "config.h"                         /* lib configuration header */
   3          #include "remote_drv.h"
   4          #include "lib_mcu\timer\timer_drv.h"        /* timer driver definition */
   5          #include "lib_mcu\lcd\lcd_drv.h" 
   6          #include "lib_mcu\kbd\key_drv.h"            /* Keyboard driver definition */
   7          #include <stdio.h>
   8          
   9          
  10          INT8U  gl_rmt;
  11          bit    gl_rmt_ok;
  12          
  13          INT32U u32RmtValue;           /*用于存放接收到的遥控信号*/
  14          INT8U  u8BitPoint;
  15          INT8U  u8ReceiveEnd;
  16          
  17          
  18          
  19          /////////////////////////////////////////////////////////////////////////////
  20          void  remote_disable(void)    
  21          {
  22   1        EX1 = 0;
  23   1      }
  24          
  25          
  26          /////////////////////////////////////////////////////////////////////////////
  27          void  remote_enable(void)     
  28          {
  29   1        u32RmtValue = 0;      //32bit receive value = 0
  30   1        u8ReceiveEnd = 0;     //not start to receive
  31   1        u8BitPoint = 0;       //bit point reset
  32   1        gl_rmt = 0xff;
  33   1        gl_rmt_ok = FALSE; 
  34   1        EX1 = 1;              //enable ext1 interrupt
  35   1      }
  36          
  37          
  38          /////////////////////////////////////////////////////////////////////////////
  39          void t1_remote_init(void)
  40          {
  41   1        T1_init(0,0,0x10);    //T1工作于方式1,16BIT计数器
  42   1        T1_start();           //开计数器1,用于判断遥控脉冲周期
  43   1        IT1 = 1;              //外部中断INT1管脚电平下降沿触发中断
  44   1        remote_enable();
  45   1      }
  46          
  47          
  48          
  49          /////////////////////////////////////////////////////////////////////////////
  50          INT8U remote_value(void)
  51          {
  52   1         INT8U u8Value;
  53   1      
  54   1         if(gl_rmt_ok == TRUE)
C51 COMPILER V7.50   REMOTE_DRV                                                            02/16/2009 09:59:54 PAGE 2   

  55   1         {
  56   2            switch(gl_rmt)
  57   2                {
  58   3                       case 0x90:  u8Value = REMOTE_0;      break;  
  59   3               case 0x00:  u8Value = REMOTE_1;      break;
  60   3               case 0x10:  u8Value = REMOTE_2;      break;
  61   3               case 0x08:  u8Value = REMOTE_3;      break;
  62   3               case 0x18:  u8Value = REMOTE_4;      break;
  63   3               case 0x04:  u8Value = REMOTE_5;      break;
  64   3               case 0x14:  u8Value = REMOTE_6;      break;
  65   3               case 0x0c:  u8Value = REMOTE_7;      break;
  66   3               case 0x1c:  u8Value = REMOTE_8;      break;
  67   3               case 0x80:  u8Value = REMOTE_9;      break;
  68   3               case 0x50:  u8Value = REMOTE_CHUP;   break;
  69   3               case 0x48:  u8Value = REMOTE_CHDN;   break;
  70   3               case 0x4c:  u8Value = REMOTE_MUTE;   break;
  71   3               case 0x40:  u8Value = REMOTE_POWN;   break;
  72   3               case 0x44:  u8Value = REMOTE_VOUP;   break;
  73   3               case 0x54:  u8Value = REMOTE_VODN;   break;
  74   3                       case 0xd8:  u8Value = REMOTE_CALL;   break;
  75   3                       case 0xcc:  u8Value = REMOTE_LUUP;   break;
  76   3                       case 0xdc:  u8Value = REMOTE_LUDN;   break;
  77   3               case 0x88:  u8Value = REMOTE_10UP;   break;
  78   3               case 0xe8:  u8Value = REMOTE_TIME;   break;
  79   3               case 0xec:  u8Value = REMOTE_NONE;   break;
  80   3               default :   u8Value = REMOTE_NONE;   break;
  81   3                }
  82   2            remote_disable();
  83   2                return (u8Value);
  84   2         }
  85   1         else
  86   1            return (0xff);
  87   1      } 
  88          
  89          
  90          
  91          
  92          //////////////////////////////////////////////////////////////////////////////////
  93          Interrupt(remote_int(void), IRQ_INT1)
  94          {
  95   1        INT8U  bTbit;
  96   1        INT8U  i;
  97   1        INT16U u16TimeValue;
  98   1      
  99   1        EX1 = 0;                  //关中断
 100   1      
 101   1        T1_stop();                //关定时器
 102   1        u16TimeValue = TH1;       //取定时器值
 103   1        u16TimeValue <<= 8;
 104   1        u16TimeValue += TL1;
 105   1        TH1 = 0x00;
 106   1        TL1 = 0x00;
 107   1        T1_start();               //开定时器  
 108   1      
 109   1        if((u16TimeValue > 1800)&&(u16TimeValue < 2200))
 110   1           bTbit = 1;
 111   1        else if((u16TimeValue > 900)&&(u16TimeValue < 1100))
 112   1           bTbit = 0;             //判断出得到的位是1还是0
 113   1           
 114   1        if(u8BitPoint < 32)
 115   1        {
 116   2          u32RmtValue += bTbit;
C51 COMPILER V7.50   REMOTE_DRV                                                            02/16/2009 09:59:54 PAGE 3   

 117   2          u8BitPoint ++;
 118   2          u32RmtValue <<= 1;
 119   2        }
 120   1        else 
 121   1        {
 122   2              u8ReceiveEnd = 1; 
 123   2              u8BitPoint = 0;
 124   2        }
 125   1      
 126   1        if(u8ReceiveEnd == 1)     //收满4个字节的数据后,进行字节内容判断
 127   1        {
 128   2              for(i=0; i<16; i++)
 129   2              {
 130   3                 if((u32RmtValue & 0xff000000) == 0xe2000000)
 131   3                 {
 132   4                        gl_rmt = (u32RmtValue >> 16);
 133   4                gl_rmt_ok = TRUE; 
 134   4                        break;
 135   4                 }
 136   3                 else
 137   3                 {
 138   4                        u32RmtValue <<= 1;
 139   4                 }
 140   3              } 
 141   2              u8ReceiveEnd = 0;
 142   2              u32RmtValue = 0;
 143   2        }
 144   1      
 145   1        EX1 = 1;    
 146   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    564    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      7       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -