uart.lst

来自「这个是一个完整的MP3项目」· LST 代码 · 共 165 行

LST
165
字号
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:34:34 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          * Copyright (c) 2004,北京博创兴业科技有限公司
   3          * All rights reserved.
   4          * 
   5          * 文件名称:uart.c
   6          * 文件标识:uart
   7          * 摘    要:串口通讯的函数实现
   8          * 
   9          * 当前版本:2.0
  10          * 作    者:Kent
  11          * 完成日期:2004年5月20日
  12          *
  13          * 取代版本:1.1 
  14          * 原作者  :Frank
  15          * 完成日期:2003年8月10日
  16          */
  17          
  18          #include <REGSND1.H>
  19          #include "uart.h"
  20          
  21          #define AT89C51SND1 1   //如果使用的是AT89C51SND1
  22          
  23          
  24          /*------------------------------------------------------------------------------
  25          ------------------------------------------------------------------------------*/
  26          char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  27          
  28          /*------------------------------------------------------------------------------
  29          初使化串口
  30          ------------------------------------------------------------------------------*/
  31          void init_uart(int fre)
  32          {
  33   1      #if AT89C51SND1 
  34   1              if (fre == 1200)
  35   1              {
  36   2                      TMOD = 0x20;
  37   2                      TH1  = 0xa9;
  38   2                      TL1  = 0xa9;
  39   2                      SCON = 0x50;
  40   2                      PCON = PCON | 0x80;
  41   2                      TR1  = 1;
  42   2              }
  43   1      #else
              
              #endif
  46   1      }
  47          
  48          /*--------------------------------------------------------------------
  49          当输出仅为字符串时可使用
  50          ---------------------------------------------------------------------*/
  51          void printu(char * c)   
  52          {
  53   1      
  54   1          int i = 0, j = 0;
  55   1              char ct = *c;
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:34:34 PAGE 2   

  56   1          init_uart(1200);
  57   1              while (ct != '\0')
  58   1              {
  59   2      #if AT89C51SND1
  60   2                      SBUF = ct;
  61   2      
  62   2                      while (!TI);
  63   2                      
  64   2                      j++;
  65   2                      TI = 0;
  66   2                      ct = *(c + j);
  67   2                      
  68   2      #endif
  69   2              }
  70   1      
  71   1      }
  72          
  73          /*-----------------------------------------------------------------------
  74          当输出为字符串时可使用或含有一控制符时使用,格式符仅用于16进制输出
  75          格式控制符为%x,回车控制符为/n
  76          -----------------------------------------------------------------------*/
  77          void printuf(char * c, unsigned char cb) 
  78          {
  79   1              int i = 0;
  80   1              char ct = *c;
  81   1              char cx1;
  82   1              char cx2;
  83   1          
  84   1              init_uart(1200);
  85   1      
  86   1      #if AT89C51SND1
  87   1              while (ct != '\0')
  88   1              {
  89   2                      if (ct == '%')
  90   2                      {       
  91   3                              if (*(c + i + 1) == 'x')              
  92   3                              {
  93   4                                      i += 2;
  94   4                                      cx1 = cb / 16;
  95   4                                      cx2 = cb % 16;
  96   4      
  97   4                                      SBUF = hex[cx1];
  98   4      
  99   4                                      while (!TI);
 100   4                                      TI = 0;
 101   4                                      SBUF = hex[cx2]; 
 102   4      
 103   4                                      while (!TI);
 104   4                                      TI = 0;
 105   4                                      ct = *(c + i);
 106   4      
 107   4                                      continue;
 108   4                              }
 109   3                              
 110   3                      }
 111   2                      if (ct == '/')
 112   2                      {
 113   3                              if (*(c + i + 1) == 'n')
 114   3                              {
 115   4                                      i += 2;
 116   4                                      SBUF = 13;
 117   4      
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:34:34 PAGE 3   

 118   4                                      while (!TI);
 119   4                                      TI = 0;
 120   4                                      SBUF = 10;
 121   4      
 122   4                                      while (!TI);
 123   4                                      TI = 0;
 124   4                                      ct = *(c + i);
 125   4      
 126   4                                      continue;
 127   4                              }
 128   3                      }
 129   2                      SBUF = ct;
 130   2      
 131   2                      while (!TI);
 132   2                      TI = 0;
 133   2                      i++;
 134   2                      ct = *(c + i);
 135   2              }
 136   1      #endif
 137   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    346    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     16      12
   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 + =
减小字号Ctrl + -
显示快捷键?