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

📄 uart0.c

📁 MSP430z_f247.rar
💻 C
字号:
# include "UART0.h"

static unsigned char ch_PC_CMD=0;

static unsigned char Number[10]={'0', '1', '2', '3', '4', 
								'5', '6', '7', '8', '9'};
static unsigned char USART_Buffer[]="1234567890";

void UART0_Device_INIT(void)
{
	UART0_PORT_INIT();
  	UART0_INIT();
}

void UART0_PORT_INIT(void)
{
	//P1DIR=0xff;
	//P1OUT=0xff;
	
	P3SEL |= BIT4| BIT5;		//P3.4/5为复用功能
}

void UART0_INIT(void)
{
  	UCA0CTL1 |= UCSSEL1;        //SMCLK  	
	
  	UCA0BR0 = 0x41;             //8MHZ---9600~833.33       
  	UCA0BR1 = 0x03;                            
  	UCA0MCTL = 0x00;		   	
	
  	UCA0CTL1 &= ~UCSWRST;                    
  	IE2 |= UCA0RXIE;   			//使能接收中断
}

//接收中断处理函数
#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)
{
	ch_PC_CMD = UCA0RXBUF;	                   	 
}

unsigned char Get_USART_CMD(void)
{
	return ch_PC_CMD;
}

//发送采用查询方式
void UART0_Transmit(unsigned char ch_Data)
{
	while (!(IFG2 & UCA0TXIFG))
		;  
  	UCA0TXBUF = ch_Data;              
}

/*
//数组发送函数
void UART_Sent_Array(unsigned char* p_Array, unsigned char ch_Sum)
{
	unsigned char i=0;
	for(i=0; i<ch_Sum; i++)
	{
		UART0_Transmit(*p_Array);
		p_Array++;
	}
}
*/
//字符数组显示函数						
void Display_A_String(unsigned char *pSTR) 
{  
	while(*pSTR) 						//当*pSTR='\0'(空指针null)跳出循环 		
	{ 
		UART0_Transmit(*pSTR);			//*pSTR,指向该地址的内容 				
		pSTR++; 
	} 
}

//显示数字,用字符形式显示,类似于数码管	
//显示									
void Get_Data_Digit(unsigned int Data, unsigned ch_Newline)
{
	unsigned char NUM_Move=0;
	unsigned char NUM_Digit=0;
	
	for(NUM_Move=0; NUM_Move<DIGIT_SHOW; NUM_Move++)
	{
		NUM_Digit=Data%10;
		Data=Data/10;
		USART_Buffer[DIGIT_SHOW-1-NUM_Move]=Number[NUM_Digit];
	}
	if(ch_Newline)
	{
		USART_Buffer[NUM_Move]=' ';
		USART_Buffer[NUM_Move+1]='\n';
		USART_Buffer[NUM_Move+2]='\0';		//字符收尾							
	}
	else
	{
		USART_Buffer[NUM_Move]=' ';
		USART_Buffer[NUM_Move+1]='\0';
	}
	
}

void UART_Show_Number(unsigned int Data, unsigned char ch_Newline)
{
	Get_Data_Digit(Data, ch_Newline);
	Display_A_String(USART_Buffer);
}
//数据包发送函数
void UART_Sent_Data(unsigned char* p_x, 
					unsigned char* p_y, 
					unsigned char ch_Sum)
{
	unsigned char i=0;
	for(i = 0; i < ch_Sum; i++)
	{
		UART0_Transmit(0);
	  	UART0_Transmit(p_x[i]);
		UART0_Transmit(0);
	  	UART0_Transmit(p_y[i]);
	}
}
//发送整型数据xy
void UART_Send_xy(unsigned int* p_x, 
				  unsigned int* p_y, 
				  unsigned char ch_Sum)
{
	unsigned char Temp_L;
	unsigned char Temp_H;
	unsigned char i = 0;
	for(i=0; i<ch_Sum; i++)
	{
		Temp_H = p_x[i]>>8;
		Temp_L = p_x[i];
	  	UART0_Transmit(Temp_H);
		UART0_Transmit(Temp_L);
		
		Temp_H = p_y[i]>>8;
		Temp_L = p_y[i];
	  	UART0_Transmit(Temp_H);
		UART0_Transmit(Temp_L);
	}
}
void UART0_Test(void)
{
	//static unsigned char STR1[]="I'am a superman\n";
  	UART0_Device_INIT();
	_EINT();
	while(1)
	{
		 UART_Show_Number(12345, 1);
		 Delay_nMS(1000);
	}
}

⌨️ 快捷键说明

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