E2UART编程(β板实操)task2传递输入的ascii码

E2UART编程(β板实操)task2传递输入的ascii码_第1张图片
E2UART编程(β板实操)task2传递输入的ascii码_第2张图片
E2UART编程(β板实操)task2传递输入的ascii码_第3张图片
E2UART编程(β板实操)task2传递输入的ascii码_第4张图片
E2UART编程(β板实操)task2传递输入的ascii码_第5张图片

#include "derivative.h" /* include peripheral declarations */

void UART1_Init()
{
	SIM_SCGC4 |= (1<<11);//使能UART1时钟
	SIM_SCGC5 |= (1<<13);//使能PORTE时钟
	PORTE_PCR0 = 0x0300;//设置PTE0为UART
	PORTE_PCR1 = 0x0300;//设置PTE1为UART
	UART1_C1 = 0;//不使用奇偶校验
	UART1_C2 = (1<<2)+(1<<3);
	UART1_BDH = 0x00;
	UART1_BDL = 0x44;//设置波特率为9600
	
}

unsigned char UART_GetChar(void)
{
	while(!(UART1_S1&(1<<5)));
	return UART1_D;
	
}
unsigned char UART1_PutChar(unsigned char data)
{
	while(!(UART1_S1&(1<<7)));
	UART1_D=data;
}

unsigned char dtoa(unsigned char c1)
{
return (c1>=10)?(c1+'A'-10):(c1+'0');	
}
void UART1_SendHex(unsigned char c1){
	UART1_PutChar(dtoa(c1&(0xF0)>>4));
	UART1_PutChar(dtoa(c1&(0x0F)));
}


int main(void)
{
	unsigned char temp;
	UART1_Init();
	for(;;){
		temp=UART_GetChar();
		UART1_PutChar(temp);
		UART1_PutChar('-');
		UART1_PutChar('0');
		UART1_PutChar('x');
		UART1_SendHex(temp);
		UART1_PutChar('\r');
		UART1_PutChar('\n');
	}
}

关键点在于输出16位的ascii两位,这里采用掩码思想,4-7位于0xF0与然后进行移位

你可能感兴趣的:(arm)