📄 uart.h
字号:
#include <REG52.h>
#define uint unsigned int
#define uchar unsigned char
static bit flag_uart; //串口接收完数据
char uart_buf[10];
uchar *p;
/*****************************************************************************
;函 数 名:void Clear_UBuf(void)
;功 能:串口缓存清除
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.20
;修改日期:2007.6.20
*****************************************************************************/
void Clear_UBuf(void)
{
uchar i;
for(i=0;i<10;i++)
uart_buf[i]=0;
}
/*****************************************************************************
;函 数 名:void Delay_Nms(uint n)
;功 能:延时
;说 明:无
;入口参数:延时值
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.19
;修改日期:2007.6.19
*****************************************************************************/
void Delay_Nms(uint n)
{
while(n--);
}
/*****************************************************************************
;函 数 名:void Init_Uart(void)
;功 能:初始化串口程序
;说 明:晶振11.0592M 波特率4800
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.19
;修改日期:2007.6.19
******************************************************************************/
void Init_Uart(void)
{
SCON = 0x50; // 0101,0000 8 位数据位, 无奇偶校验
TMOD |= 0x20;
PCON |= 0x80; //SMOD=1;10000000b
TH1 = 0x0FA; // 时钟11.0592MHz, 9600 波特率
IE |= 0x90; // 允许串口中断
TR1 = 1; //;启动定时器T1
}
/*****************************************************************************
;函 数 名:void Send_Data(uchar OutData)
;功 能: 串口发送程序
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.19
;修改日期:2007.6.19
******************************************************************************/
void Send_Data(uchar OutData)
{
SBUF = OutData; //输出字符
while(!TI); //空语句判断字符是否发完
TI = 0; //清TI
}
/*****************************************************************************
;函 数 名:void Uart_Rev() interrupt 4 using 3
;功 能: 串口接收程序
;说 明:中断方式
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.19
;修改日期:2007.6.19
******************************************************************************/
void Uart_Rev() interrupt 4 using 3
{
if(RI)
{
RI = 0;
(*p) = SBUF;
Send_Data(*p);
p++;
}
if(*(p-1)==13) //接收完字符串后置标志位
{
flag_uart=1;
*(p-1) = '\0'; //给串口命令接受缓冲区加字符串尾
}
}
/*****************************************************************************
;函 数 名:void Send_String(uchar *temp)
;功 能: 串口发送字符串程序
;说 明:无
;入口参数:无
;返 回 值:无
;创 建 人: 何 呈
;创建日期:2007.6.19
;修改日期:2007.6.19
******************************************************************************/
void Send_String(uchar *temp)
{
while((*temp)!='\0')
{
Send_Data(*temp);
temp++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -