串口向电脑发送数据

main.c
#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
unsigned char Sec;
void main()
{
	//串口初始化
	UART_Init();			
	while(1)
	{
		//串口发送1个字节
		UART_SendByte(Sec);	
		Sec++;				
		Delay(1000);		
	}
}
UART.c
#include <REGX52.H>
/**
  * @brief  
  * @param  
  * @retval 
  */
void UART_Init()
{
	SCON = 0x40;
	PCON |= 0x80;
	TMOD &= 0x0F;		
	TMOD |= 0x20;		
	TL1 = 0xF3;		
	TH1 = 0xF3;		
	ET1 = 0;		
	TR1 = 1;		
}
/**
  * @brief  
  * @param  
  * @retval 
  */
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);
	TI=0;
}
电脑通过串口控制LED
main.c
#include <REGX52.H>
#include "Delay.h"
#include "UART.h"
void main()
{
	UART_Init();		//串口初始化
	while(1)
	{
		
	}
}
//中断
void UART_Routine() interrupt 4
{
	if(RI==1)					//如果接收标志位为1,接收到了数据
	{
		P2=~SBUF;				//读取数据,取反后输出到LED
		UART_SendByte(SBUF);	//将受到的数据发回串口
		RI=0;					//接收标志位清0
	}
}
UART.c
#include <REGX52.H>
/**
  * @brief  串口初始化,4800bps@12.000MHz
  * @param  无
  * @retval 无
  */
void UART_Init()
{
	SCON=0x50;
	PCON |= 0x80;
	TMOD &= 0x0F;		//设置定时器模式
	TMOD |= 0x20;		//设置定时器模式
	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=0;
}
/*串口中断函数模板
void UART_Routine() interrupt 4
{
	if(RI==1)
	{
		
		RI=0;
	}
}
*/
UART.h
#ifndef __UART_H__
#define __UART_H__
void UART_Init();
void UART_SendByte(unsigned char Byte);
#endif










