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

📄 uart.lst

📁 keil c51 UART --IC 源程序
💻 LST
字号:
C51 COMPILER V8.02   UART                                                                  05/25/2007 19:23:10 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE uart.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /* file: uart.c
   2           * author: xuhuashan@gmail.com
   3           * create date: 2006/04/15
   4           */
   5          
   6          #include <STC12C2052AD.H>
   7          
   8          #include "uart.h"
   9          
  10          #define XTAL            22118400L
  11          //#define XTAL          11059200L
  12          #define BAUDRATE        38400
  13          
  14          
  15          #define RX_BUF_LEN              16
  16          #define TX_BUF_LEN              16
  17          
  18          //receive buffer
  19          uchar idata rxBuf[RX_BUF_LEN];
  20          ubyte rxPos = 0;
  21          ubyte rxCnt = 0;
  22          
  23          uchar idata txBuf[TX_BUF_LEN];
  24          ubyte txPos = 0;
  25          ubyte txCnt = 0;
  26          uchar txDone = true;
  27          
  28          static void UartInterruptRoutine(void) interrupt 4 using 3
  29          {
  30   1              uchar c;
  31   1              if(RI)
  32   1              {
  33   2                      RI = 0;
  34   2                      c = SBUF;
  35   2                      if(rxCnt < RX_BUF_LEN)
  36   2                      {
  37   3                              rxBuf[(rxPos + rxCnt) % RX_BUF_LEN] = c;
  38   3                              rxCnt++;
  39   3                      }
  40   2              }
  41   1              if(TI)
  42   1              {
  43   2                      TI = 0;
  44   2                      if(txCnt)
  45   2                      {
  46   3                              SBUF = txBuf[txPos];
  47   3                              txCnt--;
  48   3                              txPos = (txPos + 1) % TX_BUF_LEN;
  49   3                      }
  50   2                      else
  51   2                              txDone = 1;
  52   2              }
  53   1      }
  54          
  55          void InitUart(void)
C51 COMPILER V8.02   UART                                                                  05/25/2007 19:23:10 PAGE 2   

  56          {
  57   1              PCON |= 0x80; // 0x80=SMOD: set serial baudrate doubler
  58   1              TMOD = (TMOD & 0x0F ) | 0x20; // put timer 1 into MODE 2
  59   1              TH1 = TL1 = (uchar)(256 - (XTAL / (16L * 12L * BAUDRATE)));
  60   1              TR1 = 1; // start timer 1
  61   1              SCON = 0x50; // serial port MODE 1, enable serial receiver
  62   1              PS = 0; // serial interrupt low level
  63   1              ES = 1; // enable serial interrupts
  64   1      }
  65          
  66          ubyte UartGetChar(uchar *c)
  67          {
  68   1              ES = 0;
  69   1              if(rxCnt > 0)
  70   1              {
  71   2                      *c = rxBuf[rxPos];
  72   2                      rxPos = (rxPos + 1) % RX_BUF_LEN;
  73   2                      rxCnt --;
  74   2                      ES = 1;
  75   2                      return 1;
  76   2              }
  77   1              ES = 1;
  78   1              return 0;
  79   1      }
  80          
  81          ubyte UartPutChar(const uchar c)
  82          {
  83   1              ubyte result = 0;
  84   1              ES = 0;
  85   1              if(txCnt < TX_BUF_LEN)
  86   1              {
  87   2                      txBuf[(txPos + txCnt) % TX_BUF_LEN] = c;
  88   2                      txCnt++;
  89   2                      if (txDone)
  90   2                      {
  91   3                              txDone = 0;
  92   3                              TI = 1;
  93   3                      }
  94   2                      result = 1;
  95   2              }
  96   1              ES = 1;
  97   1              return result;
  98   1      }
  99          


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