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

📄 uart.lst

📁 这个是一个完整的MP3项目
💻 LST
字号:
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:33:18 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          /*--------------------------------------------------------------------------
  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;//晶振为20M,工作波特率为1200时的溢出寄存器值
  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.20   UART                                                                  03/21/2007 13:33:18 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,调用此函数的格式如printuf("Song:%x\n",NumofSong);
  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      
 107   4                                      TI = 0;
 108   4                                      SBUF = hex[cx2];
 109   4      
 110   4                                      while (!TI);
 111   4      
 112   4                                      TI = 0;
 113   4                                      ct = *(c + i);
 114   4                                      continue;
 115   4                              }
 116   3                              if (*(c + i + 1) == 'c')              
 117   3                              {
C51 COMPILER V7.20   UART                                                                  03/21/2007 13:33:18 PAGE 3   

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


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