51单片机编程:双机串行通信


利用 2 个实验系统通过 232 通信,实现双机串行通信功能。


用汇编或 C 语言编写一个 51 单片机程序,


用本侧的 K0~K3 能控制对侧的 L0~L3,

用对侧的 K0~K3 能控制本侧的 L0~L3。


通信线断开后,不需重启,接上通信线后,应能自动重新建立通信联系。


题目链接:http://zhidao.baidu.com/question/1638691003454166820.html


;=========================================================


做而论道早就回答了这个问题,也不知道是那个字眼违规了,百度知道又抽风了,不给显示。


申诉已经很多天了,也没有反应。


时间,已经耽误了,就发表在这里吧。


程序虽然是用汇编语言编写的,也非常简单,20几行而已。


;=========================================================


    ORG   0000H

    JMP   START

    ORG   0023H

    JB    TI, S_END

    CLR   RI

    MOV   P0, SBUF    ;读串口, 送P0显示

S_END:    RETI

;----------------------------------------

START:

    MOV   SCON, #50H  ;方式1,8-n-1

    MOV   TMOD, #20H

    MOV   TH1, #0FDH  ;波特率设置

    MOV   TL1, #0FDH  ;[email protected]

    SETB  TR1 

    MOV   IE, #90H    ;开放中断

LOOP:

    MOV   A, P2       ;读拨码开关

    DJNZ  R7, $       ;延时

    DJNZ  R6, $ - 2

    MOV   B, P2       ;再读

    CJNE  A, B, LOOP  ;消抖

    MOV   SBUF, A     ;向串口发送

    MOV   P1, A       ;在本机显示

    JNB   TI, $

    CLR   TI

    SJMP  LOOP

;----------------------------------------

END

;=========================================================


两台单片机系统,都使用上面给出的同一个程序。


做实验时,也可以用软件仿真,电路如下:


51单片机编程:双机串行通信_第1张图片


用一个单片机,也可以自发自收,电路如下:


51单片机编程:双机串行通信_第2张图片


断开通信线路的开关,拨动开关就不能控制对方的 LED 了。


接通通信线路的开关,不需重启,自动就能重新建立通信联系。


你可能感兴趣的:(串口通信)