89C51串行口及串行通信技术教程解决方案.pptVIP

  • 18
  • 0
  • 约1.45万字
  • 约 87页
  • 2016-11-07 发布于湖北
  • 举报

89C51串行口及串行通信技术教程解决方案.ppt

解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序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精品文档

相关文档