学习串行,这组接收发送程序有问题么?为什么发送能工作,接收不能?
;接收程序
ORG
0000H
REST:
LJMP
MAIN
ORG
0023H
LJMP
RXRF
ORG
0100H
MOV
TMOD,#20H
;T1工作方式2
MOV
TH1,#0F3H
;晶振12M,波特率设置4800
MOV
TL1,#0F3H
SETB
TR1
;启动T1
MOV
SCON,#50H
;串口方式1,允许接收
MOV
PCON,#80H
;置SMOD为1
SETB
ET0
;允许T0中断
SETB
ES
;允许串行中断
SETB
EA
;CPU开放中断
SETB
PS
;串行中断优先
LOOP:
NOP
LJMP
LOOP
;串行接收中断
RXRF:
CLR
EA
CLR
RI
;清除中断标志
MOV
P1,A
SETB
EA
RXRFOUT: RETI
END
;发送程序
ORG
0000H
REST:
LJMP
MAIN
ORG
0100H
MOV
TMOD,#20H
;T1工作方式2
MOV
TH1,#0F3H
;晶振12M,波特率设置4800
MOV
TL1,#0F3H
SETB
TR1
;启动T1
MOV
SCON,#50H
;串口方式1,允许接收
MOV
PCON,#80H
;置SMOD为1
SETB
ET0
;允许T0中断
SETB
ES
;允许串行中断
SETB
EA
;CPU开放中断
SETB
PS
;串行中断优先
LOOP:
MOV
P1,#00H
LCALL
TXRF
;串口发送程序
LCALL
DLY10
LCALL
DLY10
LCALL
DLY10
LCALL
DLY10
MOV
P1,#0FFH
LCALL
DLY10
LCALL
DLY10
LCALL
DLY10
LCALL
DLY10
LJMP
LOOP
;串口发送程序
TXRF:
MOV
A,P1
MOV
SBUF,A
WAIT:
JBC
TI,SEND
SJMP
WAIT
SEND:
RET
;延时100子程序
DLY10:
MOV
R6,#0FFH
DLY101:
MOV
R7,#0FFH
DJNZ
R7,$
DJNZ
R6,DLY101
RET
END |