基于单片机的双机通信设计电路图如下所示:
如图所示,txc和rxc分别为8251a的发送时钟和接收时钟。它由片外8253a的out1提供。本实验要求以查询方式进行收发。要完成本实验,需2台dvcc系列实验系统。其中一台为串行发送,一台为串行接收,在1号机上装串行发送程序,在2号机上装串行接收程序,则在1号机上键入的字符显示在2号机的显示器上。
由于本系统监控中未对8253a、8251a进行初始化,因此本实验开始必须对8253、8251进行初始化,然后才可以直接进入对串行口状态的查询。
程序
系统晶振是 6.0 mhz
g 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 的常数
mov th1,#0f3h
setb tr1 ;开中断
clr et1
clr es
wait:
jbc ri,dis_rec ;是否接收到数据
lcall disp ;
sjmp wait ;
dis_rec:
mov a,sbuf ;读串口接收到的数据
lcall datakey ;显示输入的数字(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
实验步骤
1、准备2台dvcc系列实验仪,确定1号为发送,2号为接收。
2、将1号rxd插孔和2号的txd插孔相连。
3、将1号txd插孔和2号的rxd插孔相连。
4、将1号gnd插孔和2号的gnd插孔相连(共地)。
5、将8253cs插孔和y4插孔相连,8251cs和y5插孔相连。
6、将sio区d0—d7和bus2区 xd0—xd7相连。
7、先运行2号机,在2号机提示符“p.....”状态下,输入0d00后,再按exec键进入等待接收状态,显示器显示“8251—2”。
8、再运行1号机,在1号机处于提示符“p.....”状态下,输入0e00h后,按exec键,进入串行发送状态。显示器显示“8251—1”。
9、在1号机的键盘上输入数字键,应在2号机显示器上显示对应数字值。
10、输入数字键后再按mon键,1号机显示“8251 good”。如果不输入数字键直接按mon键,则显示“err”,如果双机通信不能正常进行,也显示“err”。 来源:兔巴哥