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

📄 main.lst

📁 手把手教你单片机
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  01/12/2011 22:59:02 PAGE 1   


C51 COMPILER V8.02, 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           * IO 模拟 UART
   3           *
   4           * author:金沙滩--刚哥
   5           * date:2011.1.9
   6          */
   7          
   8          #include <reg52.h>
   9          
  10          typedef unsigned char uint8;
  11          typedef unsigned int uint16;
  12          
  13          sbit RXD2 = P3^0;
  14          sbit TXD2 = P3^1;
  15          
  16          #define MCLK            11059200UL
  17          #define BAUD_RATE       9600UL
  18          
  19          #define WAIT_TIME()     do{while(!TF0);TF0 = 0;}while(0)
  20          
  21          /*
  22           * 定时器初始化
  23          */
  24          void timer0_init(void)
  25          {
  26   1              TMOD &= 0xF0;
  27   1              TMOD |= 0x02;                //计数器0,方式2
  28   1              TH0 = 256 - MCLK/(12*BAUD_RATE);
  29   1              TL0 = TH0;
  30   1              TF0 = 0;
  31   1              TR0 = 0;
  32   1      }
  33          
  34          /*
  35           * UART发送
  36          */
  37          void UART_send_byte(uint8 dat)
  38          {
  39   1              uint8 len=8;
  40   1              
  41   1              // 1. start bit
  42   1              TL0 = TH0;
  43   1              TR0 = 1;
  44   1              TXD2 = 0;
  45   1              WAIT_TIME();
  46   1              // 2. DAT_LEN bit data
  47   1              while (len--)
  48   1              {
  49   2                      TXD2 = (bit)(dat & 0x01);     //先发送低位
  50   2                      WAIT_TIME();
  51   2                      dat = dat>>1;
  52   2              }
  53   1              // 3. stop bit
  54   1              TXD2 = 1;
  55   1              WAIT_TIME();
C51 COMPILER V8.02   MAIN                                                                  01/12/2011 22:59:02 PAGE 2   

  56   1              TR0=0;
  57   1      }
  58          
  59          /*
  60           * UART接收
  61          */
  62          uint8 UART_rev_byte(void)
  63          {
  64   1          uint8 len=8, dat=0;
  65   1      
  66   1              while (RXD2);
  67   1      
  68   1              // 1. jump start bit
  69   1              TR0 = 1;
  70   1              TL0 = 256 - MCLK/(12*BAUD_RATE)/2;
  71   1          WAIT_TIME();
  72   1              WAIT_TIME();  
  73   1      
  74   1          // 2. receive DAT_LEN bit data
  75   1          while (len--)
  76   1          {
  77   2              dat >>= 1;
  78   2              if (RXD2) 
  79   2                              dat  |= 0x80;
  80   2                      WAIT_TIME();
  81   2          }
  82   1      
  83   1              // 3. wait stop bit
  84   1              WAIT_TIME();
  85   1              TR0 = 0; 
  86   1      
  87   1          return dat;
  88   1      }
  89          
  90          
  91          main()
  92          {
  93   1              uint8 a;
  94   1      
  95   1              timer0_init();
  96   1      
  97   1              while (1)
  98   1              {
  99   2      
 100   2                      UART_send_byte('i');
 101   2                      UART_send_byte('n');
 102   2                      UART_send_byte('p');
 103   2                      UART_send_byte('u');
 104   2                      UART_send_byte('t');
 105   2                      UART_send_byte(':');
 106   2      
 107   2                      a = UART_rev_byte();
 108   2                      UART_send_byte(a);
 109   2                      
 110   2                      UART_send_byte('\r');
 111   2                      UART_send_byte('\n');
 112   2              }
 113   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    168    ----
C51 COMPILER V8.02   MAIN                                                                  01/12/2011 22:59:02 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -