- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.应用举例 【例7-1】在MCS-51系统中,若串行口未被占用,则可用串行口的工作方式0来扩展并行I/O口。此时不占用片外RAM的地址。 设电路连接如图7-7所示,将CD4094的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左向右依次点亮,并反复循环之。假定发光二极管为共阴极型。 图7-7 串行移位输出电路连接 分析: 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,若采用中断方式,可在发完一帧数据后由TI置位发出中断申请,在中断服务程序中发送下一帧数据;若采用查询方式,可通过程序查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存器SCON进行初始化。在方式0中,只要将控制字00H送SCON就可以了。 把80C51串行口8位状态码串行移位输出后,TI置“l”,把TI作为状态查询标志,则使用查询方式完成的参考程序如下: MOV SCON,#00H ;串行口方式0工作 CLR ES ;禁止串行中断 MOV A,#80H ;发光管从左边亮起 DELR:CLR P1.0 ;关闭并行输出 MOV SBUF,A ;串行输出 JNB TI,$ ;状态查询 SETB P1.0 ;开启并行输出 ACALL DELAY ;状态维持 CLR TI ;清发送中断标志 RR A ;发光组合右移 AJMP DELR ;继续 在使用时要注意SM2的状态必须为“0”。如采用中断方法,系统同样不能自动清除TI和RI状态,需由用户软件复位。 8.3.2 串行工作方式1 方式1是10位为一帧的异步串行通信方式。共包括 1个起始位(低电平),8个数据位(最低位在前)和1个停止位。其帧格式为: ? 起始 D0 D1 D2 D3 D4 D5 D6 D7 停止 ? 1.数据发送与接收 方式1的数据发送是由一条写发送寄存器(SBUF)的指令开始,随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由TXD端串行输出。一个字符帧发送完后,使TXD输出线维持在“l”(mark)状态下,并将 SCON寄存器的TI置“1”,通知 CPU可以接着发送下一个字符。 接收数据时,SCON的REN 位应处于允许接收状态(REN=1)。在此前提下,串行口采样RXD端,当采样到从“l”向“0”的状态跳变时,则认定为接收到起始位,随后在移位脉冲的控制下,把接收到的数据位移入接收寄存器中,直到停止位到来之后把停止位送RB8中,并置位中断标志位RI,通知 CPU从 SBUF取走接收到的字符。 2.波特率的设定 方式0的波特率是固定的,但方式1的波特率则是可变的,以定时器T1作波特率发生器使用,其值由定时器1的计数溢出率和PCON寄存器中SMOD位的值来决定,其公式为: 波特率= 其中smod为PCON寄存器最高位的值,其值为1或0。 当定时器1作波特率发生器使用时,通常使T1工作在工作方式2模式(即8位自动加载方式)。定时器之所以选择工作方式2,是因为方式2具有自动加载功能,可避免通过程序反复装入初值所引起的定时误差,使波特率更加稳定。假定计数初值为X,那么每过“256-X”个机器周期,定时器T1就会产生一次溢出,为了避免因溢出而产生不必要的中断,所以此时应禁止T1中断。 溢出周期为: 溢出率为溢出周期的倒数,因此溢出率为: 将溢出率带入波特率计算公式,则有: 波特率= 实际使用时,总是先确定波特率,再计算定时器1的计数初值,然后进行定时器的初始化。根据上述波特率计算公式,得出计数初值的计算公式为: X= 由于T1作为波特率发生器是由系统硬件决定的,因此硬件电路接好后,无需用户在硬件上再做额外的工作,只需根据通信所要求的波特率计算出定时器TI的计数初值,以便在程序中使用即可。 8.3.3 串行工作方式2 方式2是11位为一帧的串行通信方式,即 1个起始位、9个数据位和 1个停止位。其帧格式为: ? 起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位 ? 在方式 2下,字符还是 8个数据位,只不过增加了一个第9个数据位TB8(D8),而且其功能由用户确定,是一个可编程位。TB8由软件置位或复位,可以作为多机通信
文档评论(0)