单片微型计算机5.ppt

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片微型计算机5

第6讲 8051的串行口 串行口数据寄存器SBUF,有两个。 一个是接收寄存器SBUF,另一个是发送寄存器SBUF,它们的地址都是99H。 SBUF是可直接寻址的专用寄存器, 读SBUF就是读接收寄存器。 写SBUF就是将数据写入发送寄存器。 串行口控制寄存器SCON TCON的SM2位 SM2:允许方式2或3的多机通讯控制位。 在串行工作方式0时,不用SM2位,应置SM2=0。 只在串行口工作于方式1,2或3的接收状态时,SM2位才对串行的工作有影响,在接收完9位数据D0~D8后,若RI=1,则把接收的所有数据丢失;若RI=0且SM2=0,则把接收到的前8位数据D0~D7装入SBUF,把第9位数据D8装入RB8,并置“1RI,请求中断;若RI=0,但是SM2=l,那么只有D8为1时,才把D0~D7装入SBUF,把D8装入RB8,并置RI=1,否则,把接收的数据全部丢失,RI仍为0,不请求中断。 TCON的REN,TB8,RB8位 REN:允许串行接收控制位。 无论串行口工作于方式0,1,2或3的那一种,只有先用软件置REN=1,才允许串行口接收数据。由软件清“0”REN来禁止接收。REN是RXD/P3.0引脚功能选择位。 TB8:预置发送的第9位数据。 在串行口工作于方式2或方式3的发送状态时,TB8是待发送的第9位数据。TB8需用软件置位或复位。其它情况用不到TB8。 RB8:接收到的第9位数据。 方式0不用RB8。串行口工作于方式1时,装入RB8的是停止位。工作于方式2和3时,把接收到的第9位数据装入RB8。工作于方式2或方式3的多MCS-51单片机通讯时,RB8实际上来自发送机的TB8。 串行口中断标志 TI:发送中断标志。 在方式0发送完第8位数据时,由内部硬件自动置TI=1,请求中断;在其它方式串行发送的停止位开始时,由硬件置TI=1,请求中断。TI必须由软件清“0”(撤消中断请求)。 RI:接收中断标志。 在方式0接收完第8位数据时,由内部硬件自动置RI=1,请求中断;在其它方式串行接收的停止位开始时,由硬件置RI=1,请求中断。RI必须由软件清“0”(撤消中断请求)。 波特率 波特率指的是串行口每秒钟发送或接收多少位。 从上表可知,串行口工作于方式0和方式2时,波特率是基本固定的,工作于方式1和方式3时,波特率是由定时器1的溢出率决定的。 波特率 方式1、3波特率 =(定时器1的溢出率) 定时器1的溢出率 定时器1的溢出率取决于定时器工作方式控制寄存器TMOD的设定,在通信应用中,设置定时器1为定时器方式,在这种方式下,T1对机器周期计数(对普通的8051单片机,一个机器周期为12个时钟周期)。且须运行于自动重新装载方式,此时TMOD的高4位应为0010B,而自动重装入的值放在TH1中。 波特率 这时波特率的产生公式为: 通信程序 1在主程序中设置相关寄存器: main() { unsigned char *pt; unsigned char data i; signed int data AA; unsigned char data ii,I,J,kval; EA=0; CONTRY1=0X00; CONTR1=0X00; /*将热泵分为两组*/ CONTR2=0X00; /*控制用户循环泵*/ /* CONTR1=0Xff; CONTR1=0X00; */ DL100(); TMOD = 0x25; /* 定时器工作方式控制 */ TCON = 0XF0; SCON = 0X58; /*确定串行口的工作方式*/ PCON = 0X00; /* 波特率为19200时最高位设为1,其余为0 */ TH1=0XFA; /*缺省波特率为4800*/ 通信程序 TR0 = 0; /*定时器0禁止*/ TR1 = 1; /*定时器1启动*/ ET0 = 0; /*定时器0中断禁止*/ ET1 = 0; /*定时器1中断禁止*/ RI = 0; TI = 0; PS = 1; ES = 1; /*开串口中断*/ REN = 1; EX0 = 0; EX1 = 0;

文档评论(0)

zw4044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档