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

📄 uart.lst

📁 这个是一个完整的MP3项目
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  03/16/2006 09:11:13 PAGE 1   


C51 COMPILER V7.50, 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          /*--------------------------------------------------------------------------
  19          uart.c
  20          
  21          c source file for uart Atmel  Atmel AT89C51SND1
  22          --------------------------------------------------------------------------*/
  23          
  24          #include "REGSND1.H"
  25          #include "uart.h"
  26          
  27          #define AT89C51SND1 1   //如果使用的是AT89C51SND1
  28          
  29          
  30          /*------------------------------------------------------------------------------
  31          ------------------------------------------------------------------------------*/
  32          char hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  33          
  34          /*------------------------------------------------------------------------------
  35          初使化串口
  36          ------------------------------------------------------------------------------*/
  37          void init_uart(int fre)
  38          {
  39   1      #if AT89C51SND1 
  40   1              if (fre == 1200)
  41   1              {
  42   2                      TMOD = 0x20;
  43   2                      TH1  = 0xa9;
  44   2                      TL1  = 0xa9;
  45   2                      SCON = 0x50;
  46   2                      PCON = PCON | 0x80;
  47   2                      TR1  = 1;
  48   2              }
  49   1      #else
              
              #endif
  52   1      }
  53          
  54          /*--------------------------------------------------------------------
  55          当输出仅为字符串时可使用
C51 COMPILER V7.50   UART                                                                  03/16/2006 09:11:13 PAGE 2   

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

 118   3                              if (*(c + i + 1) == 'n')
 119   3                              {
 120   4                                      i += 2;
 121   4                                      SBUF = 13;
 122   4      
 123   4                                      while (!TI);
 124   4                                      TI = 0;
 125   4                                      SBUF = 10;
 126   4      
 127   4                                      while (!TI);
 128   4                                      TI = 0;
 129   4                                      ct = *(c + i);
 130   4                                      continue;
 131   4                              }
 132   3                      }
 133   2                      SBUF = ct;
 134   2                      while (!TI);
 135   2                      TI = 0;
 136   2                      i++;
 137   2                      ct = *(c + i);
 138   2              }
 139   1              CKCON = 0x01;
 140   1      
 141   1      #endif
 142   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    352    ----
   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 + -