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

📄 uart.lst

📁 基于ateml89c51为核心处理器的mp3播放器程序。
💻 LST
字号:
C51 COMPILER V7.07   UART                                                                  11/20/2006 17:50:20 PAGE 1   


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

stmt level    source

   1          /*
   2          * 
   3          * All rights reserved.
   4          * 
   5          * 文件名称:uart.c
   6          * 文件标识:uart
   7          * 摘    要:串口通讯的函数实现
   8          * 
   9          * 当前版本:
  10          * 作    者:
  11          * 完成日期:
  12          *
  13          * 
  14          */
  15          
  16          /*--------------------------------------------------------------------------
  17          uart.c
  18          
  19          c source file for uart Atmel  Atmel AT89C51SND1
  20          --------------------------------------------------------------------------*/
  21          
  22          #include "REGSND1.H"
  23          #include "uart.h"
  24          
  25          #define AT89C51SND1 1   //如果使用的是AT89C51SND1
  26          
  27          
  28          /*------------------------------------------------------------------------------
  29          ------------------------------------------------------------------------------*/
  30          char hex[16]  = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  31          
  32          /*------------------------------------------------------------------------------
  33          初使化串口
  34          ------------------------------------------------------------------------------*/
  35          void init_uart(int fre)
  36          {
  37   1      #if AT89C51SND1 
  38   1              if (fre == 1200)
  39   1              {
  40   2                      TMOD = 0x20;//设置串口工作模式
  41   2                      TH1  = 0xa9;//晶振为20M,工作波特率为1200时的溢出寄存器值
  42   2                      TL1  = 0xa9;
  43   2                      SCON = 0x50;
  44   2                      PCON = PCON|0x80;
  45   2                      TR1  = 1;//开串口中断
  46   2              }
  47   1      #else
              
              #endif
  50   1      }
  51          
  52          /*--------------------------------------------------------------------
  53          当输出仅为字符串时可使用
  54          ---------------------------------------------------------------------*/
  55          void printu(char * c)   
C51 COMPILER V7.07   UART                                                                  11/20/2006 17:50:20 PAGE 2   

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

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