1
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV SP,#60H
MOV TMOD,#20H ;设置T1 为方式2
MOV TH1,#0FDH ;设置波特率为9600
MOV TL1,#0FDH
MOV SCON,#50H ;设置串口为方式1
MOV PCON,#00H
SETB TR1 ;启动定时器1
LOOP: JNB RI,$
CLR RI
MOV A,SBUF
CJNE A,#'X',FSEND
MOV A,#'T'
AJMP SEND
FSEND: MOV A,#'F'
SEND: MOV SBUF,A ;回发数据
JNB TI,$
CLR TI
SJMP LOOP
END
2、采用串行口中断方式,实现与实验2相同的功能。
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP ZRS232
ORG 0100H
MAIN: CLR EA
MOV SP,#60H ;给堆栈指针赋初值
MOV TMOD,#20H ;设置T1 为方式2
MOV TH1,#0FDH ;设置波特率为9600
MOV TL1,#0FDH
MOV SCON,#50H ;设置串口位方式1,允许接收
MOV PCON,#00H
SETB ES
SETB TR1 ;定时器1 开始计数
SETB EA
SJMP $
ZRS232: JB RI,ZR
ZT: CLR TI
AJMP ZEND
ZR: CLR RI
MOV A,SBUF
CJNE A,#'X',FSEND
MOV A,#'T'
AJMP SEND
FSEND: MOV A,#'F'
SEND: MOV SBUF,A ;回发数据
ZEND: RETI
END
|