单片机串行口通信程序问题 烦请给位高手一试!!!

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:04:19
已知:单片机的主频为12mhz,串行口工作在方式三,其波特率为2400bps
请设计a机发送b机接收的串行通信程序.a机的发送内容为"ABCDE".

为什么串口工作在,3呢...
AJMP MAIN
ORG 23H
LJMP UART
MAIN:
MOV R1,#30H
LCALL ZDINIT
LCALL URTINIT
MOV A,'A'
MOV SBUF,A
MOV A,'B'
MOV SBUF,A
MOV A,'C'
MOV SBUF,A
MOV A,'D'
MOV SBUF,A
MOV A,'E'
MOV SBUF,A
AJMP $
ZDINIT:
SETB EA
SETB ES
RET
UART:
JB TI,SEND
MOV A,SBUF
MOV @R1,A
INC R1
CLR RI
RETI
SEND:
JNB TI,$ ;等待数据发送完毕
CLR TI ;清发送中断标志
RETI ;中断返回
URTINIT:
MOV SCON,#50H ;设置成串口1方式
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV TH1,#0F3H ;预置初值
MOV TL1,#0F3H ;有误差..不准.12MHz
SETB TR1;启动定时器T1
RET

END
发送方就是大概就是这样
接收的时候就他会把数据放到30H-34H中
注意接收的时候把LCALL URTINIT---AJMP $
之间的程序去掉...
祝你好运..