SCON=0x50 SM0=0 SM1=1(工作方式为方式一) REN=1允许单片机从电脑接收数据
TB8 RB8 SM2是方式2和方式3直接配置为0 TI为发送中断请求标志位 由硬件配置为1 必须由
软件复位为0,RI为接收中断请求标志位,同理TI
UART.c
#include <REGX52.H>
/**
* @brief 串口初始化
* @param 无
* @retval 无
*/
//STC-ISP中的波特率计算器进行计算
void UART_Init() //4800bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFA; //设定定时初值
TH1 = 0xFA; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/**
* @brief 串口发送一个字节数据
* @param Byte 要发送的一个字节数据
* @retval 无
*/
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;
while(TI==0);//(TI发送完成标志位)检测是否出错
TI=0;//TI等于1时才会跳出循环,将TI赋为0用于下一次检测
}
SBUF(接收发送缓存) 将单片机要发送给电脑的数据放在SBUF中SBUF就会把数据发给电脑
mian.c
#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
unsigned char Sec;
void main()
{
UART_Init();//初始化(Init)
while(1)
{
UART_SendByte(Sec);//向电脑发送Sec
Sec++;
Delay(1000);//每隔1s单片机向电脑发送16进制递增数据
}
}