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

📄 main.lst

📁 HS50560-001SP红外线单片机解码程序。。。希望对大家有用
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  06/23/2008 10:50:23 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <lcd1602.h>
   3          
   4          void DelayA(void);
   5          void DelayB(void);
   6          
   7          sbit P32=P3^2;
   8          
   9          sbit P00=P0^0;
  10          void main(void)
  11          {
  12   1       unsigned int TempCyc;
  13   1       InitLCD();
  14   1       Write_Instruction(0x01);
  15   1      // Write_Instruction(0x81);
  16   1      // Write_Data(0x30);
  17   1      // InitCom();//初始化串口
  18   1       EA=1;//允许CPU中断
  19   1       IT0=1;//INT0下降沿有效
  20   1       EX0=1;//开INT0中断
  21   1       do
  22   1       {
  23   2        for(TempCyc=0;TempCyc<35000;TempCyc++);
  24   2        for(TempCyc=0;TempCyc<30000;TempCyc++);
  25   2       }
  26   1       while(1);
  27   1      }
  28          
  29          //INT0中断
  30          void INT0FUN(void)interrupt 0 using 2
  31          {
  32   1       unsigned char IRCode[2],IROK;
  33   1       unsigned int TempCyc,TempCycB,TempCycA;
  34   1       EX0=0;//关闭中断0
  35   1       IROK=0;
  36   1       DelayA();//延时等待引导码的前半部结束
  37   1       DelayA();
  38   1       if(!P32)//检验前半部是否过早结束,仿干扰
  39   1       {
  40   2        for(TempCycA=0;TempCycA<2;TempCycA++)
  41   2        {
  42   3         DelayA();
  43   3         if(P32)//检验前半部是否过早,防干扰
  44   3         {
  45   4              for(TempCyc=0;TempCyc<300;TempCyc++)
  46   4              if(!P32)break;//等待第一个位
  47   4              if(TempCyc<300)//超时检验
  48   4              {
  49   5               for(TempCyc=0;TempCyc<8;TempCyc++)
  50   5               {
  51   6                while(!P32);//等待P32拉高,开始位的下部分
  52   6                DelayB();//这里没社超时,实际应用在多功能的设计时应设超时
  53   6                IRCode[TempCycA]=IRCode[TempCycA]>>1;
  54   6                if(P32)//当延时750us后P32仍为高则当前位为1
  55   6                {
C51 COMPILER V8.02   MAIN                                                                  06/23/2008 10:50:23 PAGE 2   

  56   7                 IRCode[TempCycA]=IRCode[TempCycA]|0x80;
  57   7                 for(TempCycB=0;TempCycB<100;TempCycB++)
  58   7                 if(!P32)break;
  59   7                 if(TempCycB>99)
  60   7                 goto endchk;
  61   7                }
  62   6               }
  63   5              }
  64   4              else
  65   4                goto endchk;
  66   4         }
  67   3         else
  68   3            goto endchk;
  69   3                IROK++;
  70   3        }
  71   2       }
  72   1       endchk:
  73   1         if(IROK==2)
  74   1         {
  75   2               if(IRCode[1]==0x10)//1号键
  76   2               {
  77   3      //        P00=~P00;
  78   3      //        InitLCD();     
  79   3      //       Write_Instruction(0x01);
  80   3      //       Write_Instruction(0x81);
  81   3      //       Write_Data(0x30);
  82   3                InitLCD();
  83   3       Write_Instruction(0x01);
  84   3       Write_Instruction(0x81);
  85   3       Write_Data(0x30);
  86   3               }
  87   2      /*
  88   2               if(IRCode[1]==0x11)//2
  89   2      //       P00=~P00;
  90   2               if(IRCode[1]==0x12)//3
  91   2      //       P12=~P12;
  92   2               if(IRCode[1]==0x13)//4
  93   2      //       P13=~P13;
  94   2               if(IRCode[1]==0x14)//5
  95   2      //       P14=~P14;
  96   2               if(IRCode[1]==0x15)//6
  97   2      //       P15=~P15;
  98   2               if(IRCode[1]==0x16)//7
  99   2      //       P16=~P16;
 100   2               if(IRCode[1]==0x17)//8
 101   2      //       P17=~P17;
 102   2               if(IRCode[1]==0x0e)//8
 103   2      //       P1=~P1;
 104   2                                       */
 105   2               for(TempCyc=0;TempCyc<300;TempCyc++)
 106   2               DelayA();
 107   2         }
 108   1               EX0=1;
 109   1      }
 110          
 111          void DelayA(void)
 112          {
 113   1       unsigned int TempCyc;
 114   1       for(TempCyc=0;TempCyc<650;TempCyc++);//3.5
 115   1      }
 116          
 117          void DelayB(void)
C51 COMPILER V8.02   MAIN                                                                  06/23/2008 10:50:23 PAGE 3   

 118          {
 119   1       unsigned int TempCyc;
 120   1       for (TempCyc=0;TempCyc<93;TempCyc++);//0.75ms
 121   1      }


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