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

📄 uart.c

📁 MP3播放程序
💻 C
字号:

//********************************************************************************************
//
// Title		: MP3测试 - 调试程序
// Author		: Ant (gz_ant@126.com)
// Created		: 2005/02/16
// Revised		: 2005/02/19
// Version		: 0.1
// Target MCU	: MEGA16
// Editor Tabs	: 4
//
//		uart.c程序本来用于调试用, 但这里在UART_Debug()中的下半部分程序无效, 使用者可修改.
//
// 注: 	本代码用于测试STA013硬件及其驱动程序, 并非一个完整的MP3播放器程序.
//		上电后,会循环不停播放一段约2秒的MP3音乐.
//		硬件没有连接RAM缓冲及储存MP3文件的设备, MP3数据是保存在AVR的FLASH中.
//		本代码经测试, 但可能存有Bugs, 若你发现有任何Bug或有任何建议,
//		请来信告知: gz_ant@126.com
////		本代码部分来自"Procyon AVRlib": http://hubbard.engr.scu.edu/embedded/avr/avrlib/release_notes.html
//		特此感谢它的创始人: Pascal Stang !
//
//		感谢在www.21icbbs.com帮助过winsu的朋友, 希望使用者能发扬网络的 "自由,开放" 精神.
//********************************************************************************************

#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>

#include "type.h"
#include "main.h"
#include "UART.h"
#include "driver/I2C.h"
#include "driver/sta013.h"
#include "driver/spi.h"
//========================================
void UART_Init(void)
{
	UCSRB = UBRRH = 0;
	UBRRL = (ClockCPU/Baud)/16-1;
	UCSRB = (1<<RXEN) | (1<<TXEN);
}

u8 ReceiveByte( void )
{
	while( !(UCSRA & (1<<RXC)) );
	return UDR;
}

void TransmitByte( u8 data )
{
	while ( !(UCSRA & (1<<UDRE)) );
	UDR = data;
}
void UART_TranStr(char *Str)
{
	while(*Str)
	{
		TransmitByte( *Str++ );
	}
}

//
void UART_PrintNum(u8 val)
{
	u8 buffer[8];
	u8 i;
	
	for(i=0; i<8; i++) buffer[i] = 0;
	
	_itoa( val, buffer, 16 );
	UART_TranStr(buffer);
}
//
void UART_PrintNumEx(u16 val,u8 radix)
{
	u8 buffer[6];
	u8 i;
	
	for(i=0; i<6; i++) buffer[i] = 0;
	
	_itoa( val, buffer, radix );

	UART_TranStr(buffer);
}
//
void UART_Debug(void)
{
	u8 tmp;
	
	UART_Init();
	
	I2C_Ini();
	sta_IoIni();
	sta_Reset();
	spiInit();
	sta_Init();
	
	sei();
	
	sta_SetVolume(70,1);
	while(1) sta_SendToDecoder(8*1024);
	
	
	while(1)
	{
		while( UCSRA&(1<<RXC) )
		{
			tmp = UDR;
			switch (tmp)
			{
				case 0x00:
					UART_TranStr("Test UART!");
				break;
				case 0x01:
					sta_Reset();
					UART_TranStr("Ini STA013...");
					if(sta_Init()) UART_TranStr("STA013 OK! ");
					else UART_TranStr("No STA013! ");
					
					sta_SetVolume(70,1);
					
					UART_TranStr("Sent...");
					sta_SendToDecoder(8*1024);
					UART_TranStr("End.");
				break;
				//=============================================================
				default:
					UART_TranStr("Fail Command! ");
				break;
				
			}
		}
	}
}

⌨️ 快捷键说明

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