《单片机》实验——实验6 MCS-51内部串行口实验

《单片机》实验——实验6 MCS-51内部串行口实验

一、实验目的

1.理解串行通信的特点及分类
2.掌握单片机内部串口的3种工作方式的特点及应用
3.掌握双机通信的编程以及单工传输的特点
4.理解全双工通信的特点
5.理解主从式多机通信的工作过程,掌握串口的工作方式2和3的特点

二、知识要点

(1)8051内部有一个可编程的全双工的串行接口,可同时进行数据的串行发送和接收;串口有4种工作方式,但只有方式1,2,3能够实现串行异步通信,其不同在于波特率及数据帧格式。
(2)与串口相关的控制字主要有SCON,PCON。
(3)串口的工作方式2和3可以实现主从式多机通信,即一台主机,多台从机,从机接受主机的传输控制。

三、实验内容

(1)利用8051内部串口实现自发自收的数据通信,波特率及帧格式自定,要求所传输的数据能够控制LED的亮灭。

#include<reg51.h>
void main(){
    
    
	int led[]={
    
    1,2,4,8,16,32,64,128};
	int i,j;

	TMOD=0X20;
	TH1=0XF8;
	TL1=0XF8;
	TR1=1;
	SCON=0X50;
	PCON=0;
	
	while(1){
    
    
		for(i=0;i<8;i++){
    
    
			RI=0;
			SBUF=~led[i];
			while(TI==0);
			TI=0;
			while(RI==0);
			P1=SBUF;
			for(j=0;j<20000;j++);
		}
	}
}

(2)利用8051内部串口实现双机通信,波特率及帧格式自定。要求发送方采用查询控制方式,接收方采用中断控制方式。

a.发送端:

#include<reg51.h>
void delay(){
    
    
	int j;
	for(j=0;j<20000;j++);
}

void main(){
    
    
	int led[]={
    
    1,4,16,64,2,8,32,128};
	TMOD=0x20;
	TH1=0xf8;
	TL1=0xf8;
	SCON=0X50;
	PCON=0;
	TR1=1;
	while(1){
    
    
		int i;
		for(i=0;i<8;i++){
    
    
			SBUF=~led[i];
			while(TI==0);
			TI=0;
			delay();
		}
	}
}

b.接收端:

#include<reg51.h>

void delay(){
    
    
	unsigned int j;
	for(j=0;j<20000;j++);
	
}

void main(){
    
    
	TMOD=0x20;
	TH1=TL1=0xf8;
	SCON=0X50;
	PCON=0X00;
	TR1=1;
	EA=1;
	ES=1;
	while(1){
    
    
			while(RI==0);
			delay();
	}
}

void ppp() interrupt 4{
    
    	
	P1=SBUF;
	RI=0;
	
}

以上两题电路图相同
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44652589/article/details/114848660
今日推荐