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高位





原文地址:https://www.cnblogs.com/aqyl/p/6615999.html