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

📄 usart.c

📁 Mp3 Player using ATmega128, VS1003B, Character LCD. Test OK.Good Sound.
💻 C
字号:
#include <avr/io.h>
#include <stdlib.h>
#include <stdio.h>
#include "usart.h"

//--------------------------------------------------------------------------------
// 流纺烹脚 檬扁拳, 厚悼扁 葛靛肺 汲沥
void Init_USART(void)
{
	Set_BaudRate(38400);
	UCSR0B = 0xD8;
}

//--------------------------------------------------------------------------------
// Baud Rate 汲沥
void Set_BaudRate(unsigned long baudrate)
{

	unsigned long temp;
	temp = (F_CPU/16/baudrate)-1;
	UBRR0L=(unsigned char) temp;
}

//--------------------------------------------------------------------------------
// 傈价, ATmega128 -> PC
void TX_Data(unsigned char data)	
{
        while(!(UCSR0A & 0x20));
        UDR0 = data;
}

//--------------------------------------------------------------------------------
// 荐脚, ATmega128 <- PC
unsigned char RX_Data(void)		
{
        while(!(UCSR0A & 0x80));
        return UDR0;
}

//--------------------------------------------------------------------------------
// number箭磊父怒狼 胶飘傅 巩磊凯 免仿
void stringN(unsigned char *str, unsigned int number)	
{
	unsigned char i=0;

	do {
		switch(str[i])
		{
			case LF:
			case CR:
				TX_Data(LF);
				TX_Data(CR);
				break;

			default:
				TX_Data(str[i]);
		}
		i++;		
	} while(number--); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}

//--------------------------------------------------------------------------------
// 窍捞欺磐固澄俊 胶飘傅 巩磊凯 免仿
void string(unsigned char *str)	
{
	unsigned char i=0;

	do {
		switch(str[i])
		{
			case LF:
			case CR:
				TX_Data(LF);
				TX_Data(CR);
				break;

			default:
				TX_Data(str[i]);
		}		
	} while(str[i++]); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}


//--------------------------------------------------------------------------------
// 16厚飘 箭磊甫 巩磊肺 免仿
void string_u16(unsigned int data, unsigned char radix)
{
	unsigned char str[20];
	unsigned char i=0;
	
	utoa(data, str, radix);
	
	while(str[i])
	{
		TX_Data(str[i]);
		i++;
	}

	TX_Data('\r');
	TX_Data('\n');

}

//--------------------------------------------------------------------------------
// 32厚飘 箭磊甫 巩磊肺 免仿
void string_u32(unsigned long data, unsigned char radix)
{
	unsigned char str[10], i=0;
	
	ultoa(data, str, radix);

	while(str[i])
	{
		TX_Data(str[i]);
		i++;
	}

	TX_Data('\r');
	TX_Data('\n');


}

//--------------------------------------------------------------------------------
// 琼荤 单捞磐甫 酒胶虐 蔼栏肺 函券, ATmega128 -> PC 肺 傈价且 锭 荤侩
void hextoasc(unsigned char hex)
{
	unsigned char temp;

	temp=hex;
	hex &= 0xf0;
	hex >>= 4;

	if (hex >= 10)
		hex += 7; 
	hex += '0';
	TX_Data(hex);

	hex=temp;
	hex &= 0x0f;
	if (hex>= 10)
		hex += 7; 
	hex += '0';
	TX_Data(hex);
}


//--------------------------------------------------------------------------------
// N箭磊父怒狼 酒胶虐 巩磊凯肺 免仿, ATmega128 -> PC 肺 傈价且 锭 荤侩
void string_asc(unsigned char* Nstring, unsigned int N)
{
	unsigned int i=0;
	string("  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F \n");
	string("  -----------------------------------------------\n");
	string("  ");
	while(N--)
	{

		hextoasc(Nstring[i++]);
		TX_Data(' ');
		if (N % 16 == 0)
		{
			string("\n");
			string("  ");
		}
		
	}
}

void string_hextoasc(unsigned char* Nstring)
{
	unsigned char i=0;

	do
	{
		hextoasc(Nstring[i]);		
	
	
	} while(Nstring[i++]); // 巩磊凯 场俊 乐绰 NULL巩磊 0 捞 八祸登搁 呕免
}

⌨️ 快捷键说明

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