兩臺(tái)8031單片機(jī)通過(guò)串行口進(jìn)行數(shù)據(jù)交換程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
有兩臺(tái)8031單片機(jī)相距很近,直接將它們的串行口相連,1#機(jī)的TXD接2#機(jī)的RXD,2#機(jī)的TXD接1#機(jī)的RXD,二機(jī)的GND相連。二機(jī)的晶振頻率均為11.0592MHZ,通信的波特率為4800bps?,F(xiàn)將第一臺(tái)8031單片機(jī)片內(nèi)RAM40H~5FH單元內(nèi)的數(shù)據(jù),串行發(fā)送到第二臺(tái)8031單片機(jī)片內(nèi)RAM60H~7FH單元中。
發(fā)送與接收的參考程序如下:1#單片機(jī)發(fā)送程序:
ORG 1000H
TX:MOVTMOD , #02H
MOVTH1 , #0FAH
MOVTL1 , #0FAH
MOVSCON , #80H;
設(shè)定工作方式2
MOVPCON, #00H;
波特率為fosc/64
SETBTR0
MOVR0 , #40H;設(shè)發(fā)送數(shù)據(jù)的地址指針
MOVR2 , #20H;設(shè)發(fā)送數(shù)據(jù)長(zhǎng)度
LOOP:MOVA , @R0;取發(fā)送數(shù)據(jù)送A
MOVC , PSW.0
MOVTB8 , C;奇偶位送TB8
MOVSBUF , A;啟動(dòng)發(fā)送
WAIT:JBCTI , LL1;判發(fā)送中斷標(biāo)志
SJMPWAIT
LL1:INCR0
DJNZR2 ,LOOP
RET
2#單片機(jī)接收程序:
ORG 1000H
RX:MOVTMOD , #02H
MOVTH1 , #0FAH
MOVTL1 , #0FAH
MOVSCON , #90H;設(shè)定工作方式2,并允許接收
MOVPCON , #00H
SETBTR0
MOVR0 , #60H
MOVR2 , #20H
LOOP:JBCRI , MM1;等待接收數(shù)據(jù)
SJMPLOOP
MM1:MOVA , SBUF;讀入一幀數(shù)據(jù)
JBPSW.0 , PP1;判接收端奇偶
JBRB8 , ERROR;判發(fā)送端奇偶
SJMPRIGHT
PP1:JNBRB8 , ERROR;接收出錯(cuò)
RIGHT:MOV@R0 , A;接收正確
INCR0
DJNZR2 ,LOOP
ERROR:SETBPSW.5;置出錯(cuò)標(biāo)志
RET