实验目标:电脑通过串口将数据发送给51单片机,单片机原封不动地将数据通过串口返送给电脑。
串口的内部结构如下图所示:
串口配置如下:
TMOD
|=
0X20
;
//设置计数器工作方式 2

SCON
=
0X50
;
//设置为工作方式 1


PCON
=
0X80
;
//波特率加倍

TH1
=
baud
;
//计数器初始值设置
TL1
=
baud
;

ES
=
1
;
//打开接收中断
EA
=
1
;
//打开总中断

TR1
=
1
;
//打开计数器

中断号:

代码如下:
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
void uart_init(u8 baud){
TMOD|=0X20; //设置计数器工作方式 2
SCON=0X50; //设置为工作方式 1
PCON=0X80; //波特率加倍
TH1=baud; //计数器初始值设置
TL1=baud;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void main(){
uart_init(0xFA);//计数器初始值
while(1){
}
}
void uart() interrupt 4{
RI = 0; //清除接收中断标志位
rec_data=SBUF; //存储接收到的数据
SBUF=rec_data; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}