zoukankan      html  css  js  c++  java
  • zigbee控制ADAM4150

    任务名称:zigbee节点控制ADAM4150

    实验现象:通过zigbee节点上的节点控制ADAM

    注意点:控制ADAM4150的波特率必须是9600,否则会出现错误

    核心代码

    1、寄存器配置

    1. void init()
    2. {
    3. CLKCONCMD &=~0x40; //设置系统时钟源为32MHZ晶振
    4. while(CLKCONSTA & 0x40); //等待晶振稳定为32M
    5. CLKCONCMD &=~0x47; //设置系统主时钟频率为32MHz
    6. PERCFG=0x00; //位置1,P0口
    7. P0SEL =0x0c; //P0_2,P0_3用作串口
    8. P2DIR =0xc0; //P0优先作为UART0
    9. U0CSR |=0x80; //设置UART方式
    10. U0GCR |=8; //设置波特率
    11. U0BAUD |=59; //设置波特率 9600波特率
    12. UTX0IF=0; //UART 0中断标志位初始置位0
    13. }

    2、串口发送

    1. void SendString(char *Data,int len)
    2. {
    3. int i;
    4. for(i=0;i<len;i++)
    5. {
    6. U0DBUF=*Data++;
    7. while(UTX0IF==0);
    8. UTX0IF=0;
    9. }
    10. }

    3、ADAM4150数字量采集控制模块请求指令

    开启:01 05 00 13 FF 00 7D FF

    地址码功能码起始地址起始地址读取数量CRC低位CRC高位
    01050013FF007DFF

    关闭:01 05 00 13 00 00 3C 0F

    地址码功能码起始地址起始地址读取数量CRC低位CRC高位
    01 05 001300003C0F

    备注:
    1、起始地址为10,对应ADAM4150的DO0,11对应DO1,以此类推
    2、根据前面要求产生的:地址码、功能码、起始地址、起始地址、开/关、读取数量后,使用”Crc16校验位工具“可以算出CRC低位、CRC高位





  • 相关阅读:
    POJ-1035 Spell checker---字符串处理
    hdu-3572 Task Schedule---最大流判断满流+dinic算法
    BZOJ4826: [Hnoi2017]影魔
    BZOJ4825: [Hnoi2017]单旋
    BZOJ3504: [Cqoi2014]危桥
    BZOJ4407: 于神之怒加强版
    BZOJ2818: Gcd
    BZOJ4542: [Hnoi2016]大数
    BZOJ4540: [Hnoi2016]序列
    BZOJ4537: [Hnoi2016]最小公倍数
  • 原文地址:https://www.cnblogs.com/aqyl/p/6615999.html
Copyright © 2011-2022 走看看