这块串口通信板是当时实验室老师给我布置的作业,给大家分享一下

2022-05-26   大方老师单片机

原标题:这块串口通信板是当时实验室老师给我布置的作业,给大家分享一下

这块串口通信板是当时实验室老师给我布置的作业,给大家分享一下

\\\插播一条:

自己在今年整理一套单片机单片机相关论800余篇

论文制作思维导图

原理+源代+开题报++外文资料

想要的同学私信找我。

专栏的第一篇文章,不是串口通信有什么特别的地方,只是突然想学着别人写写博客,记录自己天天在做的事,顺便帮助后人更快的学习。虽然现在感觉写博客很有趣,但可能以后会坚持不下去,毕竟应该没多少人会看这个专栏。不过就算没人看,以后还可以给面试官看看,也算是一种履历。应该还有一年半的时间可以记录,说不定以后会补补之前学的内容呢,就当是复习了。

那,这块串口通信板是当时实验室老师给我布置的任务:

要求实现三个功能:

.利用单片机自带串口实51单片机51单片机的双向串行通信。

.利用单片IO口实51单片机51单片机的双向高速串行通信(目前达12万波特率)。

.通过串口232接口485接口实51单片机PC机的双向多机通信。

除这些需要实现的功能外,还需要掌握和理SPI总线I2C总线CAN总线的相关内容,及掌握目前主流的通信协议和应用方法,这些以后再说。

这篇博客主要讲要求的第三点,及串口多机通信方面的内容,编程语言51单片机的汇编语言,使用的单片机型号为:STC89C52

实现多机通信的基本思路:

51单片机有一个自带的串口,在进行多机通信时通常将串口工作模式设置为方3(主从模+可调波特率)。

串口在工作方3下,每个数据帧包11位信号。其中包1位起始位(低电平)8位数据位1位可编程位TB81位停止位(高电平)。

数据帧格式:

SCON串口功能寄存器:

串口的多机通信是依SCON寄存器里SM2RB8两个功能位实现的,因为其在工作模式三下有如下性质:

SM20时:无论收到数据的901,都使RI(接收中断标志位)置高,接收数据。

SM21

当接收到的91(地址)时,使RI置高,接收数据。

当接收到的90(数据)时,不置RI,丢弃数据。

利用上述性质,可以通过软件编程实现:

SM2=09位数=0代表这是发送给本机的数据

SM2=19位数=1代表这是广播的地址

SM2=19位数=0代表这不是发送给本机的数据

以上就是利用串口进行多机通信的基本思路。

PC_MCU:

MOV DPTR,#PM_TAB

MOV A,#0

LCALL PRINTF_LCD

SETB SERIAL_FLAG ;置高标志位,告诉中断正在PC通信

MOV A,#03H

LCALL SERIAL_READY ;进行方3的初始化

PM_1: LCALL SAO_KEY

JNB KEY_UP,PM_K1

LJMP PM_K5

PM_K1: JNB KEY_DN,PM_K2

LJMP PM_K5

PM_K2: JNB KEY_OK,PM_K3

LJMP PM_K5

PM_K3: JNB KEY_RE,PM_K4

RET

PM_K4: JNB KEY_SD,PM_K5

CLR ES

CLR EA

SETB TB8 ;即将发送地址

MOV SBUF,ID ;发送地址

JNB TI,$

CLR TI

MOV SBUF,SW_8 ;发送数据

JNB TI,$

CLR TI

SETB ES

SETB EA

PM_K5:

【文章福利】:小编整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!~点击绿色通讯软件搜airuimcu加入。