原创 单片机双机串口通信程序设计

2009-8-16 00:36 1496 5 5 分类: MCU/ 嵌入式

发布: 2009-4-03 23:56 |  作者: cepark |   查看: 92次


电子园51单片机学习网CSdC}3fVP0jT$kJ

利用方式1实现单片机双机通信,主频为6M,波特率为2400bps,电路见图5-10。当两个单片机距离较近时,甲、乙两机的发送端与接收端分别直接相联,两机共地。执行程序,甲机将亮灯信号发送给乙机,若通信正常,乙机接收到信号后点亮20个发光二极管。乙机采用查询与中断两种工作方式。当然20个LED乙机可单独控制,也可接受甲机的控制,并执行甲机指令,还需要进一步完善程序.电子园51单片机学习网K2T0R[~o9S@


+u6l%e W$vsd{-x46905
uA\.qy+mSU/v46905甲机发送程序:
/G s ey F%B&mk:Y!N46905org 0000h
Vi|#d]_,B.QHt46905sta: mov tmod,#20h ;设置波特率
.su!_&SG.Cl4GZ46905mov tl1,#0FAh
+t"xr2NMYK9[h46905mov th1,#0FAh 电子园51单片机学习网!j2xl? sT
setb tr1 电子园51单片机学习网et/ais
mov scon,#40h ;置工作方式1
5j\8W&u)e1C`2Z{46905clr ti
(X)l)Y\Z\O^5u8uA46905mov a,#00h
Sr"nyMD;A{~46905mov sbuf,a ;发送亮灯信号
&P*ax y5xM~ gis46905wait: jbc ti,cont ;发送成功清标志
,nG*@n ~+?"VqT!G46905ajmp wait ;等待发送完毕
(A~{VMz{o46905cont: sjmp sta ;重复发送
iMtu+y^"l46905end
Gh6X(f,zU.T_46905电子园51单片机学习网VOM e4u7UG
乙机查询工作方式接收:
L}/ZqYb ?46905
&l(N(H3c)_ P?46905org 0000h 电子园51单片机学习网~-R kJ4rEa7t1s4Ba
mov tmod,#20h ;设置通信波特率
^&W0qW L-nT46905mov tl1,#0FAh
6~2W6B}*t46905mov th1,#0FAh
'C}7S4dtN D46905setb tr1
*O'j/J(T*w'] mf*m46905mov scon,#40h
Yh2V9k\qQ46905clr ri 电子园51单片机学习网0MO O8H\:pk7o}N4o
setb ren ;允许接收 电子园51单片机学习网4v#O]NPWJf[
wait: jbc ri,read ;接收成功清标志
;NiE8f4J(P46905ajmp wait ;接收未完等待
.K!T,vf1JU.K"nK46905read: mov a ,sbuf 电子园51单片机学习网7j&f"v@0f"k T r`0|
mov p1,a ;接收亮灯信号送P1口 电子园51单片机学习网}d!~+RZ*KBv
sjmp $ 电子园51单片机学习网6VUMV'g,Zp
end 电子园51单片机学习网 f Ez"TGb
电子园51单片机学习网A x S3I iy4R*}K
乙机中断工作方式接收 电子园51单片机学习网`g{3{$l*w/q4P
org 0000h 电子园51单片机学习网*Z$cl)CI
ajmp main 电子园51单片机学习网'dK%@2Z J9s,{qN
org 0023h 电子园51单片机学习网#R l,x+AL J1p'r%q[
ajmp zd ;转串口中断程序 电子园51单片机学习网X'N sWL;E] \4w
START: MOV TMOD,#20h 电子园51单片机学习网~`/[9HZX
mov tl1,#0FAh 电子园51单片机学习网9@6i,Q;ZBo
mov th1,#0FAh 电子园51单片机学习网 LG%J5u/R
setb tr1 电子园51单片机学习网J5k|a#f"k\#Lx
mov scon,#50h
r1H-G'tZW rLJ;F \46905clr ri 电子园51单片机学习网0Qrn)m W
mov ie,#90h ;开中断 电子园51单片机学习网]r'l/^#l,p4k C
电子园51单片机学习网LH xy[Pv9H9jK
MAIN:sjmp $ 主程序 电子园51单片机学习网2J)}&kXi5b%kP0~'n6s@n
zd: clr ri ;清接收标志 电子园51单片机学习网'K8|l.Vx
;==============中断程序还要再完善============== 电子园51单片机学习网3p*zPR El8x
mov a ,sbuf ;读接收信号
!V{6mj \46905mov p1,a 电子园51单片机学习网%x%m4JMZ }"s
MOV R1,A ;将收到的信号送缓存 电子园51单片机学习网vwl*n"sf"@kp8A n
reti ;中断返回
IGuk5m1m)k46905end 电子园51单片机学习网p d9L0TX

电子园51单片机学习网/D8J g}X/~ i2vY

电子园51单片机学习网X/Y8uJ,B7]l5g:i g2Rj
点此在新窗口浏览图片电子园51单片机学习网*kpo_;x2D
<单片机双机串口通讯原理图>
`h5[ye Qy46905
.o j.s;g;Z46905采用方式2 通信,数据帧格式是11位的,TB8为奇偶校验位,接收过程要求判断RB8,若出错置F0标志为1,正确则置F0标志为0,然后返回。发送波特率375kbps,晶振为12MHz,所以SMOD=l。由于传送数据的波特率与定时器无关,所以程序中无需对定时器编程.

l[:k2C h46905 电子园51单片机学习网MVnr+jkZ

send: 电子园51单片机学习网%a0^ N|K(F1t}-m?
MOV SCON,#80H ;设置串行口为方式2 电子园51单片机学习网"S,pm"KL z
MOV PCON,#80H ;SMOD=l 电子园51单片机学习网zHr6u3?
MOV R0,#50H ;设数据块指针
O[%{S#@)O.KL46905MOV R7,#20 ;设数据块长度
m%Tp(W d"Im46905STA: MOV A,@R0 ;取数据给A 电子园51单片机学习网rg2B'X:]5p0A4t5{ T
MOV C,P
W~-Fk\ THe46905MOV TB8,C ;奇偶位P送给TB8,
&n%? y*G$bP@ oXg:J46905MOV SBUF,A ;启动发送
lbIil'U.L46905;====================================================
M!],N v^ i:Y&|6|46905WAIT: JBC TI,CONT ;若发完一帧数据,清标志后发下一帧数据 电子园51单片机学习网5eQ5pK9s7S
AJMP WAIT ;未完等待 电子园51单片机学习网[so;N,di1q
;=======================================================
p"K9p)h*\zn46905CONT:INC R0 ;修改数据指针 电子园51单片机学习网b/ms'a4G_cq"qm
DJNZ R7,STA ;循环发送至结束 电子园51单片机学习网o[y+Z~
RET 电子园51单片机学习网(d)g~/]1w ^,]8pU"ct0x
;======================================================== 电子园51单片机学习网G1h{H4^&Pw'L
;乙机接收程序如下: 电子园51单片机学习网!xjv2u4b9? a
; 在进行双机通信时,两机应采用相同的工作方式和波特率。
0~2~[ db'HK46905;============================================================= 电子园51单片机学习网usqHuy
MOV SCON,#90H ;设置串行口为方式2,REN为1,允许接收 电子园51单片机学习网;L _"Y5i{ rV i
MOV PCON,#80H ;SMOD=1 电子园51单片机学习网A!Ne(i1?3l
MOV R0,#50H ;设置数据块首址 电子园51单片机学习网8d`v)NX6e
MOV R7,#20 ;置数据块长度
2OJe fM\Ic a46905;========================================================= 电子园51单片机学习网u2@WT9oyN J2o
WAIT:JBC RI,READ ;接收完一帧数据则RI清零并读入数据 电子园51单片机学习网4x|g%u1?7?_8{x7s-T
AJMP WAIT ;未完等待 电子园51单片机学习网| {4bot;\%jZ1Q*|
;==========================================
s[ C{3r'|+u1C46905READ:MOV A,SBUF ;读入数据
F9k/?8KA*`46905JNB PSW.0,PZ ;收到数为偶数则转
&u4A3f SgMs-RZ}6?\46905JNB RB8,ERR ;收到数为奇数,发端为偶数则通信出错
nnC2qh1W2mL46905SJMP RIGHT ;相符则正确
.Rg8|4yE%o&R46905PZ:JB RB8,ERR ;收到数为偶数,发端为奇数则出错 电子园51单片机学习网W%r"v\c
;========================================
8jy8mnZ:yn1}46905RlGHT:MOV @R0,A ;通信正确,存放数据
IQoYSt,n'S46905INC R0 ;更改地址指针
aV&W;A4f#nj,lo46905DJNZ R7,WAIT ;数据块接收完否,未完继续
w o:f2[?!kES o46905CLR PSW.5 ;通信正确,置F0为0 电子园51单片机学习网 _j:H2r}d? \
RET ;返回 电子园51单片机学习网 JJ-I/F z[
ERROR:SETB PSW.5 ;通信出错,置F0为l 电子园51单片机学习网H*G3T O:M6]
RET ;返回

]2XZ.k`G^46905
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条