- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二,当定时/计数器工作于计数方式时,对芯片引脚T0(P3.4)或T1(P3.5)上的输入脉冲计数,计数过程如下:在每一个机器周期的S5P2时刻对T0(P3.4)或T1(P3.5)上信号采样一次,如果上一个机器周期采样到高电平,下一个机器周期采样到低电平,则计数器在下一个机器周期的S3P2时刻加1计数一次。因而需要两个机器周期才能识别一个计数脉冲,所以外部计数脉冲的频率应小于振荡频率的1/24 在RI=0的条件下,将REN(SCON.4)置“1”就启动一次接收过程。串行数据通过RXD接收,同步移位脉冲通过TXD输出。在移位脉冲的控制下,RXD上的串行数据依次移入移位寄存器。当8位数据(一帧)全部移入移位寄存器后,接收控制器发出“装载SBUF”信号,将8位数据并行送入接收数据缓冲器SBUF中,同时,由硬件使接收中断标志RI置位,向CPU申请中断。 二.方式1 方式1为8位异步通信方式,在方式1下,一帧信息为10位:1位起始位(0),8位数据位(低位在前)和1位停止位(1)。TXD发送数据端,RXD为接收数据端。波特率可变,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定。 即:波特率=2SMOD×(T1的溢出率)/32。 (1)发送过程 在TI=0时,当CPU执行一条向SBUF写数据的指令时,如MOV SBUF,A,就启动了发送过程。数据由TXD引脚送出,发送时钟由定时/计数器T1送来的溢出信号经过16分频或32分频后得到, 在发送时钟的作用下,先通过TXD端送出一个低电平的起始位,然后是8位数据(低位在前),其后是一个高电平的停止位,当一帧数据发送完毕后,由硬件使发送中断标志TI置位,向CPU申请中断,完成一次发送过程。 (2)接收过程 当允许接收控制位REN被置1,接受器就开始工作,由接收器以所选波特率的16倍速率对RXD引脚上的电平进行采样。当采样到从“1”到“0”的负跳变时,启动接收控制器开始接收数据。在接收移位脉冲的控制下依次把所接收的数据移入移位寄存器,当8位数据及停止位全部移入后,根据以下状态,进行响应操作。 ① 如果RI=0、SM2=0,接收控制器发出“装载SBUF”信号,将输入移位寄存器中的8位数据装入接收数据寄存器SBUF,停止位装入RB8,并置RI=1,向CPU申请中断。 ② 如果RI=0、SM2=1,那么只有停止位为“1”才发生上述操作。 ③ RI=0、SM2=1且停止位为“0”,所接收的数据不装入SBUF,数据将会丢失。 ④ 如果RI=1,则所接收的数据在任何情况下都不装入SBUF,即数据丢失。 三.方式2和方式3 方式2和方式3时都为9位异步通信接口,接收和发送一帧信息长度为11位,即1个低电平的起始位,9位数据位,1个高电平的停止位。发送的第9位数据放于TB8中,接收的第9位数据放于RB8中。TXD为发送数据端,RXD为接收数据端。方式2和方式3的区别在于波特率不一样,其中方式2的波特率只有两种:fosc/32或fosc/64,方式3的波特率与方式1的波特率相同,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,即: 波特率=2SMOD×(T1的溢出率)/32。 在方式1时,也需要对定时/计数器T1进行初始化。 1.发送过程 方式2和方式3发送的数据为9位,其中发送的第9位在TB8中,在启动发送之前,必须把要发送的第9位数据装入SCON寄存器中的TB8中。准备好TB8后,就可以通过向SBUF中写入发送的字符数据来启动发送过程,发送时前8位数据从发送数据寄存器中取得,发送的第9位从TB8中取得。一帧信息发送完毕,置TI为1。 2.接收过程 方式2和方式3的接收过程与方式1类似,当REN位置1时也启动接收过程,所不同的是接收的第9位数据是发送过来的TB8位,而不是停止位,接收到后存放到SCON中的RB8中,对接收是否有判断也是用接收的第9位,而不是用停止位。其余情况与方式1相同。 5.3.4 串行口的编程及应用 一.串行口的初始化编程 1.串行口控制寄存器SCON位的确定。 根据工作方式确定SM0、SM1位;对于方式2和方式3还要确定SM2位;如果是接收端,则置允许接收位REN为1;如果方式2和方式3发送数据,则应将发送数据的第9位写入TB8中。 2.设置波特率。 对于方式0,不需要对波特率进行设置。 对于方式2,设置波特率仅须对PCON中的SMOD位进行设置。 对于方式1和方式3,设置波特率不仅须对PCON中的SMOD位进行设置,还要对定时/计数器T1进行设置,这时定时/计数器T1一般工作于方式2—8位可重置方式,初值可由下面公式求得: 由于: 波特率=2SMOD×(T1的溢出率)/32 则:
文档评论(0)