好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

MCS51单片机的串行接口 学习资料.ppt

30页
  • 卖家[上传人]:yuzo****123
  • 文档编号:238780672
  • 上传时间:2022-01-12
  • 文档格式:PPT
  • 文档大小:320.50KB
  • / 30 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 6.5 MCS - 51单片机的串行接口 6.5.1 串行通信的基本概念 并行 和 串行并行通信的优点是速度快,效率高,确点是不适合远距离通信串行通信刚好相反单工、半双工 和 全双工单工:信息只能沿着一个方向传播半双工:信息可以沿一条线双向传播,但不能同时实现双向传播全双工:使用两条独立的数据通道,收发可同时进行 同步方式和异步方式(1)同步方式是将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传输的各位二进制码之间都没有间隔其基本特征是发送与接收时钟始终保持严格同步2)异步通信是按帧传送数据,它利用每一帧的起、止信号来建立发送与接收之间的同步,每帧内部各位均采用固定的时间间隔,但帧与帧之间的时间间隔是随机的其基本特征是每个字符必须用起始位和停止位作为字符开始和结束的标志,它是以字符为单位一个个地发送和接收的6.5.2 与串行口有关的特殊功能寄存器 1. 数据缓冲器SBUF串行口缓冲器SBUF是可直接寻址的特殊功能寄存器,其内部RAM字节地址是99H在物理上,它对应着两个独立的寄存器,一个发送寄存器,一个接收寄存器发送时,就是CPU写SBUF的时候(51系列单片机没有专门的启动发送状态的指令);接收时,就是读取SBUF的过程,接收寄存器是双缓冲的,以避免在接收下一帧数据之前, CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。

      表6.2串行口操作模式选择SM0 SM1 模式 功 能 波特率 0 00 11 01 10101同步移位寄存器 8位UART 9位UART 9位UART fOSC/12 可变(T1溢出率) fOSC/64 或fOSC/32 可变(T1溢出率) 3. 电源控制寄存器PCON特殊功能寄存器PCON中,只有一位(最高位)SMOD与串行口的工作有关, 该位是串行口波特率系数的控制位:SMOD=1时,波特率加倍,否则不加倍PCON的地址为87H,不可位寻址,因此初始化时需要字节传送6.5.3 串行口的 4 种工作模式 1. 模式 0 同步移位寄存器输入输出模式,可外接移位寄存器,以扩展I/O口2. (1) 模式 0 输出状态 图6.8外接移位寄存器输出(2) 模式 0 输入状态当满足RI=0且REN0时,就启动一次接收过程图6.9外接移位寄存器输入2. 模式 1串行口工作于模式1时,为波特率可变的8 位异步通信接口数据位由P3.0(RXD)端接收,由P3.1(TXD)端发送传送一帧信息为10位:一位起始位(0),8位数据位(低位在前)和一位停止位(1)波特率是可变的,它取决于定时器T1的溢出速率及SMOD的状态。

      1)模式1发送过程用软件清除TI后,CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程数据由 TXD引脚输出,此时的发送移位脉冲是由定时器/计数器T1送来的溢出信号经过16或32分频而取得的一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断, 完成一次发送过程2)模式1接收过程用软件清除RI后,当允许接收位REN被置位1时,接收器以选定波特率的16倍的速率采样RXD引脚上的电平,即在一个数据位期间有16个检测脉冲,并在第7、8、9个脉冲期间采样接收信号,然后用三中取二的原则确定检测值,以抑制干扰并且采样是在每个数据位的中间,避免了信号边沿的波形失真造成的采样错误当检测到有从“1”到“0”的负跳变时,则启动接收过程,在接收移位脉冲的控制下,接收完一帧信息当最后一次移位脉冲产生时能满足下列两个条件:RI=0;接收到的停止位为1或SM2=0则停止位送入RB8,8位数据进入SBUF,并置RI1,完成一次接收过程否则,所接收到的一桢信息将丢失,接收器复位,并从新开始检测负跳变,以便接收下一桢信息注意:接收中断标志RI应由软件清除 3. 模式 2 和模式 3串行口工作于模式2和模式3时,被定义为9 位异步通信接口。

      它们的每帧数据结构是11位的:最低位是起始位(0),其后是8位数据位(低位在先),第10位是用户定义位(SCON中的TB8或RB8),最后一位是停止位(1)模式2和模式3工作原理相似,唯一的差别是模式2的波特率是固定的,即为f/32或fOSC/64;而模式3的波特率是可变的,与定时器T1的溢出率有关1)模式2和模式3的发送过程发送过程是由执行任何一条SBUF为目的寄存器的指令来启动的由“写入SBUF”信号把8位数据装入SBUF,同时还把TB8装入发送移位寄存器的第9位,并通知发送控制器要求进行一次发送发送开始,把一个起始位(0)送到TXD端移位后,数据由移位寄存器送到TXD端再过一位,出现第一个移位脉冲第一次移位时,把一个停止位“1”由控制器的停止位发生端送入移位寄存器的第9位此后,每次移位时,把0送入第9位因此,当TB8的内容送到移位寄存器的输出位置时,其左面一位是停止位“1”, 而再往左的所有位全为“0” 这种状态由零检测器检测到后,就通知发送控制器作最后一次移位,然后置TI=1,请求申请中断第9位数据(TB8)由软件置位或清零,可以作为数据的奇偶校验位,也可以作为多机通信中的地址、数据标志位。

      如把TB8作为奇偶校验位,可以在发送程序中,在数据写入SBUF之前,先将数据位写入TB82)模式2和模式3接收过程与模式1类似,模式2和模式3接收过程始于在RXD端检测到负跳变时,为此,CPU以波特率16倍的采样速率对RXD端不断采样一检测到负跳变, 16分频计数器就立刻复位, 同时把1FFH写入输入移位寄存器计数器的16个状态把一位时间等分成16份, 在每一位的第7、8、9个状态时, 位检测器对 RXD端的值采样如果所接收到的起始位无效(为1),则复位接收电路, 等待另一个负跳变的到来 若起始位有效(为 0)则起始位移入移位寄存器, 并开始接收这一帧的其余位当起始位 0 移到最左面时, 通知接收控制器进行最后一次移位把8位数据装入接收缓冲器SBUF,第9位数据装入SCON中的RB8,并置中断标志RI=1装入SBUF和RB8以及置位RI的信号只有在产生最后一个移位脉冲且同满足下列两个条件,才会产生:RI=0;SM2=0或接收到的第9位数据为“1”上述两个条件中任一个不满足,所接收的数据帧就会丢失,不再恢复两者都满足时,第9位数据装入TB8,前8位数据装入SBUF请注意:与模式1不同,模式2和3中装入RB8的是第9 位数据, 而不是停止位。

      所接收的停止位的值与SBUF、RB8和RI都没有关系,利用这一特点可用于多机通信中6.5.4 多机通信 图6.10多处理机通信系统 6.5.5 波特率串行口每秒钟发送或接收的数据位数称为波特率假设发送一位数据所需时间为T,则波特率为1/T1)模式0的波特率等于单片机晶振频率的1/12,即每个机器周期接收或发送一位数据2)模式2的波特率与电源控制器PCON的最高位SMOD的写入值有关:即SMOD=0, 波特率为(1/64) fOSC; SMOD=1, 波特率为(1/32)fOSC3)模式1和模式3的波特率除了与SMOD位有关之外,还与定时器T1的溢出率有关定时器T1作为波特率发生器,常选用定时方式2(8位重装载初值方式),并且禁止T1中断此时TH1从初值计数到产生溢出,它每秒钟溢出的次数称为溢出率于是表 6.3 定时器T1产生的常用波特率 假设某MCS-51单片机系统,串行口工作于模式3,要求传送波特率为1 200 Hz, 作为波特率发生器的定时器T1工作在方式2时,请求出计数初值为多少?设单片机的振荡频率为6MHz因为串行口工作于模式3时的波特率为所以当SMOD=0时,初值TH1=256-6106/(12001232/1)=243=0F3H当SMOD=1时,初值TH1=256-6106/(12001232/2)=230=0E6H6.6 串行口的应用 一、 串行口的编程串行口需初始化后,才能完成数据的输入、输出。

      其初始化过程如下:(1)按选定串行口的操作模式设定SCON的SM0、SM1两位二进制编码2)对于操作模式2或3,应根据需要在TB8中写入待发送的第9位数据3)若选定的操作模式不是模式0,还需设定接收/发送的波特率设定SMOD的状态,以控制波特率是否加倍若选定操作模式1或3,则应对定时器T1进行初始化以设定其溢出率二、 串行口的应用 例1 用8051串行口外接74LS165移位寄存器扩展8位输入口,输入数据由8个开关提供,另有一个开关K提供联络信号电路示意如图6.11 所示当开关K合上时, 表示要求输入数据输入8位开关量,处理不同的程序图6.11程序如下:START:JBP1.0,$;开关K未合上,等待SETBP1.1;165并行输入数据CLRP1.1;开始串行移位MOVSCON,10H;串行口模式0并启动接收JNBRI,$;查询RICLRRI;查询结束,清RIMOVA,SBUF;输入数据 ;根据A处理不同任务SJMPSTART;准备下一次接收例 2 利用串行口进行双机通信 图6.12双机通信系统甲机发送(采用查询方式):MOVSCON,80H;设置工作方式2MOVPCON,00;置SMOD=0,波特率不加倍MOVR0,40H;数据区地址指针MOVR2,10H;数据长度LOOP:MOVA,R0;取发送数据MOVC,P;奇偶位送TB8MOVTB8,CMOVSBUF,A;送串口并开始发送数据WAIT:JBCTI,NEXT;检测是否发送结束并清TISJMPWAITNEXT:INCR0;修改发送数据地址指针DJNZR2,LOOPRET乙机接收(查询方式):MOVSCON,90H;模作模式2,并允许接收MOVPCON,00H;置SMOD=0MOVRO,60H;置数据区地址指针MOVR2,10H;等待接收数据长度 LOOP:JBCRI,READ;等待接收数据并清RISJMPLOOPREAD:MOVA,SBUF;读一帧数据MOVC,PJNCLP0;C不为1转LP0JNBRB8,ERR;RB8=0,即RB8不为P转ERRAJMPLP1LP0:JBRB8,ERR;RB8=1,即RB8不为P转ERRLP1:MOVR0,A;RB8=P,接收一帧数据INCR0DJNZR2,LOOPRETERR: ;出错处理程序 例 2 单片机和PC之间利用串行口进行通信51单片机有一个全双工的串行通讯口,和PC机之间可以方便地进行串口通讯。

      电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,可以采用专用芯片MAX232,也可以用几个三极管进行转换,但还是用专用芯片简单可靠一般采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXDTTL电平和RS-232电平的转换。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.