51單片機,串行口通訊

要求:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章