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

📄 uart.lst

📁 这个是一个完整的MP3项目
💻 LST
字号:
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:33:06 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 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;//0010 0000   T/c方式2
  43   2                      TH1  = 0xa9;//初值a9  20M晶振 1200波特率时
  44   2                      TL1  = 0xa9;//
  45   2                      SCON = 0x50;//0101 0000  串口方式1 10位异步通讯
  46   2                      PCON = PCON|0x80;//SMOD置1,波特率=溢出率/16
  47   2                      TR1  = 1;//开串口中断
  48   2              }
  49   1      #else
              
              #endif
  52   1      }
  53          
  54          /*--------------------------------------------------------------------
  55          当输出仅为字符串时可使用
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:33:06 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      
  91   1      #if AT89C51SND1
  92   1              while (ct != '\0')
  93   1              {
  94   2                      if (ct == '%')
  95   2                      {       
  96   3                              if (*(c + i + 1) == 'x')              
  97   3                              {
  98   4                                      i += 2;
  99   4                                      cx1 = cb / 16;
 100   4                                      cx2 = cb % 16;
 101   4      
 102   4                                      SBUF = hex[cx1];
 103   4                                      while (!TI);
 104   4                                      {
 105   5                                              TI = 0;
 106   5                                              SBUF = hex[cx2];
 107   5                                      }
 108   4      
 109   4                                      while (!TI);
 110   4                                      {
 111   5                                              TI = 0;
 112   5                                              ct = *(c + i);
 113   5                                      }
 114   4                                      continue;
 115   4                              }
 116   3                              
 117   3                      }
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:33:06 PAGE 3   

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    265    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      12
   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 + -