1.输入数据控制LED灯状态00-ff。同时会接收输入的数据。

中断和定时器配置
void UART_Init() //4800bps@11.0592MHz
{
SCON=0X50;//sm0=0,sm1=1,ren=1
PCON &= 0x7F; //波特率不倍速
TMOD &= 0x0F; //设置定时器模式 T1
TMOD |= 0x20; //设置定时器模式 模式2,8位重装
TL1 = 0xFA; //设定定时初值
TH1 = 0xFA; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA=1;//允许中断
ES=1;;//串行口中断
}
main.c
#include<regx52.h>
#include "UART.h"
#include "Delay.h"
unsigned char Sec;
void main()
{
	UART_Init();
	while(1)
	{
	
	}
}
void UART_Routine() interrupt 4	 //串行中断
{
	if(RI==1)
	{
		P2=~SBUF;//led=~SBUF
		UART_SendByte(SBUF);
		RI=0;//软件复位
	}
}UART.c
#include<regx52.h>
//串口发送数据到电脑
/*串口初始化*/
void UART_Init()  //4800bps@11.0592MHz
{
	SCON=0X50;//sm0=0,sm1=1,ren=1
	PCON &= 0x7F;		//波特率不倍速
	TMOD &= 0x0F;		//设置定时器模式   T1
	TMOD |= 0x20;		//设置定时器模式   模式2,8位重装
	TL1 = 0xFA;		//设定定时初值
	TH1 = 0xFA;		//设定定时器重装值
	ET1 = 0;		//禁止定时器1中断
	TR1 = 1;		//启动定时器1
	EA=1;//允许中断
	ES=1;;//串行口中断
}
/*串口发送一个字节数据*/
void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0) ;//发送中断标志位为假,空语句
	TI=0;
}



















