过往历程
前期准备
1:本文使用的头文件是由stc生成
点击保存文件之后,保存至自己文件目录下方即可
2:本文使用的都是官方提供的底层驱动代码
3:本文使用的都是STC中的串口配置
串口通信知识点
通讯的方式分类:并行通信 串行通信
并行通信:
数据的各位同时在多根数据线上发送或接收。
串行通信:
数据的各位在同一根数据线上逐位发送和接收7
并行通信的特点:
控制简单,传输速度快;由于传输线较多,适用于短距离通信。
串行通信的特点:
控制复杂,传输速度慢;只需要一根数据线,适用于远距离通信。
根据串行通信中对数据流的分界、定时以及同步方案方法不同,可分为和同步和异步。
同步方式:
发送端和接收端必须使用同一时钟,是一种连续传送数据的通信方式,一次通讯传送多个字符数据(一帧数据)
异步方式:
发送和接收端使用的是各自的时钟,是一种不连续传送数据的通信方式,一次通信只能传输一个字符数据(字符帧)。字符帧之间的间隙可以是任意的
根据串行数据的传输方向,我们可以将通信分为单工,半双工,双工。
单工:
信道是单向的,数据只能单方面传输,发送端只能发送数据,不能接收;接收端只能接收数据,不能发送;
半双工:
数据可以进行双向传输,但不能在两个方向上同时进行。
全双工:
数据可以同时进行双向传输。
SCON
SM0、SM1 工作方式:
SM2:多机通信控制位。方式2、方式3的时候才使用。
工作于方式2和方式3时,当SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都将数据送入SBUF,并发出中断申请。
REN=1允许接收;REN=0禁止接收。
TB8:接收数据的第8位
RB8:接收数据的第8位
TI:串口发送完成中断标志位。由硬件自动置1,需要软件清“0”。
RI:串口接收完成中断标志位。由硬件自动置1,需要软件清“0”。
总代码
#include<reg52.h>
sfr AUXR=0X8E;
void fmq()
{
P2=((P2&0x1f)|0xa0);
P0=0x00;
P2&=0x1f;
P2=((P2&0x1f)|0x80);
P0=0xff;
P2&=0x1f;
}
void din()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
TR1=1;
SCON=0X50;
AUXR=0X00;
ES=1;
EA=1;
}
void shou(char i)
{
SBUF=i;
while(TI==0);
TI=0;
}
int aa;
void fa() interrupt 4
{
if(RI==1)
{
RI=0;
aa=SBUF;
shou(aa);
}
}
void main()
{
fmq();
din();
shou(0x5a);
while(1);
}
省赛代码传送门
第三届蓝桥杯单片机省赛
第四届蓝桥杯单片机省赛
第五届蓝桥杯单片机省赛
第六届蓝桥杯单片机省赛
第七届蓝桥杯单片机省赛
第八届蓝桥杯单片机省赛
第九届蓝桥杯单片机省赛
第十届蓝桥杯单片机省赛
第十一届蓝桥杯单片机省赛