单片机串行口解析.pptVIP

  • 27
  • 0
  • 约9.12千字
  • 约 48页
  • 2017-01-12 发布于湖北
  • 举报
单片机串行口解析

ORG 0100H MOV TMOD,#20H ;设T1为方式2 MOV TL1,#0E8H ;T1定时常数 MOV TH1,#0E8H SETB TR1 ;启动T1 MOV SCON,;设串行口为方式1 MOV R0,#20H ;设发送数据区首址 MOV R7,#32 ;发送32个ASCII码数据LOOP:MOV A,@R0 ;取ASCII码数据 ACALL SP_OUT ;调用串行口发送子程序 INC R0 ;未发送完,则继续 DJNZ R7,LOOP … 主程序: SP_OUT:MOV SBUF,A ;发送 JNB TI,$ ;发送等待 CLR TI ;清TI标志 RET 串行口发送子程序: 例:B机由串行口接收数据块。 解:采用查询方式,本例与上例相呼应,接收器把接收到的32个数据存放在20H-3FH单元内,波特率同上。 MOV SCON, ;设串口方式1,允许接收 MOV TMOD,#20H ;设置定时器T1为方式2 MOV TL1,#0E8H ;初值,波特率为1200b/s MOV TH1,#0E8H SETB TR1 ;启动T1运行 MOV R0,#20H ;数据存放首地址 MOV R7,#32 ;数据块长度 LOOP: ACALL SP_IN ;调用接收一帧子程序 MOV @R0,A ;存放接收的数据 INC R0 DJNZ R7,LOOP … … 主程序: SP_IN: JNB RI,$ ;RI由硬件置位 CLR RI ;软件清除RI MOV A,SBUF RET 接收一帧子程序: 3.串行口方式2和3 — 11位UART 方式2和方式3以11位为1帧传输,设有1个起始位(0),8个数据位,1个附加第9位和1个停止位(1)。其帧格式为: 附加第9位(D8)由软件置1或清0。发送时在TB8中,接收时送RB8中。 方式2的波特率是固定的,为振荡器频率的1/32或1/64。 方式3的波特率则由T1的溢出率决定,可用程序设定。 方式2和方式3的发送、接收时序如图所示。其操作与方式1类似。 方式2、方式3发送和接收时序 只有当REN=1时,才能对RXD进行检测。 发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址/数据标志位), 然后将要发送的数据写入SBUF,即可启动发送过程。 串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去。发送完毕,使TI=1。 发送过程 接收时,使SCON中的REN=1,允许接收。 当检测到RXD(P3.0)端有1→0的跳变(起始位)时,开始接收9位数据,送入移位寄存器(9位)。 接收前RI=0,当满足SM2=0或接收到的第9位数据为1时,前8位数据送入SBUF,附加的第9位数据送入SCON中的RB8,置RI为1;否则,这次接收无效,也不置位RI。 接收过程 例:编制一个发送程序,将片内RAM中50H—5FH的数据串行发送。串行口设定为工作方式2,TB8作奇偶校验位。发送波特率375 kb/s,晶振为12 MHz, SMOD=1。 解:在数据写入发送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

文档评论(0)

1亿VIP精品文档

相关文档