串口通信可以实现单片机和外部设备之间的数据传输,利用下面的程序可以实现电脑发送特定指令(0、1等)控制LED灯的亮、灭:
#include "reg52.h"
sbit LED = P1^0; //位定义P1.0引脚
void Usart_Init(void)
{
SCON = 0x50; //设置串口工作方式为方式1
TMOD = 0x20; //定时器工作方式为方式2
PCON = 0x00; //波特率不加倍
TH1 = 0xFD;
TL1 = 0xFD; //11.0592MHz晶振的通信波特率为9600
ES = 1; //开串口中断
EA = 1; //开总中断
TR1 = 1; //开定时器1
}
void main(void)
{
Usart_Init(); //串口初始化
while(1)
{
;
}
}
void Usart(void) interrupt 4 using 1
{
unsigned char Receive; //定义接收变量
Receive = SBUF; //接收到的指令存储在Receive中
RI = 0; //清除接收标志位
if( Receive == '0' )
{
LED = 0; //接收为"0"时点亮LED灯
}
if( Receive == '1' )
{
LED = 1; //接收为"1"时熄灭LED灯
}
SBUF = Receive; //接收到的数据传回电脑
while(!TI); //检测发送是否完毕
TI = 0; //发送完毕后清空发送标志位
}
