89C51串行口及串行通信技术资料.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序DELAY来实现。 ORG 0000H AJMP START ORG 0023H ;串口中断入口 AJMP SBR ;转串口中断服务程序 ORG 0100H ;主程序 START: MOV SCON,#00H;串口方式0初始化 SETB ES SETB EA MOV A,#80H ;最左边一个LED先亮 CLR P1.0 ;关闭并行输出 MOV SBUF,A ;开始串行输出 LOOP: SJMP $ ;等待中断 SBR: SETB P1.0 ;启动并行输出 ACALL DELAY ;显示延迟 CLR TI ;清发送中断标志 RR A ;准备右边一个LED显示 CLR P1.0 ;关闭并行输出 MOV SBUF,A ;再次串行输出 RETI ;中断返回 注:用方式0外加移位寄存器来扩展8位输出口时,要求移位寄存器有输出控制,否则串行移位过程会反映到并行输出口。 例3)用89C51串口外接移位寄存器74HC165或166扩展8位并口输入。输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时,表示要求输入数据,输入的8位为开关量,提供逻辑模拟子程序的输入信号。 解:串口方式0的接收要用SCON寄存器中的REN位作为开关来控制。因此,初始化时,除了设置工作方式之外,还要使REN位为1,其余各位仍然为0。 对RI采用查询方式来编写程序,先查询开关K是否闭合。 START: MOV SCON,#10H ;串口方式0初始化 JB P1.1,$ ;开关K未闭合则等待 SETB P1.0 ;SHIFT=1,并行置入数据 CLR P1.0 ;SHIFT=0,开始串行移位 JNB RI,$ ;查询RI CLR RI ;查询结束,清RI MOV A,SBUF ;读数据到累加器 ACALL LOGSIM ;进行逻辑模拟 SJMP START 。 串行口与LED的连接电路 。 串行口与LED的连接电路 上图中,8031单片机串行口工作于方式0,作为移位寄存器,RXD用于输出字形码(段码),TXD用于输出移位脉冲。 74LS164为8位并行输出串行移位寄存器,TXD每输入一个移位脉冲,74LS164便按QA~QH的次序移位一次,8个移位脉冲过后,RXD输出的8位二进制数便全部移入一片74LS164中,并从QA~QH引脚并行输出至LED的dp~a引脚。由于后级74LS164的输入端与前级74LS164的QH相连,6片74LS164首尾相串,因此,当6组(每组8个)移位脉冲过后,从RXD输出的6个字形码(对应时、分、秒的数值)便会从左到右送入6片74LS164,再并行输出到LED5~LDE0,从而显示出实时时间。 (2)应用程序 ? 程序所用到的内部RAM数据存储单元如下。 27H:秒计数单元 28H:分计数单元 29H:时计数单元 4AH~4FH:显示缓冲区 …… DISP:CLR ES ; 关串口中断,使用查询方式控制 MOV SCON, #00H ; 置串口为方式0 MOV R0, #4FH ; 准备向缓冲区放数 MOV A, 27H ; 取秒值 ACALL PUTT ; 放秒值 MOV A, 28H ; 取分值 ACALL PUTT ; 放分值 MOV A, 29H ; 取小时值 ACALL PUTT ; 放小时值 MOV R0, #4FH ; 指向显示缓冲区低字节(秒单元) MOV R2, #06H ; 共显示6位字符 MOV DPTR, #SEGTAB; 指向字形码表首 DISP1:MOV A, @R0 ; 取出要显示的数

文档评论(0)

三四五 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档