📄 uart.c
字号:
#include<reg52.h>
#include<stdio.h>
unsigned char COMBUF[10]; /* 定义接收缓冲区 */
unsigned char COMCNT = 0;
/****************************************************************************************************************************
**函数名称:InitCOM **
**函数功能:串口初始化函数 **
**入口参数:BpsLvl : 波特率等级。1=600bps,2=1200bps....5=9600bps,6=19200bps...8=57600bps **
**出口参数:无 **
**具体资源:无 **
**调用程序:无 **
**备 注:在系统时钟为晶振为22.1184M 方式1 波特率600-57600 **
****************************************************************************************************************************/
void InitCOM(void) //串口初始化函数
{
TMOD = 0X21; //设置T1为模式2,8位自动重装,T0为模式1。
SCON = 0X50; //设置串口为模式1,SM2=0,REN=1。
PCON = 0X80; //设置波特率为 9600B/S。
TH0 = 0X01;
TL0 = 0X01;
TH1 = -22118400L/12/32/4800;
TL1 = -22118400L/12/32/4800;
ET0 = 1;
ES = 1; //开串口中断,以便接收主机数据。
TR0 = 1;
TR1 = 1;
EA = 1;
}
/****************************************************************************************************************************
**函数名称:UartSendUart **
**函数功能:通过串口发送 **
**入口参数:要发送的一字节数据 **
**出口参数:无 **
**具体资源:无 **
**调用程序:无 **
**备 注: **
****************************************************************************************************************************/
void UartSendByte(unsigned char dat)//串口发送函数
{
SBUF = dat;
while (TI != 1) {
};
}
/****************************************************************************************************************************
**函数名称:UartSendStr **
**函数功能:通过串口发送一串字符 **
**入口参数:要发送的字符串 **
**出口参数:无 **
**具体资源:无 **
**调用程序:无 **
**备 注: **
****************************************************************************************************************************/
void UartSendStr(unsigned char *pStr)//串口发送函数
{
while ((*pStr) != '\0') {
UartSendByte(*pStr);
pStr++;
}
}
/****************************************************************************************************************************
**函数名称:COM_IRQ **
**函数功能:串口接收中断处理函数 **
**入口参数:显示位置 **
**出口参数:无 **
**具体资源:无 **
**调用程序:无 **
**备 注: **
****************************************************************************************************************************/
COM_IRQ(void) interrupt 4
{
if (RI == 1) { /* 处理接收中断 */
RI=0; /* 清除中断标志位 */
if (SBUF != 0x0d) {
UartSendByte(SBUF);
COMBUF[COMCNT] = SBUF;
COMCNT++;
}else {
UartSendByte(0x0d);
UartSendByte(0x0a);
COMCNT = 0;
}
}else if (TI == 1) {
TI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -