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);//向电脑发送SecSec++;Delay(1000);//每隔1s单片机向电脑发送16进制递增数据}
}