80C51串行口通信
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
80C51串行口通信
80C51串行口的结构
TXD 是80C51单片机的P3.1口
RXD 是80C51单片机的P3.0口
T1 溢出率是定时器1 的溢出率 SMOD
是发送速率倍频的 16分频
T1每溢出一次发送一位,里面复杂咱们不管,每次发送完后TI
申请中断,就是串口每次发送完一个字节去申请一个中断,每接受完一个字节它也要申请一次中断。接受完了通过移位寄存器
SBUF 取走。发送也用SBUF .
单片机上有两个物理上独立的接受,发送缓冲器SBUF,它们占用同一地址99H;接受器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。
解释下这句话意思:物理上独立的但是地址相同,但是具体内部构造咱们不去了解它。2个寄存器一个负责发一个负责收,接受是双缓冲的结构。如果去取数据
A=SBUF ; 发送数据
SBUF =A; 就是说SBUF =A 就把A
发出去了。 A= SBUF 就是把 SBUF
的值给取出来给了A。单片机的串口就是这么简单。主要要搞好中断和比特率。
80C51串行口的控制寄存器
SCON
是一个特殊功能寄存器,用以设定串行口的工作方式、接受/发送控制以及设置状态标志;
有此图课看出地址诶98H 能对8整除所以可以进行位操作。
●SMO 和SM1为工作方式选择位,可选择四种工作方式:如下图
串行口有4种工作方式。 0 、1、2、3。 f方式0 可以看出
是移位寄存器就是一位一位移位了,波特率是固定的晶
振除以12
Fosc(oscillator 振荡器),方式1 是10位异步收发器(8位数据),波特率可变。一下 2、3
类同。我们主要掌握方式1就OK。用的最多的也是方式1。波特率用软件控制,设置多少就多少。由于选择方式1
所以SMO SM1
就是 0
1 。
●SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。
在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。
因为我们就是1个单片机所以SM2就是0了。有效停止位用到RB8
有用到校验的时候
●REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
所以我们需要设置为1,就能接受数据了。 REN=1;
●TB8,在方式2或方式3中,是发送数据的第九位,可
以用软件规定其作用。可以用作数据的奇偶校验位,或
在多机通信中,作为地址帧/数据帧的标志位。
在方式0和方式1中,该位未用。
而我们用方式1 所以不设置也可以,给0也没问题,因为这个寄存器上电时候全都是0.
●RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
因为我们是方式1所以不用管它了。SM2=0 所以这里接
到是停止位。因为我们不用校验位 TB8
RB8 都设置0就行了。
●TI,发送中断标志位。在方式0时,当串行发送第8
位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断
服务程序中,必须用软件将其清0,取消此中断申请。
●RI,接收中断标志位。在方式0时,当串行接收第8
位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须
在中断服务程序中,用软件将其清0,取消此中断申请。 TI RI
这两位比较重要 TI 是发送停止位硬件置1,
申请中断,响应中端时候必须清0,这个中断就退出了,不然就会又进入中断了。RI 类似。所刚开始的时候是硬件置1
所以不用管。给0 0 就行了。
PCON 寄存器中有一位SMOD与串行口工作有关:
PCON寄存器是单片机的跟电源有关系的。
比如让单片机进入、休眠、掉电、低功耗状态等。其他
几位可以去找找看资料。
SMOD(PCON.7)
波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。
就是工作的时候你想让波特率加倍就把SMOD
=1就行了。咱们不用设置它
80C51串行口的工作方式
一、方式0
方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。
1、方式0输出
方式0咱们就不用看了
二、方式1
方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。
其中1位起始位,8位数据位,1位停止位。
写入SBUF 就是SBUF = 0X01
这就写入了、停一下 TXD 就发起始数据
停止停止开始的时候TI就置1.说明数据就发完了。
2、方式1输入