一、實(shí)驗(yàn)?zāi)康?br />
1、掌握雙機(jī)通信的原理和編程方法。
2、學(xué)習(xí)8251A的使用方法
二、實(shí)驗(yàn)內(nèi)容
1、實(shí)驗(yàn)原理圖:

?
?
2.實(shí)驗(yàn)內(nèi)容?
如圖所示,TXC和RXC分別為8251A的發(fā)送時(shí)鐘和接收時(shí)鐘。它由片外8253A的OUT1提供。本實(shí)驗(yàn)要求以查詢方式進(jìn)行收發(fā)。要完成本實(shí)驗(yàn),需2臺(tái)DVCC系列實(shí)驗(yàn)系統(tǒng)。其中一臺(tái)為串行發(fā)送,一臺(tái)為串行接收,在1號(hào)機(jī)上裝串行發(fā)送程序,在2號(hào)機(jī)上裝串行接收程序,則在1號(hào)機(jī)上鍵入的字符顯示在2號(hào)機(jī)的顯示器上。
?
由于本系統(tǒng)監(jiān)控中未對(duì)8253A、8251A進(jìn)行初始化,因此本實(shí)驗(yàn)開(kāi)始必須對(duì)8253、8251進(jìn)行初始化,然后才可以直接進(jìn)入對(duì)串行口狀態(tài)的查詢。
三、程序
系統(tǒng)晶振是 6.0 MHz
?
?????????? ORG? 07F0H
START:
?????????? MOV??? SP,#60H
?????????? mov?????????? A,#02H
?????????? MOV???????? R0,#79H
?????????? MOV??? @R0,A
?????????? INC????????? R0
?????????? MOV??? A,#10H
?????????? MOV?? @R0,A
?????????? INC????????? R0
?????????? MOV?? A,#01H
?????????? MOV?? @R0,A
?????????? INC????????? R0
?????????? MOV??? A,#03H
?????????? MOV?? @R0,A
?????????? INC????????? R0
?????????? MOV?? A,#00H
?????????? MOV??? @R0,A
?????????? INC????????? R0
?????????? MOV???????? A,#08H
?????????? MOV?? @R0,A
?????????? MOV??? A,#7EH
?????????? MOV???????? DPTR,#1FFFH
?????????? MOVX @DPTR,A
??????? MOV??? 87H,#80H
?????????? MOV??? SCON,#50H??????????? ;串口 方式 1
?????????? MOV???????? TMOD,#20H??????????? ;T1 方式 1
?????????? MOV??? TL1,#0F3H??????? ;波特率 9600 的常數(shù)
?????????? MOV??? TH1,#0F3H
?????????? SETB??? TR1?????????????????????? ;開(kāi)中斷
?????????? CLR????????? ET1
?????????? CLR????????? ES
WAIT:
??????????? JBC??? RI,DIS_REC?????????? ;是否接收到數(shù)據(jù)
??????????? LCALL? DISP???????????? ;
??????????? SJMP? WAIT?????????????? ;
DIS_REC:
?????????? MOV??? A,SBUF????????????????? ;讀串口接收到的數(shù)據(jù)
?????????? LCALL? DATAKEY??????????? ;顯示輸入的數(shù)字(0-F)
?????????? DB 79H,7EH
?????????? AJMP?? WAIT
?
DATAKEY: MOV?? R4,A
???????????? MOV?? DPTR,#1FFFH
???????????? MOVX? A,@DPTR
???????????? MOV?? R1,A
???????????? MOV?? A,R4
???????????? MOV?? @R1,A
??????????? CLR??? A
?????????????? POP???? 83H
?????????????? POP???? 82H
?????????????? MOVC? A,@A+DPTR
?????????????? INC???? DPTR
?????????????? CJNE? A,01H,DATAKEY2
??????????? DEC?? R1
?????????????? CLR???? A
?????????????? MOVC?????? A,@A+DPTR
DATAKEY1: PUSH? 82H
????????????? PUSH? 83H
????????????? MOV?? DPTR,#1FFFH
????????????? MOVX? @DPTR,A
????????????? POP??? 83H
????????????? POP??? 82H
????????????? INC????????? DPTR
????????????? PUSH?? 82H
????????????? PUSH?? 83H
????????????? RET
DATAKEY2: DEC??? R1
????????????? MOV?? A,R1
????????????? SJMP?? DATAKEY1
?
DISP:??????? SETB? 0D4H
???????????? MOV? R1,#7EH
???????????? MOV? R2,#20H
???????????? MOV? R3,#00H
DISP1:
????????????? MOV?? DPTR,#DATACO
????????????? MOV?? A,@R1
????????????? MOVC? A,@A+DPTR
????????????? MOV?? DPTR,#0FF22H
????????????? MOVX? @DPTR,A
????????????? MOV?? DPTR,#0FF21H
????????????? MOV?? A,R2
????????????? MOVX? @DPTR,A
????????????? LCALL? DELAY
????????????? DEC??? R1
????????????? CLR??? C
????????????? MOV??????? A,R2
????????????? RRC??? A
????????????? MOV?? R2,A
????????????? JNZ??? DISP1
????????????? CLR??? 0D4H
????????????? RET
DELAY:??? MOV?? R7,#03H
DELAY0:?? MOV?? R6,#0FFH
DELAY1:?? DJNZ?? R6,DELAY1
????????? DJNZ?? R7,DELAY0
????????? RET
?DATAC? DB? 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
????????????? DB? 88H,83H,0C6H,0A1H,86H,8EH,0BFH,0CH,89H,0DEH
????????????? END
四、 實(shí)驗(yàn)步驟?
1、準(zhǔn)備2臺(tái)DVCC系列實(shí)驗(yàn)儀,確定1號(hào)為發(fā)送,2號(hào)為接收。?
2、將1號(hào)RXD插孔和2號(hào)的TXD插孔相連。?
3、將1號(hào)TXD插孔和2號(hào)的RXD插孔相連。?
4、將1號(hào)GND插孔和2號(hào)的GND插孔相連(共地)。?
5、將8253CS插孔和Y4插孔相連,8251CS和Y5插孔相連。?
6、將SIO區(qū)D0—D7和BUS2區(qū) XD0—XD7相連。?
7、先運(yùn)行2號(hào)機(jī),在2號(hào)機(jī)提示符“P.....”狀態(tài)下,輸入0D00后,再按EXEC鍵進(jìn)入等待接收狀態(tài),顯示器顯示“8251—2”。
8、再運(yùn)行1號(hào)機(jī),在1號(hào)機(jī)處于提示符“P.....”狀態(tài)下,輸入0E00H后,按EXEC鍵,進(jìn)入串行發(fā)送狀態(tài)。顯示器顯示“8251—1”。
9、在1號(hào)機(jī)的鍵盤(pán)上輸入數(shù)字鍵,應(yīng)在2號(hào)機(jī)顯示器上顯示對(duì)應(yīng)數(shù)字值。?
10、輸入數(shù)字鍵后再按MON鍵,1號(hào)機(jī)顯示“8251 good”。如果不輸入數(shù)字鍵直接按MON鍵,則顯示“Err”,如果雙機(jī)通信不能正常進(jìn)行,也顯示“Err”。
電子發(fā)燒友App













評(píng)論