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

📄 main.lst

📁 手把手教你单片机
💻 LST
字号:
C51 COMPILER V7.08   MAIN                                                                  04/07/2011 17:57:37 PAGE 1   


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

line level    source

   1          /*
   2          * 红外接收数据,中断方式,并通过串口发送
   3          *
   4          * 晶振:11.0592M
   5          */
   6          
   7          #include <reg52.h>
   8          
   9          typedef unsigned char uint8;
  10          
  11          sbit Ir_Pin = P3^3;
  12          
  13          uint8 Ir_Buf[4]; //用于保存解码结果
  14          
  15          
  16          /*
  17           * 外部中断初始化
  18          */
  19          void int1_init(void)
  20          {
  21   1              IT1 = 1; //下降沿有效
  22   1              EX1 = 1;
  23   1              EA = 1;
  24   1      }
  25          
  26          /*
  27           * UART初始化
  28           * 波特率:9600
  29          */
  30          void uart_init(void)
  31          {
  32   1          TMOD = 0x21; 
  33   1          SCON = 0x50; 
  34   1      
  35   1          TH1 = 0xFD;
  36   1          TL1 = 0xFD;
  37   1      
  38   1          TR1 = 1;
  39   1      }
  40          
  41          /*
  42           * UART发送一字节
  43          */
  44          void UART_Send_Byte(uint8 dat)
  45          {
  46   1              SBUF = dat;
  47   1              while (TI == 0);
  48   1              TI = 0;
  49   1      }
  50          
  51          
  52          /*
  53           * 获取低电平时间
  54          */
  55          unsigned int Ir_Get_Low()
C51 COMPILER V7.08   MAIN                                                                  04/07/2011 17:57:37 PAGE 2   

  56          {
  57   1              TL0 = 0;
  58   1              TH0 = 0;
  59   1              TR0 = 1;
  60   1              while (!Ir_Pin && (TH0&0x80)==0);  
  61   1                    
  62   1              TR0 = 0;           
  63   1              return (TH0 * 256 + TL0);
  64   1      }
  65          
  66          /*
  67           * 获取高电平时间
  68          */
  69          unsigned int Ir_Get_High()
  70          {
  71   1              TL0 = 0;
  72   1              TH0 = 0;
  73   1              TR0 = 1;
  74   1              while (Ir_Pin && (TH0&0x80)==0);
  75   1      
  76   1              TR0 = 0;
  77   1              return (TH0 * 256 + TL0);
  78   1      }
  79          
  80          
  81          main()
  82          {
  83   1              uart_init();
  84   1              int1_init();
  85   1      
  86   1              while (1);
  87   1      }
  88          
  89          void int1_isr() interrupt 2
  90          {
  91   1              unsigned int temp;
  92   1              char i,j;
  93   1      
  94   1              temp = Ir_Get_Low();
  95   1              if ((temp < 7833) || (temp > 8755))  //引导脉冲低电平8500~9500us
  96   1                      return;
  97   1              temp = Ir_Get_High();
  98   1              if ((temp < 3686) || (temp > 4608))  //引导脉冲高电平4000~5000us
  99   1                      return;
 100   1      
 101   1              for (i=0; i<4; i++) //4个字节
 102   1              {
 103   2                      for (j=0; j<8; j++) //每个字节8位
 104   2                      {
 105   3                              temp = Ir_Get_Low();
 106   3                              if ((temp < 184) || (temp > 737)) //200~800us
 107   3                                      return;
 108   3      
 109   3                              temp = Ir_Get_High();
 110   3                              if ((temp < 184) || (temp > 1843)) //200~2000us
 111   3                                      return;
 112   3      
 113   3                              Ir_Buf[i] >>= 1;
 114   3                              if (temp > 1032) //1120us
 115   3                                      Ir_Buf[i] |= 0x80;
 116   3                      }
 117   2              }
C51 COMPILER V7.08   MAIN                                                                  04/07/2011 17:57:37 PAGE 3   

 118   1      
 119   1              UART_Send_Byte(Ir_Buf[0]);
 120   1              UART_Send_Byte(Ir_Buf[1]);
 121   1              UART_Send_Byte(Ir_Buf[2]);
 122   1              UART_Send_Byte(Ir_Buf[3]);
 123   1      }
 124          
 125          
 126          


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