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

📄 uart.lst

📁 关于 at89c51snd1c 的海量存储mass storge的基于keil c的源代码
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  03/19/2006 13:41:48 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE UART.C LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          
   3          #include "REGSND1.H"
   4          #include "uart.h"
   5          
   6          #define AT89C51SND1 1                                                     //如果使用的是AT89C51SND1
   7          
   8          
   9          /*------------------------------------------------------------------------------
  10          ------------------------------------------------------------------------------*/
  11          char hex[16]  = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  12          
  13          /*******************************************************************************************************
  14          ** 函数名称:  init_uart
  15          ** 功能描述:  串口通讯功能初始化
  16          ** 输 入:        int fre
  17          ** 输 出:        无
  18          ** 作 者: 
  19          ** 日 期: 
  20          **------------------------------------------------------------------------------------------------------
  21          ** 修改人: 
  22          ** 日 期:
  23          **------------------------------------------------------------------------------------------------------
  24          ********************************************************************************************************/
  25          void init_uart(int fre)
  26          {
  27   1      #if AT89C51SND1 
  28   1              if (fre == 1200)
  29   1              {
  30   2                      TMOD = 0x20;                                                      //设置串口工作模式
  31   2                      TH1  = 0xa9;                                                      //晶振为20M,工作波特率为1200时的溢出寄
             -存器值
  32   2                      TL1  = 0xa9;
  33   2                      SCON = 0x50;
  34   2                      PCON = PCON|0x80;
  35   2                      TR1  = 1;                                                         //开串口中断
  36   2              }
  37   1      #else
              
              #endif
  40   1      }
  41          
  42          /*******************************************************************************************************
  43          ** 函数名称:  printu
  44          ** 功能描述:  通过串口打印字符
  45          ** 输 入:        char * c  要打印的字符
  46          ** 输 出:        无
  47          ** 作 者: 
  48          ** 日 期: 
  49          **------------------------------------------------------------------------------------------------------
  50          ** 修改人: 
  51          ** 日 期:
  52          **------------------------------------------------------------------------------------------------------
  53          ********************************************************************************************************/
  54          void printu(char * c)   
C51 COMPILER V7.50   UART                                                                  03/19/2006 13:41:48 PAGE 2   

  55          {
  56   1      
  57   1          int i = 0, j = 0;
  58   1              char ct = *c;
  59   1          init_uart(1200);
  60   1              while (ct != '\0')
  61   1              {
  62   2      #if AT89C51SND1
  63   2                      SBUF=ct;
  64   2                      while (!TI);
  65   2                      
  66   2                      j++;
  67   2                      TI = 0;
  68   2                      ct = *(c + j);
  69   2                      
  70   2      #endif
  71   2              }
  72   1      
  73   1      }
  74          
  75          /*******************************************************************************************************
  76          ** 函数名称:  printuf
  77          ** 功能描述:  通过串口打印16进制数据  功能类似ANSI C中的printf函数
  78          ** 输 入:        char * c, unsigned char cb
  79          ** 输 出:        无
  80          ** 作 者: 
  81          ** 日 期: 
  82          **------------------------------------------------------------------------------------------------------
  83          ** 修改人: 
  84          ** 日 期:
  85          **------------------------------------------------------------------------------------------------------
  86          ********************************************************************************************************/
  87          void printuf(char * c, unsigned char cb) 
  88          {
  89   1              int i = 0;
  90   1              char ct = *c;
  91   1              char cx1;
  92   1              char cx2;
  93   1          
  94   1              init_uart(1200);
  95   1              CKCON = 0x0;
  96   1      
  97   1      #if AT89C51SND1
  98   1              while (ct != '\0')
  99   1              {
 100   2                      if (ct == '%')
 101   2                      {       
 102   3                              if (*(c + i + 1) == 'x')              
 103   3                              {
 104   4                                      i += 2;
 105   4                                      cx1 = cb / 16;
 106   4                                      cx2 = cb % 16;
 107   4      
 108   4                                      SBUF = hex[cx1];
 109   4      
 110   4                                      while (!TI);
 111   4      
 112   4                                      TI = 0;
 113   4                                      SBUF = hex[cx2];
 114   4      
 115   4                                      while (!TI);
 116   4      
C51 COMPILER V7.50   UART                                                                  03/19/2006 13:41:48 PAGE 3   

 117   4                                      TI = 0;
 118   4                                      ct = *(c + i);
 119   4                                      continue;
 120   4                              }
 121   3                              if (*(c + i + 1) == 'c')              
 122   3                              {
 123   4                                      i += 2;
 124   4      
 125   4                                      SBUF = cb;
 126   4      
 127   4                                      while (!TI);
 128   4      
 129   4                                      TI = 0;
 130   4                                      ct = *(c + i);
 131   4                                      continue;
 132   4                              }
 133   3                              
 134   3                      }
 135   2                      if (ct == '/')
 136   2                      {
 137   3                              if(*(c + i + 1) == 'n')
 138   3                              {
 139   4                                      i += 2;
 140   4      
 141   4                                      SBUF = 13;
 142   4      
 143   4                                      while (!TI);
 144   4      
 145   4                                      TI = 0;
 146   4                                      SBUF = 10;
 147   4      
 148   4                                      while (!TI);
 149   4      
 150   4                                      TI = 0;
 151   4                                      ct = *(c + i);
 152   4                                      continue;
 153   4                              }
 154   3                      }
 155   2                      SBUF = ct;
 156   2      
 157   2                      while (!TI);
 158   2      
 159   2                      TI = 0;
 160   2                      i++;
 161   2                      ct = *(c + i);
 162   2              }
 163   1              CKCON = 0x1;
 164   1      
 165   1      #endif
 166   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    394    ----
   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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -