本文主要是介绍实验5 MCS-51内部串行口实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实验5 MCS-51内部串行口实验
- 一、实验目的
- 二、实验内容
一、实验目的
- 理解串行通信的特点及分类
- 掌握单片机内部串口的4种工作方式的特点及应用
- 掌握双机通信的编程以及单工传输的特点
- 理解全双工通信的特点
- 理解主从式多机通信的工作过程,掌握串口的工作方式2和3的特点
二、实验内容
- 知识要点
(1)8051内部有一个可编程的全双工的串行接口,可同时进行数据的串行发送和接收;串口有4种工作方式,但只有方式1,2,3能够实现串行异步通信,其不同在于波特率及数据帧格式。
(2)与串口相关的控制字主要有SCON,PCON。
(3)串口的工作方式3可以实现主从式多机通信,即一台主机,多台从机,从机接受主机的传输控制。 - 实验内容
(1)利用8051内部串口实现自发自收的数据通信,波特率及帧格式自定,要求所传输的数据能够控制LED的亮灭。
#include<reg51.h>
void main(){int led[]={1,2,4,8,16,32,64,128};int i,j;TMOD=0X20; // T1 定时 方式2 // 0010 0000TH1=0XF8; // 7 TL1=0XF8;TR1=1; // 允许 定时器SCON=0X50;// 方式1 10位数据异步通信方式 允许中断 0101 0000;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内部串口实现双机通信,波特率及帧格式自定。要求发送方采用查询控制方式,接收方采用中断控制方式。
#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; // 方式2 T1TH1=0xf8; TL1=0xf8; SCON=0X50; // 方式1 允许接收 0101 0000PCON=0; // 波特率不加倍;TR1=1; // while(1){int i;for(i=0;i<8;i++){SBUF=~led[i];while(TI==0); //等待发送 TI=0;delay();}}
}
#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;}
这篇关于实验5 MCS-51内部串行口实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!