单片机原理及应用第8章串口及其应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  2. 输入   串口设置为方式0时,如果设置RI=0,REN=1,则启动串行口开始串行接收数据。RxD为数据输入端,TxD输出同步移位脉冲,波特率为单片机振荡频率的1/12(fosc/12),即每个机器周期接收一个位。当接收8个位后,硬件置1中断标志位RI,并申请中断,表示数据接收完毕。如要开始下次接收,则应由软件先清除RI,并且要及时把接收缓冲区中已经接收到的数据读出,否则下一个数据接收完毕后,就把原来的数据覆盖。 这里给出串口连接74LS165扩展按键的电路,如图8-17所示,如果检测到按键,则LED0闪烁3下。 图8-17 串口工作方式0应用——输入   源代码如下: ORG 0000H CLR P1.0 ; 让时钟起作用 MOV SCON,#10H ; 设置为串口方式0,并启动接收      LOOP: CLR P1.1 ; 加载并口数据,包含按键信息 NOP ; 延时两个机器周期 NOP SETB P1.1 ; 数据已经加载 CLR RI ; 清除RI,开始输入 JNB RI,$ ; 查询等待接收完 MOV A,SBUF ; 然后把接收缓冲区数据读入A CJNE A,#0FFH,LED ; 判定是否有按键 SJMP LOOP ; 循环     LED: MOV R3,#03H ; ?LED0亮灭三次     R_LED: CLR P1.2 ; 点亮 ACALL DELAY SETB P1.2 ; 熄灭 ACALL DELAY DJNZ R3,R_LED SJMP LOOP ; 循环     DELAY: MOV R0,#00H     DEL1: MOV R1,#00H     DEL2: MOV R2,#7FH DJNZ R2,$ DJNZ R1,DEL2 DJNZ R0,DEL1 RET END   进一步:   ? 这个程序首次尝试在0000H处直接放置程序功能代码,而不是跳转,并且里面也没有再留出中断向量的空间,因为程序没有使用任何的中断。这样做是可以的,但是不提倡这种编程方法。   ? 这一节里的两个程序是要向读者说明,我们可以扩展单片机已经具有的接口和功能,并且给出了扩展的方法。比如,在如何设计按键的问题上没有定论,不必拘泥于某种模式,使用串口也可以设计按键。   ? 在电路图的画法上,我们在逐步增加电路符号和连线方法,同时却在精简我们已经使用非常多的一些套图或者模块。比如,这里我们没有再给出8051单片机的电路和连线,而只给出了几个接口线,如P1.0、P1.1、P3.0(RxD)等。   ? 后面再讲程序和电路的时候,我们的眼光一方面仍然紧盯初学者,而另一方面开始关注已经入门者,甚至还加入了有相当深度的探讨。 8.3.4 工作方式1   方式1是异步通信模式,波特率可变,由定时器T1的溢出率和SMOD位共同决定。在这种方式下,TxD为发送端,RxD为接收端,发送和接收双方没有方式0里的同步移位脉冲,而是按照同一个波特率进行通信。方式1中传输的是10位的数据帧:1位起始位,8位数据位(低位在前),1位停止位。串口通信方式1的帧格式如图8-18所示。 图8-18 串口通信方式1的帧格式   1. 方式1的发送   串口以方式1发送时,数据由TxD端输出。完成一次发送任务的步骤是:   ? 第一步,确保TI为0。由软件清零,可以执行指令: CLR TI   ? 第二步,给串口发送缓冲区写入待发送的数据,启动发送。比如,要发送的数据是55H,则可以执行指令:     MOV SBUF,#55H   ? 第三步,发送次序为:   硬件首先发送起始位,为逻辑低电平;   由低位到高位发送8位数据;   然后硬件发送停止位,为逻辑高电平。   ? 最后,发送完8位数据后,在发送停止位时,置位TI,申请中断,通知CPU当前发送任务已经完成,准备发送下一个字节或作其他处理。   发送完毕后,TxD维持为高电平,直到下一次发送的起始位到来。   2. 方式1的接收   串口以方式1接收时,数据由RxD端输入。完成一次接收任务的步骤是:   ? 第一步,设定RI=0,REN=1,启动接收,管脚RxD便开始进行串行口的采样。   采样速率为波特率的16倍,就是每一位串口数据都要对应16个采样脉冲,但只在其中的第7、8、9个脉冲时,位检测对 RxD端的值进行采样。取值为三个采样值中取多数(至少2个)作为读入值(即多数表决原则),这样可以抑制噪声,并且由于采样的信号总是在接收位的中间位置,因而收发频率不完全一致时也可以正

文档评论(0)

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

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

1亿VIP精品文档

相关文档