第7章 前串行通信 本章要点.pptVIP

  • 7
  • 0
  • 约9.93千字
  • 约 46页
  • 2019-03-09 发布于福建
  • 举报
第7章 前串行通信 本章要点

⑷ 应用举例 【例7-3】设甲乙机以串行方式1进行数据传送,fosc=11.0592MHz,波特率为1200b/s。甲机发送的16个数据存在内RAM 40H~4FH单元中,乙机接收后存在内RAM 50H为首地址的区域中。 T1初值 = 256 - × = 232 = E8H 32 12×1200 解: 串行方式1波特率取决于T1溢出率(设SMOD=0), 计算T1定时初值: 20 SM0 SM1 SM2 REN TB8 RB8 TI RI 0 1 0 0 0 0 0 0 1.SMOD的设置 2.编制T1的初始化 3.选用查询方式,需要关毕中断 甲机发送子程序: TXDA: MOV TMOD,#20H ;置T1定时器工作方式2 MOV TL1,#0E8H ;置T1计数初值 MOV TH1,#0E8H ;置T1计数重装值 CLR ET1 ;禁止T1中断 SETB TR1 ;T1启动 MOV SCON,#40H ;置串行方式1,禁止接收 MOV PCON,#00H ;置SMOD=0(SMOD不能位操作) CLR ES ;禁止串行中断 MOV R0,#40H ;置发送数据区首地址 MOV R2,#16 ;置发送数据长度 TRSA:MOV A,@R0 ;读一个数据 MOV SBUF,A ;发送 JNB TI,$ ;等待一帧数据发送完毕 CLR TI ;清发送中断标志 INC R0 ;指向下一字节单元 DJNZ R2,TRSA ;判16个数据发完否?未完继续 RET ; RXDB: MOV TMOD,#20H ;置T1定时器工作方式2 MOV TL1,#0E8H ;置T1计数初值 MOV TH1,#0E8H ;置T1计数重装值 CLR ET1 ;禁止T1中断 SETB TR1 ;T1启动 MOV SCON,#40H ;置串行方式1,禁止接收 MOV PCON,#00H ;置SMOD=0(SMOD不能位操作) CLR ES ;禁止串行中断 MOV R0,#50H ;置接收数据区首地址 MOV R2,#16 ;置接收数据长度 SETB REN ;启动接收 RDSB: JNB RI,$;等待一帧数据接收完毕 CLR RI ;清接收中断标志 MOV A,SBUF ;读接收数据 MOV @R0,A ;存接收数据 INC R0 ;指向下一数据存储单元 DJNZ R2,RDSB;判16个数据接收完否?未完继续 RET ; 乙机接收子程序: 方式2是一帧11位的串行通信方式,即1个起始位,8个数据位,1个可编程位TB8/RB8和1个停止位, 其帧格式为: 3、 串行工作方式2 起始 D0 D1 D2 D3 D4 D5 D6 D7 TB8/RB8 停止 当SMOD=0时,波特率=20 ╳ fosc/64= fosc/64 当SMOD=1时,波特率=21 ╳ fosc/64= fosc/32 可编程位TB8/RB8既可作奇偶校验位用,也可作控制位(多机通信)用,其功能由用户确定。 数据发送和接收与方式1基本相同,区别在于方式2把发送/接收到的第9位内容送入TB8/RB8。 波特率:方式2波特率固定,即fosc/32和fosc/64。 如用公式表示则为:波特率=2SMOD ╳ fosc/64 【例7-4】 设计一个串行方式2发送子程序(SMOD=1),将片内RAM 50H~5FH中的数据串行发送,第9数据位作为奇偶校验位。接到接收方核对正确的回复信号(用FFH表示)后,再发送下一字节数据,否则再重发一遍。 解:程序如下: SM0 SM1 SM2 REN TB8 RB8 TI RI 1 0 0 0 0 0 0 0 TRS2: MOV SCON,#80H ;置串行方式2,禁止接收 MOV PCON,#80H ;置SMOD=1 MOV R0,#50H ;置发送数据区首址 TRLP: MOV A,@R0 ;读数据 MOV C,P

文档评论(0)

1亿VIP精品文档

相关文档