📄 uart.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 + -