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

📄 yaok.lst

📁 本人收集的一些C语言程序
💻 LST
字号:
C51 COMPILER V7.50   YAOK                                                                  02/25/2006 15:24:32 PAGE 1   


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

line level    source

   1          /************************************************************************************/
   2          /*     程序名:红外解码                                                             */
   3          /*                                                                                  */
   4          /*     晶振:12.0 M                                        CPU型号:AT89S52         */
   5          /*                                                                                  */
   6          /*                                                                                  */
   7          /*     功能描述: (SAA3010T电视遥控器)红外解码程序                                  */
   8          /*                                      借鉴了磁动力的工作室http://www.cdle.net的代码,特此声明!        */
   9          /*                     如有侵权,请来函通知,再次表示感谢!                         */
  10          /*                                                                                  */
  11          /*     http://www.mculover.net                                                      */
  12          /*     http://www.mculover.net/bbs                                                  */
  13          /*                                                                                                                                                      */
  14          /*                                                                                  */
  15          /*                                                湘灵电子工作室 版权所有           */     
  16          /*                                                         2006-02-20               */
  17          /************************************************************************************/ 
  18          #include <reg51.h>
  19          
  20          sbit Led  = P1 ^ 7;
  21          sbit P3_2 = P3 ^ 2;
  22          sbit P1_0 = P1 ^ 0;
  23          sbit P1_2 = P1 ^ 2;
  24          sbit P1_1 = P1 ^ 1;
  25          
  26          static unsigned char data IRCode[3],IRCON,IRCON2;
  27          static unsigned char data DT;
  28          
  29          /*******************************************************************************************/
  30          void timeint(void) interrupt 1 using 2//定时器0中断处理
  31          {
  32   1              TH0=0xFc;     //12M: TH0=0XFC;TL0=0XE0;11.0592:TH0=0XFD;TL0=0X1E;
  33   1              TL0=0xe0;    // 设定时值为800us  500:FE0C
  34   1      
  35   1              if (IRCON<3)
  36   1              {
  37   2                      if (IRCON2<8) //每中断一次读一次遥控接收头的状态,每二次为遥控编码中的一个位
  38   2                      {
  39   3                              IRCON2++;
  40   3                              IRCode[IRCON]=IRCode[IRCON]<<1;     //每读一次放入变量中的二进制的一个位,每次左移一位
  41   3                              IRCode[IRCON]=IRCode[IRCON] | P3_2; //每八次填满一个字节,一个字节存放遥控编码4个位
  42   3                      }
  43   2                      else
  44   2                      {
  45   3                              IRCON++;  //填满一个字节,指向下一个变量
  46   3                              IRCON2=0; //计数清零
  47   3                      }
  48   2              }
  49   1              else
  50   1              {
  51   2                      TR0 = 0; //关闭定时器
  52   2                      ET0 = 0; //定时器0中断关闭
  53   2                      if ((IRCode[1] != 0xFF) && (IRCode[2] != 0xFF))
  54   2                      {
  55   3                              if (IRCode[1] == 0x55)
C51 COMPILER V7.50   YAOK                                                                  02/25/2006 15:24:32 PAGE 2   

  56   3                              {
  57   4                                      switch (IRCode[2]) 
  58   4                                      {
  59   5                                      case 0xAB:     //按下1键,LED1亮其他的LED灭
  60   5                                      P1_0 = 0; P1_1 = 1;P1_2 = 1;
  61   5                                      DT = 1;
  62   5                                      break;
  63   5                                      case 0xAC:   //按下2键,LED2亮其他的LED灭
  64   5                                      P1_1 = 0; P1_0 = 1;P1_2= 1;
  65   5                                      DT = 1;
  66   5                                      break;
  67   5                                      case 0xAD:    //按下3键,LED3亮其他的LED灭
  68   5                                      P1_2 = 0; P1_1 = 1;P1_0 = 1;
  69   5                                      DT = 1;
  70   5                                      break;
  71   5      
  72   5                                      case 0xD2: //POWER键,关闭
  73   5                                      P1 = 0xff;
  74   5                                      DT = 1;
  75   5                                      break;
  76   5                                      default :
  77   5                                      break;
  78   5                                      }//switch
  79   4                              }
  80   3                      }
  81   2              }
  82   1      }
  83          
  84          /***********************************************************************************/
  85          void INT0Fun(void) interrupt 0 using 2//INT0中断
  86          {
  87   1              EX0 = 0; //外部中断0关闭
  88   1              ET0 = 1; //定时器0中断打开
  89   1              TH0=0xFc;
  90   1              TL0=0xe0; //设定时值为800us
  91   1      
  92   1              for (IRCON=0; IRCON<3; IRCON++)
  93   1                      IRCode[IRCON] = 0;
  94   1      
  95   1              IRCON = 0;
  96   1              IRCON2 = 0; //计数清零
  97   1      
  98   1              TR0 = 1;//开始计数
  99   1      }
 100          /************************************************************************************/
 101          void main(void)
 102          {
 103   1              unsigned int de;
 104   1      
 105   1              TMOD = 0x01; //定时器0方式1
 106   1              EA = 1;      //允许CPU中断
 107   1              IT0 = 1;     //INT0下降沿有效
 108   1              EX0 = 1;     //开INT0中断
 109   1      
 110   1              P1 =  0xff;
 111   1              do
 112   1              {
 113   2                      for (de=0; de<8000; de++)
 114   2                              Led = 1;     //LED点亮
 115   2                      for (de=0; de<8000; de++)
 116   2                              Led = 0;     //LED熄灭
 117   2                      if (DT)
C51 COMPILER V7.50   YAOK                                                                  02/25/2006 15:24:32 PAGE 3   

 118   2                      {
 119   3                              EX0=0;  //关闭外中断
 120   3                              for (de=0; de<30000; de++) //这里起到按键值正确后会有一个延时,防止重复按键
 121   3                                      Led = 1;
 122   3                              for (de=0; de<30000; de++)
 123   3                                      Led = 0;
 124   3      
 125   3                              DT = 0;
 126   3                      }
 127   2                      EX0 = 1;
 128   2              }while(1);
 129   1      }


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