mcu_uart.c

来自「基于at89c51单片机的mp3键盘中断实验代码」· C语言 代码 · 共 124 行

C
124
字号
/*  Copyright (C) 1996-2005 Brilliant Ideal Electronics. All rights reserved.
	MP3_Player+USB_Disk V3.0 Edit by JMBIE STUDIO 2005.03
*/


#include "AT89C51SND1_REG.H"
#include "MCU_UART.H"

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

void init_uart()  //   Baud rate 9600
{  
/*Using the T1 as Baud Rate Generater.
    CKCON |=0x04;
	TMOD = 0x20;
	TH1  = 0xf5;
	TL1  = 0xf5;
	SCON = 0x50;
	PCON = PCON|0x80;
	TR1  = 1;
*/
//Using Internal Baud Rate Generater.
    CKCON |=0x10;
	SCON = 0x50;
	PCON = PCON|0x80;
	BRL  = 0xbf;
	BDRCON |=0x0c; //TBCK=1,RBCK=1
	BDRCON |=0x02; //SPD=1
	BDRCON |=0x10; //BRR=1,enable BRG 
} 

/*
char uart_getch()
{
	 while (!RI);
	 RI = 0;
	 return SBUF;
}

void uart_putch(char ch)
{
	 SBUF = ch;
	 while (!TI);
	 TI = 0;	
}

*/

void printu(char * str)	
{	
    char *ct = str;
	while (*ct != '\0')
	{
		if (*ct == '\n')
		{
			SBUF = 13;
			while (!TI);
			TI = 0;
		}
		SBUF=*ct;
		while (!TI);
		TI = 0;
		ct++;
	}
}


void printuf(char *str, unsigned char cb) 
{
	char *ct = str;
	while (*ct != '\0')
	{
		if (*ct == '%')
		{	
			if (*(ct + 1) == 'x')              
			  {
				ct += 2;
				SBUF = hex[cb/16];
				while (!TI);
				TI = 0;
				SBUF = hex[cb%16];
				while (!TI);
				TI = 0;
				continue;
			  }
			if (*(ct + 1) == 'd')              
			  {
				ct += 2;
				if(cb/100)
				   {SBUF = cb/100+0x30;
					while (!TI);
				    TI = 0;}
				if(cb/10)
				   {SBUF = (cb%100)/10+0x30;
					while (!TI);
				    TI = 0;}
				SBUF = cb%10+0x30;
				while (!TI);
				TI = 0;				
				continue;
		      }
			if (*(ct + 1) == 'c')              
			  {
				ct += 2;
				SBUF = cb;
				while (!TI);
				TI = 0;
				continue;
			  }
			
		}
		if (*ct == '\n')
		{
			SBUF = 13;
			while (!TI);
			TI = 0;
		}
		SBUF = *ct;
		while (!TI);
		TI = 0;
		ct++;
	}
}

⌨️ 快捷键说明

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