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

📄 uart.c

📁 用89C51SND1C实现MP3播放器的源代码.用KEIL c51编写.
💻 C
字号:
/****************************************************************/
/*					UP-MP3DIY100								*/
/*		Beijing Universal Pioneering Technology Co., LTD		*/
/*		CopyRighted,All right Reserved	www.up-tech.com			*/
/*						July,2003								*/
/*				010-62387873  62381842							*/
/****************************************************************/


#include "REGSND1.H"
#include "uart.h"

#define AT89C51SND1 1	//如果使用的是AT89C51SND1


/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/
char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

/*------------------------------------------------------------------------------
初使化串口
------------------------------------------------------------------------------*/
void init_uart(int fre)
{
#if AT89C51SND1 
	if(fre==1200)
	{
		TMOD=0x20;//设置串口工作模式
		TH1=0xbe;//晶振为16M,工作波特率为1200时的溢出寄存器值
		TL1=0xbe;
		SCON=0x50;
		PCON=PCON|0x80;
		TR1=1;//开串口中断
 	}
#else

#endif
}

/*--------------------------------------------------------------------
当输出仅为字符串时可使用
---------------------------------------------------------------------*/
void printu(char * c)	
{

    int i=0,j=0;
	char ct=*c;
    init_uart(1200);
	while(ct!='\0')
	{
#if AT89C51SND1
		SBUF=ct;
		while(!TI);
		
		j++;
		TI=0;
		ct=*(c+j);
		
#endif
	}

}

/*-------------------------------------------------------------------------------
当输出为字符串时可使用或含有一控制符时使用,格式符仅用于16进制输出
格式控制符为%x,回车控制符为\n,调用此函数的格式如printuf("Song:%x\n",NumofSong);
--------------------------------------------------------------------------------*/
void printuf(char * c,unsigned char cb) 
{
	int i=0;
	char ct=*c;
	char cx1;
	char cx2;
    
	init_uart(1200);
	CKCON=0x0;

#if AT89C51SND1
	while (ct!='\0')
	{
		if(ct=='%')
		{	
			if(*(c+i+1)=='x')              
			{
				i+=2;
				cx1=cb/16;
				cx2=cb%16;

				SBUF=hex[cx1];
				while(!TI);
				TI=0;
				SBUF=hex[cx2];
				while(!TI);
				TI=0;
				ct=*(c+i);
				continue;
			}
			if(*(c+i+1)=='c')              
			{
				i+=2;

				SBUF=cb;
				while(!TI);
				TI=0;
				ct=*(c+i);
				continue;
			}
			
		}
		if(ct=='/')
		{
			if(*(c+i+1)=='n')
			{
				i+=2;
				SBUF=13;
				while(!TI);
				TI=0;
				SBUF=10;
				while(!TI);
				TI=0;
				ct=*(c+i);
				continue;
			}
		}
		SBUF=ct;
		while(!TI);
		TI=0;
		i++;
		ct=*(c+i);
	}
	CKCON=0x1;

#endif
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -