要求:
主機:每隔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