本博客以广西大学电气工程学院陈柏轩老师编写的单片机原理与应用实验指导书为基础,建立在读者对51单片机的基本编程软件与烧录软件较为熟悉的基础上撰写。
实现51单片机与PC通信:
1.基于查询法实现通信:
#include <REGX52.H>
#define LED P1
unsigned char buf;
void serial_init()//串行中断初始化函数
{
SCON=0x50;//选中串行方式1,启动串行接收数据
PCON=0x00;//设置波特率倍增为0
TMOD=0x20;//设置定时器1工作在方式2
TR1=0;//清除定时器1中断溢出标志
TH1=0xFD;//设置定时初值为253
TL1=0xFD;
EA=1;//开启总中断
ES=1;//允许串行口申请中断
TR1=1;//开启定时器1中断
ET1=0;//禁止定时器中断溢出;
}
void main()
{
serial_init();//串行口中断初始化
while(1)
{
if(RI==1)
{
RI=0;
buf=SBUF;
LED=buf;
ES=0;//禁止串行口中断
SBUF=buf;
while(!TI);
TI=0;
ES=1;
}
}
}
2.基于中断法实现通信:
#include <REGX52.H>
#define LED P1
unsigned char buf=0,flag=0;
void serial_init()//串行中断初始化函数
{
SCON=0x50;//选中串行方式1,启动串行接收数据
PCON=0x00;//设置波特率倍增为0
TMOD=0x20;//设置定时器