双机(51单片机)串行通信最基本的方法

串口通信 专栏收录该内容
25 篇文章 2 订阅


有网友求助双机串行通信的方法,做而论道以前曾经发表过这方面的博文,但是当时没有配发电路图,不太好理解和仿制。
做而论道过去一直使用硬件的仿真器,在最近,把 PROTEUS 软件逐渐的熟悉起来了,用这个“纸上谈兵”的东西,也有一定的好处,就是便于和没有硬件条件的网友进行交流。
下面是一个最基本、最简单的串口通信电路,图中的两个单片机,使用同一个程序,双机的硬件配置也完全相同。双机(51单片机)串行通信最基本的方法 - 非著名博主 - 电子信息角落
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/719a2589b2501aaca5c272ed.html
在程序控制下,本方拨码开关的信息,可以在对方的LED上显示。
编制软件时,使用了汇编语言,针对按键和串行通信,都采用了中断方式,这样就可以取得最快的反应速度。
在实际的硬件实验中,双方都显得十分灵敏。

两个单片机,使用同一个程序,源代码如下:
;----------------------------------------
    ORG 0000H
    SJMP START
    ORG 0003H
    LJMP INT0_INT
    ORG 0023H
    LJMP UART_INT
;----------------------------------------
START:
    MOV SP, #60H
    MOV SCON,#50H   ;方式1,8-n-1
    MOV TMOD,#20H
    MOV TH1, #0FDH ;波特率设置
    MOV TL1, #0FDH ; 9600@11.0592MHz
    SETB TR1
    SETB IT0         ;P3.2下降沿触发中断
    SETB EX0
    SETB ES          ;开放中断
    SETB EA

    SJMP $
;----------------------------------------
INT0_INT:
    MOV P2, #0FFH
    MOV A, P2      ;读出的拨码开关信息
;    MOV P0, A       ;调试的时候,可在本方显示,以证明中断正常
;    JB   TI, $
    MOV SBUF,A      ;向串口发送
    RETI
;----------------------------------------
UART_INT:
    JB   TI, _FA_
    MOV A, SBUF    ;读出串口收到的信息
    MOV P0, A       ;送到P0口进行显示
    CLR RI
    RETI
;--------------------
_FA_:
    CLR TI
    RETI
;----------------------------------------
   END
;----------------------------------------

做成了本实验,只是说明电路、软件基本上都可以正常工作。如果真正的用到实际工作中,传输信息,还需要编制通信协议。

比如说想要传输四个数据字节,那么在前面,应该先发送一些字节,来呼叫对方,待对方正确回答了,再向对方传送有效的数据,最后再向对方传送一些校验信息,等到收到对方的确认信息之后,一次通信,才算结束。

  • 3
    点赞
  • 1
    评论
  • 34
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

baidu_知道

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值