二、串口的多机通信.pptVIP

  • 0
  • 0
  • 约4.84千字
  • 约 15页
  • 2018-11-29 发布于天津
  • 举报
二、串口的多机通信

补充两个数据块的发送接收例题 补例7-3:编制一个发送程序,将片内RAM中50H~5FH的数据串行发送。串行口设定为工作方式2,TB8作奇偶校验位。 解:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位数据便可作奇偶校验用。分别采用查询和中断两种方式发送。 ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0100H ;主程序 MAIN: MOV SCON ,#80H ;设工作方式2 MOV PCON ,#80H ;取波特率为fosc/32 MOV R0 ,#50H ;首址50H送R0 MOV R7 ,#10H ;数值长度送R7 LOOP: MOV A ,@R0 ;取数据 MOV C ,PSW.0 ;P→C MOV TB8 ,C ;奇偶标志送TB8 MOV SBUF ,A ;发送数据 WAIT: JBC TI ,CONT AJMP WAIT ;等待中断标志TI=1 CONT: INC R0 DJNZ R7 ,LOOP ;数值尚未发送完, 继续发送下一个数据 SJMP $ END ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0023H ;串行口的中断入口地址 AJMP SERVE ;转向中断服务程序 ORG 0100H ;主程序 MAIN: MOV SCON ,#80H MOV PCON ,#80H MOV R0 ,#50H MOV R7 ,#0FH; ?够吗 SETB ES ;允许串行口中断 SETB EA ;CPU允许中断 MOV A ,@R0 MOV C ,PSW.0 ;P→C MOV TB8 ,C MOV SBUF ,A ;发送第一个数据 SJMP $ 解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查 表7-2(P148)可知,当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0,定时器选择模式2: 初值为F4H 源程序如下: MAIN: MOV TMOD ,#20H ;设TI工作于模式2 MOV TH1 ,#0F4H ;赋循环计数初值 MOV TL1 ,#0F4H ;赋计数值 SETB TR1 ;启动定时器TI MOV R0 ,#50H ;首地址送R0 MOV R7 ,#10H ;数据长度送R7 MOV SCON ,#0D0H ;串行口工作与方式3,可接收 MOV PCON ,#00H ;设SMOD=0 WAIT: JBC RI ,PR1 ;接收完一帧数据,清RI,转PR1 SJMP WAIT ;否则等待 PR1: MOV A ,SBUF ;读入数据 JNB P ,PNP ;P=0,转PNP JNB RB8 ,PER ;P=1,RB8=0,转出错处理 SJMP RIGHT PNP: JB RB8 ,PER ;P=0,RB8=1,转出错处理 RIGHT: MOV @R0 ,A ;数据送内存 INC R0 ;修改地址指针 DJNZ R7 ,WAIT ;数据未接收完,继续接收下一个数据

文档评论(0)

1亿VIP精品文档

相关文档