初學單片机,请教一下这两个串口收发程序那里出了问题,两机通讯不能收发.
中断发送程序:
ORG 00H
AJMP START
ORG 0023H
AJMP SER
ORG 30H
START:
MOV SP,#5FH ;设置堆栈
MOV TMOD,#20H ;T1工作模式2
MOV PCON,#80H ;SMOD=1,双倍波波特率
MOV TH1,#0FDH ;设波特率为19200
MOV TL1,#0FDH
MOV SCON,#50H ;设定串口方式2,REN=1,允许接收
MOV R0,#0AAH ;设定缓冲数据
SETB TR1 ;开T1定时器
SETB EA ;开总允许中断
SETB ES ;开串行中断
SJMP $ ;等待中断
SER: ;中断发送程序
MOV A,R0
MOV SBUF,A ;发送数据
CLR TI
CPL A
MOV R0,A
CALL DELAY
RETI
DELAY: ;延時子程序
MOV R7,#0FFH
DJNZ R7,$
RET
END
===========================================================
中断接收程序:
ORG 00H
AJMP START
ORG 23H
AJMP SER
ORG 30H
START:
MOV SP,#5FH ;设置堆栈
MOV TMOD,#20H ;T1工作模式2
MOV PCON,#80H ;SMOD=1,双倍波特率
MOV TH1,#0FDH ;设置波特率为19200
MOV TL1,#0FDH
MOV SCON,#50H ;设定串口方式2,REN=1,允许接收
SETB TR1 ;开T1定时器
SETB EA ;开总允许中断
SETB ES ;开串行中断
SJMP $
SER: ;中断接收程序
MOV A,SBUF ;取数据,并输出P1口
MOV P1,A
CLR RI ;清RI标志位
CALL DELAY
RETI
DELAY: ;延時子程序
MOV R7,#0FFH
DJNZ R7,$
RET
END