📄 uart0.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 + -