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

📄 uart.lst

📁 STC51系列的源码
💻 LST
字号:
C51 COMPILER V8.02   UART                                                                  09/25/2008 20:18:48 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\UART.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\UART\UART.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\UART.lst) OBJECT(.\U
                    -ART.obj)

line level    source

   1          /********************************************************************************/
   2          /* filename : UART.c                                                            */
   3          /* created  : xillinx                                                           */
   4          /* descript : 处理与串口相关的事情                                              */
   5          /********************************************************************************/
   6          #include "../CPU/CPU.h"
   7          #include "../CFG/CFG.h"
   8          #include "../UART/UART.h"
   9          
  10          unsigned char code ascii_table[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
  11          
  12          unsigned char UART_send_buffer[UART_SEND_BUF_MAX];
  13          unsigned int  uart_xmit_wr;
  14          unsigned int  uart_xmit_rd;
  15          unsigned int  uart_xmit_start;
  16          
  17          unsigned char UART_recv_buffer[UART_RECV_BUF_MAX];
  18          unsigned int  uart_recv_wr;
  19          unsigned int  uart_recv_rd;
  20          unsigned int  uart_recv_start;
  21          
  22          /********************************************************************************/
  23          /* fun_name : UART_buffer_initilize()                                           */
  24          /* version  : v1.00                                                             */
  25          /* created  : xillinx                                                           */
  26          /********************************************************************************/
  27          void UART_buffer_initilize(void)
  28          {   uart_xmit_start = 0x0;
  29   1          uart_recv_start = 0x0;
  30   1          uart_xmit_wr    = 0x0;
  31   1          uart_xmit_rd    = 0x0;
  32   1          uart_recv_wr    = 0x0;
  33   1          uart_recv_rd    = 0x0;
  34   1      }
  35          
  36          /********************************************************************************/
  37          /* fun_name : UART_printf()                                                     */
  38          /* version  : v1.00                                                             */
  39          /* created  : xillinx                                                           */
  40          /********************************************************************************/
  41          void UART_printf(char * string,...)
  42          {   unsigned int  length;
  43   1          unsigned char i;
  44   1          char uart_buffer[UART_EACH_MSG_MAX];
  45   1          va_list arguments;
  46   1          EA=0x0;
  47   1          va_start(arguments,string);
  48   1          vsprintf(uart_buffer,string,arguments);
  49   1          va_end(arguments);
  50   1          length=strlen(uart_buffer);
  51   1          
  52   1          for(i=0x0;i<length;i++)
  53   1          {  if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
  54   2             {  break;
C51 COMPILER V8.02   UART                                                                  09/25/2008 20:18:48 PAGE 2   

  55   3             }
  56   2             UART_send_buffer[uart_xmit_wr]=uart_buffer[i];
  57   2             uart_xmit_wr++;
  58   2             uart_xmit_wr&=UART_SEND_BUF_MSK;
  59   2          }
  60   1          
  61   1          if(uart_xmit_start==0x0)    //* 如果需要启动发生,就启动
  62   1          {  uart_xmit_start=0x1;
  63   2             TI=1;
  64   2          }
  65   1          EA=0x1;
  66   1          return;
  67   1      }
  68          
  69          /********************************************************************************/
  70          /* fun_name : UART_put_double_char()                                            */
  71          /* version  : v1.00                                                             */
  72          /* created  : xillinx                                                           */
  73          /********************************************************************************/
  74          void UART_put_double_char(unsigned char status, unsigned char hi,unsigned char lo)
  75          {   UART_send_buffer[uart_xmit_wr]=status;
  76   1          uart_xmit_wr++;
  77   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
  78   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x4)&0xF];
  79   1          uart_xmit_wr++;
  80   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
  81   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x0)&0xF];
  82   1          uart_xmit_wr++;
  83   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
  84   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x4)&0xF];
  85   1          uart_xmit_wr++;
  86   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
  87   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x0)&0xF];
  88   1          uart_xmit_wr++;
  89   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
  90   1          if(uart_xmit_start==0x0)    //* 如果需要启动发生,就启动
  91   1          {  uart_xmit_start=0x1;
  92   2             TI=1;
  93   2          }
  94   1      }
  95          
  96          /********************************************************************************/
  97          /* fun_name : UART_putchar()                                                    */
  98          /* version  : v1.00                                                             */
  99          /* created  : xillinx                                                           */
 100          /********************************************************************************/
 101          void UART_putchar(char ch)
 102          {   if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
 103   1          {  return;
 104   2          }
 105   1          EA=0x0;
 106   1          UART_send_buffer[uart_xmit_wr]=ch;
 107   1          uart_xmit_wr++;
 108   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 109   1          if(uart_xmit_start==0x00)
 110   1          {  uart_xmit_start=0x1;
 111   2             TI=0x1;
 112   2          }
 113   1          EA=0x1;
 114   1          return;
 115   1      }
 116          
C51 COMPILER V8.02   UART                                                                  09/25/2008 20:18:48 PAGE 3   

 117          /********************************************************************************/
 118          /* fun_name : UART_xmit_isr_process()                                           */
 119          /* version  : v1.00                                                             */
 120          /* created  : xillinx                                                           */
 121          /********************************************************************************/
 122          void UART_xmit_isr_process(void)
 123          {   if(uart_xmit_wr!=uart_xmit_rd)
 124   1          {  SBUF=UART_send_buffer[uart_xmit_rd];
 125   2             uart_xmit_rd++;
 126   2             uart_xmit_rd&=UART_SEND_BUF_MSK;
 127   2             uart_xmit_start=0x1;
 128   2          }
 129   1          else
 130   1          {  uart_xmit_start=0x0;
 131   2          }
 132   1          return;
 133   1      }
 134          
 135          /********************************************************************************/
 136          /* fun_name : UART_recv_isr_process()                                           */
 137          /* version  : v1.00                                                             */
 138          /* created  : xillinx                                                           */
 139          /********************************************************************************/
 140          void UART_recv_isr_process(void)
 141          {   if(((uart_recv_wr+0x1)&UART_RECV_BUF_MSK)==uart_recv_rd) //* 缓冲区已经满了
 142   1          {  return;
 143   2          }
 144   1          UART_recv_buffer[uart_recv_wr]=SBUF;
 145   1          uart_recv_wr++;
 146   1          uart_recv_wr&=UART_RECV_BUF_MSK;
 147   1          
 148   1          uart_recv_start=0x1;
 149   1          
 150   1          return;
 151   1      }
 152          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    721    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =    300      80
   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 + -