六、串口通信

六、串口通信

  • 串口接口介绍
  • 使用串口向电脑发送数据
  • 电脑发送数据控制LED灯

串口接口介绍

六、串口通信_第1张图片
六、串口通信_第2张图片
SBUF是串口数据缓存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器;读操作时,读出的是接收寄存器
六、串口通信_第3张图片

使用串口向电脑发送数据

#include 
void UART_Init()
{
	SCON=0x40;  // SBUf不同配置
	PCON |= 0x80; // 波特率加倍
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式,自动重装
	TL1 = 0xF3;		//设定定时初值
	TH1 = 0xF3;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
}

void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);// 检测是否发送成功
	TI=0;// 需要手动置位
}
unsigned char Sec;

// 向电脑发送一个以1秒递增的数据
void main()
{
	UART_Init();			//串口初始化
	while(1)
	{
		UART_SendByte(Sec);	//串口发送一个字节
		Sec++;				//Sec自增
		Delay(1000);		//延时1秒
	}
}

电脑发送数据控制LED灯

void UART_Routine() interrupt 4
{
	if(RI==1)					//如果接收标志位为1,接收到了数据
	{
		P2=~SBUF;				//读取数据,取反后输出到LED
		UART_SendByte(SBUF);	//将受到的数据发回串口
		RI=0;					//接收标志位清0,硬件只负责置1,需要软件清零
	}
}
void main()
{
	UART_Init();		//串口初始化
	while(1)
	{}
}

你可能感兴趣的:(C51,51单片机)