80C51单片机之间的串行通信主要可分为双机通信和多机通信,本节举例说明双机通信与多机通信的使用方法。

1.双机通信硬件电路如果两个80C51单片机系统距离较近,那么就可以将它们的串行口直接相连,实现双机通信,如图1所示。

图1  双机异步通信接口电路

为了增加通信距离,减少通道和电源干扰,可以在通信线路上采用光电隔离的方法,利用RS-422A标准进行双机通信,实用的接口电路如图2所示。

图2  RS-422A双机异步通信接口电路

2.双机通信软件编程对于双机通信采用两种方法:查询方式和中断方式。

(1)查询方式

例 在双机通信中,设置串行口工作于方式3,波特率为9600,定时器T1工作于方式2,允许接收,单片机主频fosc=6MHZ,编写初始化编程序。

分析:

①设置SCON寄存器

串行口工作于方式3,SM0SM1=11。双机通信不需要发送地址,SM2=0。允许接收REN=1。所以SCON=11010000B=0D0H。

②计算定时器T1计数初值,波特率不加倍,smod=0。

可写出:

COUNT=254=0FEH

③初始化程序

例 当1号机开始发送时,先送出一个“A1”信号,2号机收到后回答一个“B2”信号,表示同意接收。当1号机收到“B2”信号后,开始发送数据,每发送一次求一个“校验和,以提高通信的可靠性。设数据块为10个字节,数据缓冲区的起始地址是40H,数据块发完后马上发送“校验和”。2号机接收数据并将其转存到40H开始的缓冲区,每接收到一个数据也求一次“校验和”,数据块收完后,再接收1号机发来的“校验和”,并与2号机求出的结果相比较。如二者相等,说明接收正确,2号机回答“00H”;若两者不等,说明接收错误,2号机回答“0FFH”,请求重发。1号机收到“00H”的回答后,结束发送。若收到的答复非零,则将数据重发一次。假定双方约定的传输波特率为1200bps,振荡频率为11.0592Hz,T1工作在方式2。

解:

查表可知,TH1=TL1=0E8H,PCON的SMOD位为0。程序流程图如图所示,程序清单如下。

(2)中断方式

为提高CPU的利用效率,大多数的通信程序特别是接收程序使用中断方法。

例 单工形式的双机通信。 假定甲乙机以方式1进行串行数据通信,其波特率为1200, 甲机发送,发送数据在外部RAM 4000H-401FH单元中。乙机接收,并把接收到的数据块首末地址和数据依次放入外部RAM 5000H开始的区域中。

分析:

①设甲、乙机的时钟频率均为6MHz,从而机器周期为2μs。

②smod波特率不倍增,从而PCON=00H,至于smod什么时候为0,什么时候为1,可以根据需要来决定,具体地说,波特率较大,则smod=1,否则smod=0

③由公式可知波特率为:

计数初值=COUNT=243=F3H

④串行数据的发送(或接收)的内容包括数据块首末地址和数据两部分内容。对数据块首末地址以查询方式传送,而数据则以中断方式传送。因此在程序中要先禁止串行中断,后允许串行中断。

甲机发送主程序:

甲机中断服务程序:

ACINT:  CLR     TI                   ;清发送中断

MOVX    A,@DPTR             ;读数据

MOV     SBUF,A              ;发送字符

INC     DPTR

DJNZ    R7, LOOP             ;未发送完转LOOP

CLR     ES                   ;禁止串行中断

CLR     TR1                  ;定时器1停止计数

LOOP:   RETI                         ;中断返回

乙机接收主程序:

注意:上述程序4个接收地址的程序段可用一个循环程序来代替,此处为了与发送程序对应故分为4段书写。

乙机中断服务程序:

在实验过程中,应先执行乙机的接收程序,然后执行甲机的发送程序。

单片机双机通信c语言实验心得,80C51单片机双机通信与多机通信的使用方法相关推荐

  1. 单片机双机通信c语言实验心得,双机通讯实验报告

    <双机通讯实验报告>由会员分享,可在线阅读,更多相关<双机通讯实验报告(11页珍藏版)>请在人人文库网上搜索. 1.精选文档单片机实验报告(自动化15级) 实验名称:串行通讯实 ...

  2. 单片机双机通信c语言实验心得,单片机双机通信实验报告.doc

    单片机双机通信实验报告 计算机与信息工程学院综合性实验报告 专业:物联网 年级/班级: 2015-2016学年第一学期 课程名称单片机原理及应用指导教师学号姓名实验地点实验时间2015.11.14项目 ...

  3. c语言实验心得100字,实验心得100字_100个面试常见经典问题_100个面试问题和答案...

    职场范文网专题频道"实验心得100字"的相关文章,提供与"实验心得100字"的所有资讯,希望我们所做的能让您感到满意! 在维护工作中,我们发现有些基站的蓄电池使 ...

  4. 单片机交通灯c语言实验报告,单片机交通灯实验报告

    实验五:交通灯一.实验目的熟悉51单片机的汇编指令. 进一步了解8255芯片的结构及编程方法. 学习模拟交通控制的实现方法.二.实验设备 STC89C52单片机实验板.串口下载线.USB连接线.电脑3 ...

  5. 单片机应用技术c语言版考试答案,单片机应用技术(C语言)试题

    <单片机应用技术(C语言)试题>由会员分享,可在线阅读,更多相关<单片机应用技术(C语言)试题(7页珍藏版)>请在人人文库网上搜索. 1.一.选择题1.单片机8031的/EA引 ...

  6. 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序

    基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...

  7. 单片机c语言开发实验心得,在单片机C语言编程中的心得体会

    在单片机C语言编程中的心得体会在单片机C语言编程中的心得体会 在单片机C语言编程中的心得体会 作者:彭树林 在单片机C语言编程中使用恰当的`优化手段,可以写出简洁高效的代码.以下是笔者在C51编程过程 ...

  8. 求最大公约数c语言实验心得,C语言编程实训报告(合集)

    cout< void main()//主函数主函数主函数主函数 { int i,g; studentstu[3];while (i){i=menu(stu,3); switch(i) {case ...

  9. 跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载

    一.实验目的与要求 1.熟悉 Keil C51 集成环境软件的使用方法. 2.熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件. 3.熟悉畅学开发平台,掌握单片机最小系统及 IO 口的简单控 ...

最新文章

  1. 10月第2周.ORG总量TOP10:中国增1701个 涨幅最大
  2. nginx做grpc负载均衡时长连接或者短连接
  3. UI5 setModel 的核心逻辑
  4. 【转】C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
  5. Apollo进阶课程 ⑦ | 高精地图的采集与生产
  6. 注意力机制学习(一)——通道注意力与pytorch案例
  7. mysql 阿里云 版本_阿里云虚拟主机mysql已经支持版本切换,支持MySQL 5.7.25
  8. C++ stack
  9. 三菱fx3u中文手册_3个月高效掌握三菱PLC!四个阶段经验大总结~
  10. 【SPL标准库专题(3)】 Classes
  11. [C# 基础知识系列]专题十一:匿名方法解析
  12. moodle安装过程中可能出现的问题
  13. LTE-V2X车联网技术、标准、应用
  14. ERROR: Unable to access 'C:\Users\鏉庨摥\.emulator_console_auth_token': emulator consol...解决方法
  15. 下注玩客币到重仓公链,迅雷的区块链转型之路
  16. matlab设置图片的比例,Matlab 画图字体,字号的设定,图片大小和比例
  17. (附源码)springboot基于java的超市购物管理系统 毕业设计 271611
  18. Ubuntu18.04调整字体大小
  19. 标准差-经验法则-中心极限定理
  20. 一位原码乘法器 一位补码乘法器原理

热门文章

  1. 基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)
  2. 关于安卓接入B站弹幕控件
  3. 智慧政务云平台建设方案案例与基础架构
  4. 分享50个ASP交友会员源码,总有一款适合您
  5. 武汉疫情之后对行业影响及思考
  6. Matlab绘图基本——局部放大图
  7. 新媒体运营教程:运营活跃社群的玩法分析
  8. unix系统下安装JDK
  9. Microsoft Store微软应用商店无法加载页面
  10. SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)