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

📄 uart.lst

📁 89c51snd1c的FLASH MP3 U盘的详细代码
💻 LST
字号:
C51 COMPILER V6.12  UART                                                                   06/28/2005 22:56:53 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN UART.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UART.C LARGE ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          /*********************************************************************************************************
   3          **                                        
   4          **                                  MP3 and U Disk Source Code
   5          **                           Copyright (c) 2005,北京博创兴业科技有限公司
   6          **                                      All Rights Reserved
   7          **                                           V3.00.0
   8          **
   9          **--------------文件信息--------------------------------------------------------------------------------
  10          **文   件   名:	 UART.C
  11          **创   建   人:	 Frank   Wang Xiao Jun
  12          **创 建  日 期:  2003.12
  13          **描        述:  ATMEL AT89C51SND1 串口通讯
  14          **
  15          **--------------历史版本信息----------------------------------------------------------------------------
  16          ** 创建人: 	Frank   Wang Xiao Jun
  17          ** 版  本:	V1.00.0
  18          ** 日 期: 	2003.12
  19          ** 描 述:  ATMEL AT89C51SND1 串口通讯
  20          **
  21          **------------------------------------------------------------------------------------------------------
  22          ** 修改人:	Kent   Zou Ying
  23          ** 版  本:  V2.00.0
  24          ** 日 期:	2004. 5
  25          ** 描 述:	ATMEL AT89C51SND1 串口通讯
  26          **
  27          **--------------当前版本修订------------------------------------------------------------------------------
  28          ** 修改人: 	Phoenix    Hua Yue Guang
  29          ** 版  本:  V3.00.0
  30          ** 日 期:	2005.3
  31          ** 描 述:	ATMEL AT89C51SND1 串口通讯
  32          **
  33          **------------------------------------------------------------------------------------------------------
  34          ********************************************************************************************************/
  35          
  36          #include "REGSND1.H"
  37          #include "uart.h"
  38          
  39          #define AT89C51SND1 1	                                                  //如果使用的是AT89C51SND1
  40          
  41          
  42          /*------------------------------------------------------------------------------
  43          ------------------------------------------------------------------------------*/
  44          char hex[16]  = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
  45          
  46          /*******************************************************************************************************
  47          ** 函数名称:  init_uart
  48          ** 功能描述:  串口通讯功能初始化
  49          ** 输 入: 	  int fre
  50          ** 输 出: 	  无
  51          ** 作 者: 
  52          ** 日 期: 
  53          **------------------------------------------------------------------------------------------------------
  54          ** 修改人: 
  55          ** 日 期:
C51 COMPILER V6.12  UART                                                                   06/28/2005 22:56:53 PAGE 2   

  56          **------------------------------------------------------------------------------------------------------
  57          ********************************************************************************************************/
  58          void init_uart(int fre)
  59          {
  60   1      #if AT89C51SND1 
  61   1      	if (fre == 1200)
  62   1      	{
  63   2      		TMOD = 0x20;                                                      //设置串口工作模式
  64   2      		TH1  = 0xa9;                                                      //晶振为20M,工作波特率为1200时的溢出寄
             -存器值
  65   2      		TL1  = 0xa9;
  66   2      		SCON = 0x50;
  67   2      		PCON = PCON|0x80;
  68   2      		TR1  = 1;                                                         //开串口中断
  69   2       	}
  70   1      #else
              
              #endif
  73   1      }
  74          
  75          /*******************************************************************************************************
  76          ** 函数名称:  printu
  77          ** 功能描述:  通过串口打印字符
  78          ** 输 入: 	  char * c  要打印的字符
  79          ** 输 出: 	  无
  80          ** 作 者: 
  81          ** 日 期: 
  82          **------------------------------------------------------------------------------------------------------
  83          ** 修改人: 
  84          ** 日 期:
  85          **------------------------------------------------------------------------------------------------------
  86          ********************************************************************************************************/
  87          void printu(char * c)	
  88          {
  89   1      
  90   1          int i = 0, j = 0;
  91   1      	char ct = *c;
  92   1          init_uart(1200);
  93   1      	while (ct != '\0')
  94   1      	{
  95   2      #if AT89C51SND1
  96   2      		SBUF=ct;
  97   2      		while (!TI);
  98   2      		
  99   2      		j++;
 100   2      		TI = 0;
 101   2      		ct = *(c + j);
 102   2      		
 103   2      #endif
 104   2      	}
 105   1      
 106   1      }
 107          
 108          /*******************************************************************************************************
 109          ** 函数名称:  printuf
 110          ** 功能描述:  通过串口打印16进制数据  功能类似ANSI C中的printf函数
 111          ** 输 入: 	  char * c, unsigned char cb
 112          ** 输 出: 	  无
 113          ** 作 者: 
 114          ** 日 期: 
 115          **------------------------------------------------------------------------------------------------------
 116          ** 修改人: 
C51 COMPILER V6.12  UART                                                                   06/28/2005 22:56:53 PAGE 3   

 117          ** 日 期:
 118          **------------------------------------------------------------------------------------------------------
 119          ********************************************************************************************************/
 120          void printuf(char * c, unsigned char cb) 
 121          {
 122   1      	int i = 0;
 123   1      	char ct = *c;
 124   1      	char cx1;
 125   1      	char cx2;
 126   1          
 127   1      	init_uart(1200);
 128   1      	CKCON = 0x0;
 129   1      
 130   1      #if AT89C51SND1
 131   1      	while (ct != '\0')
 132   1      	{
 133   2      		if (ct == '%')
 134   2      		{	
 135   3      			if (*(c + i + 1) == 'x')              
 136   3      			{
 137   4      				i += 2;
 138   4      				cx1 = cb / 16;
 139   4      				cx2 = cb % 16;
 140   4      
 141   4      				SBUF = hex[cx1];
 142   4      
 143   4      				while (!TI);
 144   4      
 145   4      				TI = 0;
 146   4      				SBUF = hex[cx2];
 147   4      
 148   4      				while (!TI);
 149   4      
 150   4      				TI = 0;
 151   4      				ct = *(c + i);
 152   4      				continue;
 153   4      			}
 154   3      			if (*(c + i + 1) == 'c')              
 155   3      			{
 156   4      				i += 2;
 157   4      
 158   4      				SBUF = cb;
 159   4      
 160   4      				while (!TI);
 161   4      
 162   4      				TI = 0;
 163   4      				ct = *(c + i);
 164   4      				continue;
 165   4      			}
 166   3      			
 167   3      		}
 168   2      		if (ct == '/')
 169   2      		{
 170   3      			if(*(c + i + 1) == 'n')
 171   3      			{
 172   4      				i += 2;
 173   4      
 174   4      				SBUF = 13;
 175   4      
 176   4      				while (!TI);
 177   4      
 178   4      				TI = 0;
C51 COMPILER V6.12  UART                                                                   06/28/2005 22:56:53 PAGE 4   

 179   4      				SBUF = 10;
 180   4      
 181   4      				while (!TI);
 182   4      
 183   4      				TI = 0;
 184   4      				ct = *(c + i);
 185   4      				continue;
 186   4      			}
 187   3      		}
 188   2      		SBUF = ct;
 189   2      
 190   2      		while (!TI);
 191   2      
 192   2      		TI = 0;
 193   2      		i++;
 194   2      		ct = *(c + i);
 195   2      	}
 196   1      	CKCON = 0x1;
 197   1      
 198   1      #endif
 199   1      }


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