要求:
主机:每隔1秒读一次P1口并将读数发给从机,同时接收从机的信号,若与所发数相同,则P3.2的灯亮,若不同或不回答则P3.3的灯亮。
从机:将接收的数据从P1口推出,并回发此数据
波特率自定,编写主机程序和从机程序。
程序代码:
主机部分:
org 0000h
sjmp MAIN
org 000bh
sjmp READY
MAIN:
MOV TMOD , #21H
MOV TL0 , #0B0H
MOV TH0 , #3CH
MOV TL1 , #0FAH
MOV TH1 , #0FAH
SETB EA
SETB EX0
SETB ET0
SETB IT0
SETB TR0
SETB TR1
;SETB ES
CLR RI
CLR TI
CLR P3.3
CLR P3.2
MOV R2 ,#00H
MOV PCON ,#00H
MOV SCON ,#50H
WAIT_RECV:
JNB RI,WAIT_RECV
CLR RI
MOV A,SBUF
SUBB A,R3
JNZ SEND_FAIL
SEND_OK:
SETB P3.2
CLR P3.3
AJMP WAIT_RECV
SEND_FAIL:
SETB P3.3
CLR P3.2
AJMP $
READY:
MOV TMOD ,#01H
MOV TL0 ,#0B0H
MOV TH0 ,#3CH
INC R2
CJNE R2 ,#0AH, NOT_READY
MOV R2 ,#00H
MOV A ,P1
MOV R1 ,A ;R3 store the data ,used for judging of received data
MOV SBUF ,A
WAIT_SEND:
JNB TI ,WAIT_SEND
CLR TI
RETI
NOT_READY:
RETI
从机部分:
ORG 0000H
LJMP STAR
ORG 0023H
LJMP SINT
STAR:MOV TMOD,#20H
MOV TL1,#0FAH
MOV TH1,#0FAH
SETB TR1
MOV SCON,#50H
MOV IE,#90H
CLR TI
CLR RI
JMP$
SINT:MOV A,SBUF
MOV P1,A
MOV SBUF,A
WAIT:JNB TI,WAIT
CLR TI
CLR RI
RETI
END