📄 serial.h
字号:
/*
说明:
RXD = P3.0
TXD = P3.1
晶振:11.0592MHz(缺省值)
用定时器T1作为波特率发生器
波特率:9600(缺省值)
起始位:1
数据位:8
停止位:1
校验位:无
用法:
1、根据实际情况,修改参数配置
2、在主程序中包含本头文件
3、在main()函数开始处执行串行口初始化函数UartInit()
4、发送数据时直接用函数UartSendChar()和UartSendString()
5、数据接收部分的程序框架已经写好,只需根据实际情况添加具体的处理代码
*/
#include <reg52.h>
sbit fg=P1^2 ; //标志位,状态可由指示灯显示
bit ack_seri;
bit fg_seri;
//参数配置
#define MCLK 11059200L //定义CPU主频(Hz)
#define BAUD_RATE 9600L //设置波特率
//定义发送中断辅助标志(仅用于发送)
static volatile bit _TI_;
unsigned char idata buf_seri[6];
unsigned char i=0;
//串行口初始化
extern void UartInit()
{
EA = 0;
RXD = 1;
TXD = 1;
_TI_ = 1;
SCON = 0x50; //串口方式1
PCON |= 0x80; //波特率加倍
TH1 = 256 - ( MCLK / 12 ) / ( 16 * BAUD_RATE );
TL1 = TH1;
ES = 1; //允许串行口中断
}
/*
功能:
通过串行口发送单个字节
参数:
c:被发送的字节数据,取值0x00~0xFF
*/
extern void UartSendChar(char c)
{
while ( !_TI_ );
_TI_ = 0;
SBUF = c;
}
/*
功能:
通过串行口发送字符串
参数:
*s:被发送的字符串
说明:
字符串应当以'\0'结尾,而'\0'本身不会被发送出去
*/
extern void UartSendString(char *s)
{
char c;
for (;;)
{
c = *s;
if ( c == '\0' ) break;
s++;
UartSendChar(c);
}
}
//串行口中断服务程序
static void UartINTSVC() interrupt 4
{
char c;
if ( RI ) //接收中断
{
fg_seri=1;
c = SBUF;
RI = 0;
fg=~fg;
buf_seri[i++]=c-48; //在这里添加其它代
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -