📄 uart.c
字号:
#include <AT89X52.H>
#include "os_core.h"
#include "main.h"
#include "task_switch.h"
#include "sem.h"
#include "q.h"
#include "uart.h"
//////////////////////////////串口初始化函数,9600bps波特率,使用24M晶体///////////////
void uart_init(void)
{
TMOD=(TMOD & 0x0F)|0x20; //定时器1工作在模式2
SCON=0x50; //串口工作在模式1
ES=0; //禁止串行中断
PCON|=0x80; //串口波特率加倍
TH1=0xF3;
TL1=0xF3; //串口波特率为9600
TR1=1; //启动定时器1
REN=1; //允许接收
}
//////////////////////////////// 通过串口发送1字节数据/////////////////////////////////
void sendbyte(uint8 byte) reentrant
{
TI=0; //清TI
SBUF=byte; //发送数据
while(!TI); //等待发送完毕
}
/////////////////////////////////从串口接收一字节数据///////////////////////////////////
uint8 getbyte(void)reentrant
{
uint8 temp; //临时变量
while(1) //一直等待,直到接收到数据才返回
{
if(RI) //如果串口收到数据
{ //如果收到,则
temp=SBUF; //读回数据
RI=0; //清RI
return temp; //返回数据
}
else
{
OSWait(K_TMO,1); //延迟一个时钟节拍
}
}
}
////////////////////////////// 发送一个字符串 ///////////////////////////////////////////
void prints(unsigned char * s) reentrant
{
uint8 i=0;
while(s[i]!=0) //判断字符串是否结束
{
if(s[i]=='\n')
s[i]='\r';
TI=0;
SBUF=s[i]; //发送一字节
while(!TI); //等待该发送完毕
i++; //移到下字节
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -