51单片机电脑通过串口控制LED灯

这篇博客介绍了如何在单片机中使用UART串口进行初始化设置,包括波特率配置、中断处理及数据发送函数的实现。通过UART_Init()函数配置串口,并利用UART_SendByte()发送字节数据。同时,展示了串口接收中断服务函数UART_Routine()的处理流程。
摘要由CSDN通过智能技术生成

Hex模式:底层传输的实际数据

文本模式:把数据进行编码,显示ASCII码char字符,带括号的是控制字符,无法显示出来

代码

UART.c

#include <REGX52.H>

/** 
  * @brief  串口初始化
  * @param  无
  * @retval 无
  */
void UART_Init()//UART串口用的T1定时器,模式是8位自动重装载,//4800bps@12.000MHz
{
			SCON=0x50;     //REN置1,允许单片机接收
			PCON|= 0x80;   //使能波特率倍速位SMOD
			TMOD &= 0x0F;		//清除定时器1模式位
			TMOD |= 0x20;		//设定定时器1为8位自动重装方式
			TL1 = 0xF3;		//设定定时初值
			TH1 = 0xF3;		//设定定时器重装值
			ET1 = 0;		//禁止定时器1中断
			TR1 = 1;		//启动定时器1
			EA=1;       //开启使能中断
			ES=1;
}

/** 
  * @brief  串口发送一个字节数据
  * @param  Byte 要发送的一个字节数据
  * @retval   无
  */
void UART_SendByte(unsigned char Byte)
{
			SBUF=Byte;
			while(TI==0);//这里是在等数据发送完,当数据发送完TI由硬件置1就会跳出循环
			TI=0;        //此时再由软件置0
}

/*串口中断函数模板,一般放在main.c中
void UART_Routine() interrupt 4   //名字随便起,但中断函数号跟在哪个函数后边就是中断服务函数
{
		if(RI==1)
		{
			P2=~SBUF;
			UART_SendByte(SBUF);
			RI=0;
		}
}
*/

main.c

#include <REGX52.H>
#include "Delay.h"
#include "UART.h"



void main()
{

	UART_Init();
//	UART_SendByte('B');//实际等于UART_SendByte(0x42)
	while(1)
	{

	}
}

void UART_Routine() interrupt 4   //名字随便起,但中断函数号跟在哪个函数后边就是中断服务函数
{
		if(RI==1)//接收完成中断标志位RI
		{
			P2=~SBUF;
			UART_SendByte(SBUF);
			RI=0;
		}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值