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

📄 uart.lst

📁 STC51系列的源码
💻 LST
字号:
C51 COMPILER V8.02   UART                                                                  10/05/2008 17:55:06 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 char data uart_xmit_start;
  16          
  17          unsigned char UART_recv_buffer[UART_RECV_BUF_MAX];
  18          unsigned char data uart_recv_wr;
  19          unsigned char data uart_recv_rd;
  20          unsigned char data 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                                                                  10/05/2008 17:55:06 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_print_ascii()                                                */
  71          /* version  : v1.00                                                             */
  72          /* created  : xillinx                                                           */
  73          /********************************************************************************/
  74          void UART_print_ascii(unsigned char * buffer, unsigned char len)
  75          {   unsigned char i;
  76   1          ES=0x0;
  77   1          for(i=0x0;i<len;i++)
  78   1          {   if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
  79   2             {  break;
  80   3             }
  81   2             UART_send_buffer[uart_xmit_wr]=ascii_table[(buffer[i]>>0x4)&0xF];
  82   2             uart_xmit_wr++;
  83   2             uart_xmit_wr&=UART_SEND_BUF_MSK;
  84   2             if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
  85   2             {  break;
  86   3             }
  87   2             UART_send_buffer[uart_xmit_wr]=ascii_table[(buffer[i]>>0x0)&0xF];
  88   2             uart_xmit_wr++;
  89   2             uart_xmit_wr&=UART_SEND_BUF_MSK;
  90   2             if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
  91   2             {  break;
  92   3             }
  93   2             UART_send_buffer[uart_xmit_wr]='|';
  94   2             uart_xmit_wr++;
  95   2             uart_xmit_wr&=UART_SEND_BUF_MSK;
  96   2          }
  97   1          if(uart_xmit_start==0x0)    //* 如果需要启动发生,就启动
  98   1          {  uart_xmit_start=0x1;
  99   2             TI=1;
 100   2          }
 101   1          ES=0x1;
 102   1          return;
 103   1      }
 104          
 105          /********************************************************************************/
 106          /* fun_name : UART_put_double_char()                                            */
 107          /* version  : v1.00                                                             */
 108          /* created  : xillinx                                                           */
 109          /********************************************************************************/
 110          void UART_put_double_char(unsigned char status, unsigned char hi,unsigned char lo)
 111          {   UART_send_buffer[uart_xmit_wr]=status;
 112   1          uart_xmit_wr++;
 113   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 114   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x4)&0xF];
 115   1          uart_xmit_wr++;
 116   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
C51 COMPILER V8.02   UART                                                                  10/05/2008 17:55:06 PAGE 3   

 117   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(hi>>0x0)&0xF];
 118   1          uart_xmit_wr++;
 119   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 120   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x4)&0xF];
 121   1          uart_xmit_wr++;
 122   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 123   1          UART_send_buffer[uart_xmit_wr]=ascii_table[(lo>>0x0)&0xF];
 124   1          uart_xmit_wr++;
 125   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 126   1          if(uart_xmit_start==0x0)    //* 如果需要启动发生,就启动
 127   1          {  uart_xmit_start=0x1;
 128   2             TI=1;
 129   2          }
 130   1      }
 131          
 132          /********************************************************************************/
 133          /* fun_name : UART_putchar()                                                    */
 134          /* version  : v1.00                                                             */
 135          /* created  : xillinx                                                           */
 136          /********************************************************************************/
 137          void UART_putchar(char ch)
 138          {   if(((uart_xmit_wr+0x1)&UART_SEND_BUF_MSK)==uart_xmit_rd) //* 缓冲区已经满了
 139   1          {  return;
 140   2          }
 141   1          EA=0x0;
 142   1          UART_send_buffer[uart_xmit_wr]=ch;
 143   1          uart_xmit_wr++;
 144   1          uart_xmit_wr&=UART_SEND_BUF_MSK;
 145   1          if(uart_xmit_start==0x00)
 146   1          {  uart_xmit_start=0x1;
 147   2             TI=0x1;
 148   2          }
 149   1          EA=0x1;
 150   1          return;
 151   1      }
 152          
 153          /********************************************************************************/
 154          /* fun_name : UART_xmit_isr_process()                                           */
 155          /* version  : v1.00                                                             */
 156          /* created  : xillinx                                                           */
 157          /********************************************************************************/
 158          void UART_xmit_isr_process(void)
 159          {   if(uart_xmit_wr!=uart_xmit_rd)
 160   1          {  SBUF=UART_send_buffer[uart_xmit_rd];
 161   2             uart_xmit_rd++;
 162   2             uart_xmit_rd&=UART_SEND_BUF_MSK;
 163   2             uart_xmit_start=0x1;
 164   2          }
 165   1          else
 166   1          {  uart_xmit_start=0x0;
 167   2          }
 168   1          return;
 169   1      }
 170          
 171          /********************************************************************************/
 172          /* fun_name : UART_recv_isr_process()                                           */
 173          /* version  : v1.00                                                             */
 174          /* created  : xillinx                                                           */
 175          /********************************************************************************/
 176          void UART_recv_isr_process(void)
 177          {   unsigned char mdata;
 178   1          mdata=SBUF;
C51 COMPILER V8.02   UART                                                                  10/05/2008 17:55:06 PAGE 4   

 179   1          if(((uart_recv_wr+0x1)&UART_RECV_BUF_MSK)==uart_recv_rd) //* 缓冲区已经满了
 180   1          {  uart_recv_rd=uart_recv_wr;
 181   2             return;
 182   2          }
 183   1          UART_recv_buffer[uart_recv_wr]=mdata;
 184   1          uart_recv_wr++;
 185   1          uart_recv_wr&=UART_RECV_BUF_MSK;
 186   1          if(mdata==0xFF)
 187   1          {  uart_recv_start=0x1;
 188   2          }
 189   1          return;
 190   1      }
 191          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    932    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =    292      85
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   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 + -