📄 uart.c
字号:
#include "main.h"
void UartInit()
{
GP1CON = 0x11; //SIN SOUT LINK TO P1.0,P1.1
COMCON0 = 0x83; //SETTING TO ACCESS DIV0 AND DIV1
COMDIV0 = 0x44; //baute rate at 19200 bps
COMDIV1 = 0x0;
COMCON0 = 0X03; //SET TO OUT DIV0 AND DIV1
}
/**************************************
* 应用程序在uart口输出数据(查询方式)
*************************************/
void SendByte(unsigned char Bdata)
{
while(!(COMSTA0 & 0x40));
COMTX = Bdata;
}
/*****************************************
* User在PC串口终端输入数据 范围0x0 - 0xFF
* 应用程序在uart口读入数据 (查询方式)
*****************************************/
unsigned char GetData()
{
unsigned char tmp = 0xFF;
PrintStr("please input the command code:");
while(!(COMSTA0 & 0x01));
tmp = COMRX;
SendHex(tmp);
NewLine();
return tmp;
}
/*******************************************************
* 通过Uart输出十六进制数据,如:0xAA 范围(0x00 - 0xFF)
*******************************************************/
unsigned char HexList[16] = {'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};
void SendHex(int num)
{
SendByte('0');
SendByte('x');
SendByte(HexList[num/16]);
SendByte(HexList[num%16]);
}
/*************************
* 串口终端输出数据
* 数大小范围 0 - 99999
*************************/
void SendNum(int num)
{
if(num >= 10){
if(num >=100){
if(num >= 1000){
if(num>= 10000){
SendByte(num / 10000 + 0x30);
num = num % 10000;
}
SendByte(num / 1000 + 0x30);
num = num % 1000;
}
SendByte(num / 100 + 0x30);
num = num % 100;
}
SendByte(num / 10 + 0x30);
}
SendByte(num % 10 + 0x30);
}
/****************************
* out put a string
****************************/
void PrintStr(unsigned char *p)
{
int i = 0;
while( p[i] != 0){
SendByte(p[i]);
i++;
}
}
/**************************
* 换行
**************************/
void NewLine()
{
SendByte(0x0D);
SendByte(0x0A);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -