\\\插播一条:
自己在今年整理一套单片机单片机相关论文800余篇
论文制作思维导图
原理图+源代码+开题报告+正文+外文资料
想要的同学私信找我。
51单片机:串口多机通信
专栏的第一篇文章,不是串口通信有什么特别的地方,只是忽然想学着他人写写博客,记录自己天天在做的事,顺便帮助后人更快的进修。虽然此时感觉写博客很有趣,但可能以后会坚持不下去,毕竟应该没多少人会看这个专栏。不过就算没人看,以后还能够给面试官看看,也算是一种履历。嗯……此时大三刚开学,应该还有一年半的时长能够记录,说不定以后会补补之前学的内容呢,就当是温习了。
那,这块串口通信板是实验室教师给我布置的任务:
要求达到三个功能:
.利用单片机自带串口达到51单片机到51单片机的双向串行通信。
.利用单片机IO口达到51单片机到51单片机的双向高速串行通信(目前到达12万波特率)。
.通过串口,232接口,485接口达到51单片机与PC机的双向多机通信。
除这些须要达到的功能外,还须要掌握和了解SPI总线,I2C总线,CAN总线的有关内容,及掌握目前主流的通信协议和应用方法,这些以后再说。
这篇博客主要讲要求的第三点,及串口多机通信方面的内容,编程语言为51单片机的汇编语言,运用的单片机型号为:STC89C52。
达到多机通信的根本思维:
51单片机有一个自带的串口,在进行多机通信时通常将串口工作模式设置为方式3(主从模式+可调波特率)。
串口在工作方式3下,每个数据帧包括11位信号。其中包含1位起始位(低电平)、8位数据位、1位可编程位(TB8)、1位停下位(高电平)。
数据帧格式:
SCON串口功能寄存器:
串口的多机通信是依靠SCON寄存器里的SM2和RB8两个功能位达到的,由于其在工作模式三下有如下性质:
当SM2为0时:没论收到数据的第9位是0还是1,都使RI(接管中断标志位)置高,接管数据。
当SM2为1时:
当接管到的第9位是1(地址)时,使RI置高,接管数据。
当接管到的第9位是0(数据)时,不置高RI,丢弃数据。
利用上述性质,能够通过软件编程达到:
SM2=0,第9位数据=0:代表这是发送给本机的数据
SM2=1,第9位数据=1:代表这是广告的地址
SM2=1,第9位数据=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加入。
想要学习单片机的朋友 ,做毕业设计的同学,关注我们,口令陈老师,与导师一起学习成长,共同进步,还有更多资料领取。
说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~
-END-
*本文系网络转载,版权归原作者所有,如有侵权请联系删除
