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

📄 uart.lst

📁 MP3播放器和U盘功能的源代码。采用集成了MP3解码芯片和USB接口芯片的AT89C51SND1C单片机
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  02/08/2007 11:18:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UART.C LARGE 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          ********************************************************************************************************/
  17          void init_uart(int fre)
  18          {
  19   1      #if AT89C51SND1 
  20   1              if (fre == 1200)
  21   1              {
  22   2                      TMOD = 0x20;                                                      //设置串口工作模式  方式1  
  23   2                      TH1  = 0xa9;                                                      //晶振为20M,工作波特率为1200时的溢出寄
             -存器值
  24   2                      TL1  = 0xa9;
  25   2                      SCON = 0x50;
  26   2                      PCON = PCON|0x80;
  27   2                      TR1  = 1;                                                         //开串口中断
  28   2              }
  29   1      #else
              
              #endif
  32   1      }
  33          
  34          /*******************************************************************************************************
  35          ** 函数名称:  printu
  36          ** 功能描述:  通过串口打印字符
  37          
  38          ********************************************************************************************************/
  39          void printu(char * c)   
  40          {
  41   1      
  42   1          int i = 0, j = 0;
  43   1              char ct = *c;
  44   1              CKCON|=0x01;
  45   1          init_uart(1200);
  46   1              while (ct != '\0')
  47   1              {
  48   2      #if AT89C51SND1
  49   2                      SBUF=ct;
  50   2                      while (!TI);
  51   2                      
  52   2                      j++;
  53   2                      TI = 0;
  54   2                      ct = *(c + j);
C51 COMPILER V7.50   UART                                                                  02/08/2007 11:18:09 PAGE 2   

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

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


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