多机通信的主机部分程序

发布者:Leishan最新更新时间:2018-01-08 来源: eefocus关键字:多机通信  主机 手机看文章 扫描二维码
随时随地手机看文章

多机通信的主机部分程序

/* multi_m.c */ 
/* 多机通信的主机部分 */ 
#ifndef __MULTI_M_C__ 
#define __MULTI_M_C__ 

#include  
#include 

 

#define __MAX_LEN_ 64    // 数据最大长度 
#define _MHz_ 11    // 设置 单片机 使用的晶振频率(11.0592MHz) 

/* 以下为程序协议中使用的握手信号 */ 
#define __SUCC_ 0x0f    // 数据传送成功 
#define __ERR_ 0xf0    // 数据传送错误 

void init_serial();    // 串口初始化 
void send_data(unsigned char *buf);    // 发送数据 
void delay10ms(unsigned int count);    // 延时子程序(10ms) 

void main() 

    char buf[__MAX_LEN_]; 
    unsigned char i = 0; 
    unsigned char tmp; 
    unsigned char addr;    // 该字节用于保存要通信的从机地址 

    /* 为缓冲区赋初值 */ 
    P0 = 0xff; 
    while(P1 != 0)    // 每隔100ms从P0口读取,若读取到0则表明数据采集结束 
    { 
        *(buf+i) = P0; 
        delay10ms(10);    // 延时100ms 
        P0 = 0xff; 
        i++; 
    } 
    *(buf+i) = 0;    // 缓冲区最后一个字节为0表示数据结束 
    /* 读要访问的分机地址 */ 
    P0 = 0xff; 
    addr = P0; 
    /* 串口初始化 */ 
    init_serial();    // 初始化串口 
    EA = 0;    // 关闭所有中断 

    /* 发送地址帧并接收应答信息,如果接收的信号与发送的地址信息不同,则重新发送地址帧 */ 
    tmp = addr-1; 
    while(tmp != addr) 
    { 
        /* 发送从机地址 */ 
        TI = 0; 
        TB8 = 1;    // 发送地址帧 
        SBUF = addr; 
        while(!TI); 
        TI = 0; 
        /* 接收从机应答 */ 
        RI = 0; 
        while(!RI); 
        tmp = SBUF; 
        RI = 0; 
    } 
    /* 发送数据并接收校验信息,如果接收的信号为0FH,表示从机接收成功,否则将重新发送该组数据 */ 
    tmp = __ERR_; 
    while(tmp != __SUCC_) 
    { 
        send_data(buf);    // 发送数据 
        RI = 0; 
        while(!RI); 
        tmp = SBUF; 
        RI = 0; 
    } 
    while(1);    // 程序结束,进入死循环 


/* 初始化串口 */ 
void init_serial() 

    TMOD = 0x20;    //定时器T1使用工作方式2 
    TH1 = 250;    // 设置初值 
    TL1 = 250; 
    TR1 = 1;    // 开始计时 
    PCON = 0x80;    // SMOD = 1 
    SCON = 0xd0;    //工作方式3,9位数据位,波特率9600bps,允许接收 


/* 发送数据 */ 
void send_data(unsigned char *buf) 

    unsigned char len;    // 保存数据长度 
    unsigned char ecc;    // 保存校验字节 
     
    len = strlen(buf);    // 计算要发送数据的长度 
    ecc = len;    // 开始进行校验字节计算 
    /* 发送数据长度 */ 
    TI = 0;     
    TB8 = 0;    // 发送数据帧 
    SBUF = len;    // 发送长度 
    while(!TI); 
    TI = 0; 
    /* 发送数据 */ 
    for(i=0; i    { 
        ecc = ecc^(*buf);    // 计算校验字节 
        TB8 = 0;    // 发送数据帧 
        SBUF = *buf;    // 发送数据 
        buf++; 
        while(!TI); 
        TI = 0; 
    } 
    /* 发送校验字节 */ 
    TB8 = 0;    // 发送数据帧 
    SBUF = ecc;    // 发送校验字节 
    while(!TI); 
    TI = 0; 


/* 延时10ms,精度较低,参数count为延时时间 */ 
void delay10ms(unsigned int count) 

    unsigned int i, k; 
    unsigned char j; 
    unsigned int tmp; 
    tmp = (int)((100*_MHZ_)/12); 

    for(i=0; i        for(j=0; j<100; j++) 
            for(k=0; k

#endif


关键字:多机通信  主机 引用地址:多机通信的主机部分程序

上一篇:多机通信的从机程序
下一篇:单片机双机点对点通信的主机程序

推荐阅读最新更新时间:2024-03-16 15:52

用MC145026/27实现并口线通信
    摘要: 介绍了一种用三态编解码芯片MC145026/27实现的基于并口的多机线通信系统的组成原理和实现方法,给出了多台微型机之间的无线通信问题的解决方案等,阐述了系统的总体组成及通信方法。     关键词: 并行接口 无线通信 编码器 解码器 MC145026/27 1 引言 在遥测、遥控等领域中,往往使用微机与单片机组成多机通信系统来完成测控任务。其中,常用的方法是使用微机的RS-232C串行接口进行串行数据通信。由于受环境的影响以及RS-232C串行接口电气性能的限制,加上连接线长、接线麻烦等缺点,其通信的空间范围总是受到限制,并使人们感到不便。因此,人们想到了无线传输。常用的无线传输方式有无
[工业控制]
使用stm32作为usb主机实现usb鼠标键盘的识别
后附相关文档 关于Usage ID可以参考 http://www.freebsddiary.org/APC/usb_hid_usages 附2:相关资料文档 http://pan.baidu.com/s/1i3J1ftN
[单片机]
使用stm32作为usb<font color='red'>主机</font>实现usb鼠标键盘的识别
苹果准备推出一款类似Switch便携混合主机
今天,韩国社区网站 Clien 上的一篇帖子谈到苹果正在准备推出一款类似 Switch 的混合主机。据报道,高通最近也在研发类似的产品。许多人会有疑问,苹果的 iPhone 和 iPad 系列已经配备功能强大的芯片,那么还需要这样的产品吗? 总体而言,苹果的移动设备不是面向游戏玩家的,所以即使硬件功能强大,iPhone 和 iPad 的内部冷却系统也不是设计得足够强大,因为苹果优先考虑的是外形。 有传言称,这款便携式的混合主机可能会有一些空间来配备功能强大的冷却系统,其他一些方面可能会让它有别于苹果的其他产品。 首先,这篇帖子声称,该公司正在开发一款新的 SoC,它不会被归类为 A 系列或 M 系列芯片。 苹果可能
[手机便携]
主机开发模式“由硬变软”,全球汽车芯片巨头正布局软件定义汽车
随着汽车工业正在向电气化、数字化、云端连接发展,推动主机厂开发模式从硬件主导型,逐步转向软件主导型。 “我们软件工程师的数量已经超过了硬件工程师。”在日前媒体沟通会上,恩智浦半导体执行副总裁兼汽车处理器业务总经理Henri Ardevol介绍,公司正在芯片基础上集成更多软件,未来将聚焦5纳米处理技术引领的汽车电子变革。 随着汽车工业正在向电气化、数字化、云端连接发展,推动主机厂开发模式从硬件主导型,逐步转向软件主导型。作为全球汽车芯片巨头,恩智浦在汽车处理器以及非功率模拟器件处于国际领先地位,正在布局软件定义汽车这一核心趋势。 “恩智浦作为技术合作伙伴,我们与主机厂的交流就更多聚焦在芯片平台与主机厂软件架构相匹配。这
[汽车电子]
<font color='red'>主机</font>开发模式“由硬变软”,全球汽车芯片巨头正布局软件定义汽车
基于USB主机和ZigBee的无线音响系统
  1 引言   近几年来,随着嵌入式系统技术、网络通讯技术以及家电产业的迅猛发展,信息技术正逐渐渗透到人们的生活当中,智能家居设计也渐渐进入视野。然而,现阶段的智能家居设计,多采用有线设计,存在着系统结构复杂、不易改动等缺点。   本文设计了一种基于嵌入式USB 主机的家用无线音响系统,可以实现在不连接PC 机的情况下直接读取U盘或mp3 中的音频数据,并通过ZigBee 无线网络传输给家庭内部各个位置上的分节点,实现家庭音响的无线播放mp3 的功能,将人们从繁杂的布线中解放出来。   2 系统结构   系统主要由嵌入式USB 主机和ZigBee 分节点播放器组成。而USB 主机又是系统设计的关键,主要由USB接口、MC
[单片机]
基于USB<font color='red'>主机</font>和ZigBee的无线音响系统
微软下一代Xbox主机或将于2020年推出
微软在Xbox E3 2018发布会上非常爽快的承认了他们正在研发下一代Xbox主机。但具体你什么时候看到它?很可能比你想象的要早!根据Thurrott的消息显示,微软目前正在研发的下一代“家庭设备”的代号为 Scarlett。其中比较奇特的是“家庭设备”的定位,其实,从Xbox One开始,微软的家用游戏主机就已经开始向家庭娱乐媒体终端设备进行转变了!   不过,目前还没有关于这台设备的其他细节被爆出。但是考虑到微软正在加大力度推广其订阅制流媒体类服务,下一代 Xbox 主机可能会在游戏串流等方面下一番功夫。   此外,鉴于Xbox One X是在2017年底刚刚发布。所以,2020年这个时间点对于一台新设备的更新频率来说,似
[手机便携]
NVIDIA助力机器人技术的提升 为构建自主机器统一平台树立了里程碑
NVIDIA创始人兼首席执行官在NVIDIA的技术会议(GTC CHINA 2019)上宣布了该消息。在建立统一的机器人开发平台以实现、仿真和操控功能方面,Isaac SDK迈出了重要的里程碑。 Isaac SDK包括Isaac Robocs Engine(提供应用程序框架),Isaac GEM(预先构建的深度模型、算法、库、驱动程序和API),用于室内物流的参考应用程序以及Isaac Sim的第一个版本(提供导航功能)。 全新Isaac SDK可以大大加快研究人员、开发人员、初创企业和制造商开发和机器人的速度。它使机器人能够通过仿真获得由人工智能技术驱动的感知和训练功能,从而可以在各种环境和情况下对机器人进行测试和
[机器人]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved