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

📄 uart0_f340.c

📁 f340的MP3程序,通过SD卡读入解码器
💻 C
字号:
#include <c8051f340.h>
#include <string.h>
#include "uart0_f340.h"
/*--------------------------------------------------------------*/

/*--------------------------------------------------------------*/
//??????
//P0.4棗 MCU TXD; 
//P0.5棗MCU RXD;
/*--------------------------------------------------------------*/

/*--------------------------------------------------------------*/
//????
static char Byte;       //???????(1??)
bit read_flag= 0 ;      //??????? 
HexTable[]={'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F'};//??????
/*--------------------------------------------------------------*/
/*********************************************************** 
????:Oscillator_Init
????:???????24M????????
????:?	     
????:? 
? ?:
		??:Oscillator_Init();
***********************************************************/
void Oscillator_Init()//???????24M????????
{
    int i = 0;
    CLKMUL    = 0x80;
    for (i = 0; i < 20; i++);    // Wait 5us for initialization
    CLKMUL    |= 0xC0;
    while ((CLKMUL & 0x20) == 0);
    CLKSEL    = 0x02;
    OSCICN    = 0x83;
}
/*********************************************************** 
????:UART_Init
????:UART0????8?UART?
????:? 
????:? 
? ?:??: UART_Init(); 
***********************************************************/ 
void UART_Init()       
{
    SCON0     = 0x10;     //(SCON0?8?)S0MODE=0 ???????8?UART
	                      //(SCON0?5?)MCE0  =0 ???????????
						  //(SCON0?4?)REN0  =1 UART0 ????
}
/*********************************************************** 
????:Interrupts_Init
????:???????UART0??,????,??UART0??????
????:? 
????:? 
? ?: 
***********************************************************/
void Interrupts_Init()
{
    IP |= 0x10;    // Make UART high priority
	               //(IP?4?)PS0=1 
	IE  = 0x90;    //(IE?7?)EA =1 ???????????????????????
	               //(IE?4?)ES0=1 ??UART0??
}
/*********************************************************** 
????:Timer_Init
????:???1????????1???8????,?????
????:? 
????:? 
? ?: ??:Timer_Init();
***********************************************************/ 
void Timer_Init()
{
    TMOD      = 0x20;                   //???1?????????8???? T1M1-T1M0
    //CKCON     = 0x01;                 //12MHZ?,SYSCLK/4
    TCON      = 0x40;                   // ?????  TCON= 0x40 , START Timer1  ????1
    TH1       = 0x98;					//24MHZ?,???1??????   ??????9600bps
	//TH1       = 0x64;                 //12MHZ?,???1??????   ??????9600bps
	                                    
}
/*********************************************************** 
????:Port_IO_Init
????:??IO??????????
????:?	     
????:? 
? ?:
		??:Port_IO_Init();
***********************************************************/
void Port_IO_Init()	 //??IO??????????
{
	PCA0MD &= ~0x40;     //????????,???????????
    XBR0      = 0x01;	 //??uart0?IO?
    XBR1      = 0x40;
	P1MDOUT   	= 0xFF;	//P1???????
	P1MDIN		= 0XFF;
	P2MDOUT   	= 0xFF;	//P2???????
	P3MDOUT	  = 0xff;//P3口推挽输出
	P3MDIN	  = 0Xff;//P3数字输入
} 
/*********************************************************** 
????:Init_Device
????:C8051???
????:? 
????:? 
? ?: ??:Init_Device();
***********************************************************/

void Init_Device(void)
{	
	Oscillator_Init();     //???????24M????????
    Timer_Init();        //??????
    UART_Init();         //UART0???
    Interrupts_Init();   //?????
	Port_IO_Init();     //IO????
}
/*********************************************************** 
????:UART0_Interrupt
????:?????????????????,???????RI0,?????????read_flag
????:?
????:Byte
          read_flag = 1
? ?: ??:
***********************************************************/
void UART0_Interrupt (void) interrupt 4
{
    if (RI0 == 1)
       {
	      RI0 = 0;                           // ???????RI0
          Byte = SBUF0;                      // ?????????
          read_flag= 1 ; //???????
       }
}
/*********************************************************** 
????:UART_Send_Char
????:??????????
????:uchar sendByte ??????(8 bit)
????:? 
? ?:??:UART_Send_Char('0');
***********************************************************/
void UART_Send_Char(uchar sendByte) 
{ 
	SBUF0=sendByte;     
	while (TI0== 0);   	//??????
		    TI0= 0;     //???????TI0
} 

/*********************************************************** 
????:UART_Send_Str
????:??????????
????:char *str   ????????
????:? 
? ?: ??:UART_Send_Str("START:");
***********************************************************/
void UART_Send_Str(char *s)
{
 int len=strlen(s);
 int i;
 for(i=0;i<len;i++)
 UART_Send_Char(s[i]);
}
/********************************************************************
????:UART_Send_10Int
????:??????????????
????:x:???????
?    ?:??
?    ?: ??: UART_Send_10Int(13252);
********************************************************************/
void  UART_Put_Num(unsigned long int x)
{
 int i;
 uchar display_buffer[10];

 for(i=9;i>=0;i--)
  {
   display_buffer[i]='0'+x%10;
   x/=10;
  }
 for(i=0;i<9;i++)
  {
   if(display_buffer[i]!='0')break;
  }
 for(;i<10;i++) UART_Send_Char(display_buffer[i]);
}
/********************************************************************
????:UART_Send_4Hex
????:????????????
????:?????? uint x?
?    ?:??
?    ?:??:UART_Send_4Hex(65535);
********************************************************************/
void UART_Send_4Hex(uint x)
{
 uchar i;
 uchar display_buffer[7];
 display_buffer[6]=0;
 display_buffer[0]='0';
 display_buffer[1]='x';
 for(i=5;i>=2;i--) //??????4????HEX?
  {
   display_buffer[i]=HexTable[(x&0xf)];
   x>>=4;
  }
 UART_Send_Str(display_buffer);
}
/********************************************************************
????:UART_Send_8Hex
????:????????????
????:?????? unsigned long x?
?    ?:??
?    ?:??:UART_Send_8Hex(655351);
********************************************************************/
void UART_Send_8Hex(unsigned long x)
{
 uchar i;
 uchar display_buffer[11];
 display_buffer[10]=0;
 display_buffer[0]='0';
 display_buffer[1]='x';
 for(i=9;i>=2;i--)
  {
   display_buffer[i]=HexTable[(x&0xf)];
   x>>=4;
  }
 UART_Send_Str(display_buffer);
}
/**************************************************************************
 - ????:51????????????
 - ????:STC51????
 - ????:??,?????
 - ????:inf:????????????
             dat:????,???????????????????
 - ????:?
 - ?:???????????????,???????
 **************************************************************************/

void UART_Put_Inf(char *inf,unsigned long int dat)
{
 UART_Send_Str(inf);
 UART_Put_Num(dat);
 UART_Send_Str("\r\n");  
}

void UART_Send_Enter()
{
UART_Send_Str("\r\n"); 
}
/****************************end****************************/
/****************************end****************************/

⌨️ 快捷键说明

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