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

📄 main.lst

📁 手把手教你单片机
💻 LST
字号:
C51 COMPILER V7.08   MAIN                                                                  01/06/2011 11:18:28 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           * UART初始化
  18           * 波特率:9600
  19          */
  20          void uart_init(void)
  21          {
  22   1          TMOD = 0x21; 
  23   1          SCON = 0x50; 
  24   1      
  25   1          TH1 = 0xFD;
  26   1          TL1 = 0xFD;
  27   1      
  28   1          TR1 = 1;
  29   1      }
  30          
  31          /*
  32           * UART发送一字节
  33          */
  34          void UART_Send_Byte(uint8 dat)
  35          {
  36   1              SBUF = dat;
  37   1              while (TI == 0);
  38   1              TI = 0;
  39   1      }
  40          
  41          
  42          /*
  43           * 获取低电平时间
  44          */
  45          unsigned int Ir_Get_Low()
  46          {
  47   1              TL0 = 0;
  48   1              TH0 = 0;
  49   1              TR0 = 1;
  50   1              while (!Ir_Pin && (TH0&0x80)==0);  
  51   1                    
  52   1              TR0 = 0;           
  53   1              return (TH0 * 256 + TL0);
  54   1      }
  55          
C51 COMPILER V7.08   MAIN                                                                  01/06/2011 11:18:28 PAGE 2   

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

C51 COMPILER V7.08   MAIN                                                                  01/06/2011 11:18:28 PAGE 3   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    279    ----
   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 + -