TI 发送端使能 1是开启
RI 接收端使能1是开启
REN 允许接受使能 开启是1
#include <REGX52.H>
#include "Delay.h"
void UartInit(void) //4800bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
//AUXR &= 0xBF; //定时器时钟12T模式
//AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 高级的单片机才能使用
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xFA; //设置定时初始值
TH1 = 0xFA; //设置定时重载值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
EA=1;//打开中断
ES=1; //打开中断使能
}
void UART_SendByte(unsigned char num)
{
SBUF=num;
while(TI==0);
TI=0;
}
void main()
{
UartInit();
// UART_SendByte("11.1");
// UART_SendByte(0x76);
// Delay(10); //加一点延迟是为了因为频率有问题出现错误
while(1)
{
//UART_SendByte(0x66);
//Delay(10); 如果启用这个的话就一直发送
}
}
向电脑端发送数据
void UART_Routine() interrupt 4
{
if(RI==1) //RI接收端使能 一开始是0有接收端有有信息的话置为1,只能由软件置0
{
P2=~SBUF;
UART_SendByte(SBUF); 这个函数不能同时出现中断函数和主函数之间,所以我们直接卸载中断函数内
RI=0;
}
}