⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 output.c

📁 这是一个单片机的项目
💻 C
📖 第 1 页 / 共 3 页
字号:
#include <SM89516A.h>
#include <string.h>
#include <math.h>
#include "MyRam.h"
#include "ComRam.h"

#define uchar unsigned char
#define uint  unsigned int

/**************************************公共RAM区地址分配*****************************************/
//公共RAM区从机采集数据包存储开始地址.
#define ComSlaveDataStart1    0x0000       //000H~2FFH    公共RAM区从机1的数据的开始地址.
#define ComSlaveLenAdd1       0x02FE        //公共RAM区从机1数据字节数的存贮地址.

#define ComSlaveDataStart2    0x0300       //300H~5FFH    公共RAM区从机2的数据的开始地址.
#define ComSlaveLenAdd2       0x05FE        //公共RAM区从机2数据字节数的存贮地址。

#define ComSlaveDataStart3    0x0600       //600H~8FFH    公共RAM区从机3的数据的开始地址.
#define ComSlaveLenAdd3       0x08FE        //公共RAM区从机3数据字节数的存贮地址。

#define ComSlaveDataStart4    0x0900       //900H~BFFH    公共RAM区从机4的数据的开始地址.
#define ComSlaveLenAdd4       0x0BFE        //公共RAM区从机4数据字节数的存贮地址。

#define ComSlaveDataStart5    0x0C00       //C00H~EFFH    公共RAM区从机5的数据的开始地址.
#define ComSlaveLenAdd5       0x0EFE        //公共RAM区从机5数据字节数的存贮地址。

/*******从机的报警区********/
#define ComAlarmStart1        0x1000      //1000H-10FDH  公共RAM区从机1报警的起始地址。
#define ComAlarmLenAdd1       0x10FE      //10FEH-10FFH  公共RAM区从机1报警数据总长度的存储地址。

#define ComAlarmStart2        0x1100      //1100H-10FDH  公共RAM区从机2报警的起始地址。
#define ComAlarmLenAdd2       0x11FE      //11FEH-11FFH  公共RAM区从机2报警数据总长度的存储地址。

#define ComAlarmStart3        0x1200      //1200H-12FDH  公共RAM区从机3报警的起始地址。
#define ComAlarmLenAdd3       0x12FE      //12FEH-12FFH  公共RAM区从机3报警数据总长度的存储地址。

#define ComAlarmStart4        0x1300      //1300H-13FDH  公共RAM区从机4报警的起始地址。
#define ComAlarmLenAdd4       0x13FE      //13FEH-13FFH  公共RAM区从机4报警数据总长度的存储地址。

#define ComAlarmStart5        0x1400      //1400H-14FDH  公共RAM区从机5报警的起始地址。
#define ComAlarmLenAdd5       0x14FE      //14FEH-14FFH  公共RAM区从机5报警数据总长度的存储地址。

//公共RAM区从机命令数据包存放开始地址.
#define ComOrderStart           0x1500     //1500H~4FFFH  公共RAM区发给从机命令的起始地址。
#define ComLenOrder             0x4FFE     //公共RAM区从机命令字节数的存贮RE认为》256N。
#define ComNewOrderFlag         0x4FFD     //公共RAM区有新从机命令的标识位。

//公共RAM区从机时间命令数据包存放开始地址.
#define ComTimeStart            0x5000     //5000H~50FFH  公共RAM区日期和时间的其实地址。
#define ComLenTimer             0x50FE     //公共RAM区时间字节数存贮地址。

//公共RAM区输出数据包存放开始地址.
#define ComOutputStart          0x5100     //5100H~6FFFH  公共RAM区发给输出单片机的起始地址。
#define ComLenOutput            0x6FFE     //公共RAM区输出字节数存贮地址。

//公共RAM区从机使能数据包存放开始地址.
#define ComSlaveEnable          0x7500     //公共RAM区从机使能数据包存贮地址.
#define ComLenSlaveEnable       0x7510     //公共RAM区从机使能数据包状态标识存贮地址.
#define ComSlaveEnableNewFlag   0x7511     //公共RAM区从机使能数据包状态标识存贮地址.

/**************************************公共RAM区地址分配*****************************************/

/**************************************自己的RAM区地址分配************************************************/
#define MyDataStart1      0x0000      // 0000H-02FFH 从机1的数据的开始
#define MyDataLenAdd1     0x02FE      //从机1数据字节数的存贮地址

#define MyOrderStart      0x0300      // 0300H-09FFH 从机命令的起始地址
#define MyOrderLen        0x09FE      //从机命令字节数的
//外设1的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define WsChannelParaLen  0x0B        //每个通道参数存储的长度。依次为每个通道的最大值(2Bytes),最小值(2Bytes),超高报警
                                      //号(2Bytes),超低报警号(2Bytes),通道使能,(1Bytes),超高报警动作号(1Bytes),超低报警动作号(1Bytes)。  
                                      //如果已知外设i ,通道j,则对应存储的位置为: 1000H +(i-1) *100H+ j *10H。
#define Ws1channel1       0x1000      //1000H-100FH
#define Ws1channel2       0x1010      //1010H-101FH
#define Ws1channel3       0x1020      //1020H-102FH
#define Ws1channel4       0x1030
#define Ws1channel5       0x1040
#define Ws1channel6       0x1050
#define Ws1channel7       0x1060
#define Ws1channel8       0x1070
#define Ws1channel9       0x1080
#define Ws1channel10      0x1090
#define Ws1channel11      0x10A0
#define Ws1channel12      0x10B0
#define Ws1channel13      0x10C0
#define Ws1channel14      0x10D0
#define Ws1channel15      0x10E0
#define Ws1channel16      0x10F0
//外设2的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws2channel1       0x1100
#define Ws2channel2       0x1110
#define Ws2channel3       0x1120
#define Ws2channel4       0x1130
#define Ws2channel5       0x1140
#define Ws2channel6       0x1150
#define Ws2channel7       0x1160
#define Ws2channel8       0x1170
#define Ws2channel9       0x1180
#define Ws2channel10      0x1190
#define Ws2channel11      0x11A0
#define Ws2channel12      0x11B0
#define Ws2channel13      0x11C0
#define Ws2channel14      0x11D0
#define Ws2channel15      0x11E0
#define Ws2channel16      0x11F0
//外设3的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws3channel1       0x1200
#define Ws3channel2       0x1210
#define Ws3channel3       0x1220
#define Ws3channel4       0x1230
#define Ws3channel5       0x1240
#define Ws3channel6       0x1250
#define Ws3channel7       0x1260
#define Ws3channel8       0x1270
#define Ws3channel9       0x1280
#define Ws3channel10      0x1290
#define Ws3channel11      0x12A0
#define Ws3channel12      0x12B0
#define Ws3channel13      0x12C0
#define Ws3channel14      0x12D0
#define Ws3channel15      0x12E0
#define Ws3channel16      0x12F0
//外设4的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws4channel1       0x1300
#define Ws4channel2       0x1310
#define Ws4channel3       0x1320
#define Ws4channel4       0x1330
#define Ws4channel5       0x1340
#define Ws4channel6       0x1350
#define Ws4channel7       0x1360
#define Ws4channel8       0x1370
#define Ws4channel9       0x1380
#define Ws4channel10      0x1390
#define Ws4channel11      0x13A0
#define Ws4channel12      0x13B0
#define Ws4channel13      0x13C0
#define Ws4channel14      0x13D0
#define Ws4channel15      0x13E0
#define Ws4channel16      0x13F0
//外设5的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws5channel1       0x1400
#define Ws5channel2       0x1410
#define Ws5channel3       0x1420
#define Ws5channel4       0x1430
#define Ws5channel5       0x1440
#define Ws5channel6       0x1450
#define Ws5channel7       0x1460
#define Ws5channel8       0x1470
#define Ws5channel9       0x1480
#define Ws5channel10      0x1490
#define Ws5channel11      0x14A0
#define Ws5channel12      0x14B0
#define Ws5channel13      0x14C0
#define Ws5channel14      0x14D0
#define Ws5channel15      0x14E0
#define Ws5channel16      0x14F0
//外设报警区域。
#define Ws1Alarm          0x1500     //1500H-151FH
#define Ws1AlarmLen       0x151F     

#define Ws2Alarm          0x1520     //1520H-153FH
#define Ws2AlarmLen       0x153F     

#define Ws3Alarm          0x1540     //1540H-155FH
#define Ws3AlarmLen       0x155F     

#define Ws4Alarm          0x1560     //1560H-157FH
#define Ws4AlarmLen       0x157F     

#define Ws5Alarm          0x1580     //1580H-15AFH 
#define Ws5AlarmLen       0x15AF       
//从机默认参数保存地址。
#define MySlaveParaStart  0x1600     //1600H--1610H
/**************************************自己的RAM区地址分配************************************************/
/**********************************************数据包*****************************************************/
//数据包标识。
#define StartFlag        0x2A
#define CmdWs            0xA1
#define CmdSlave         0xA2
#define CmdTime          0xA3
#define CmdAlarm         0xA4
#define CmdWsControl     0xA5
#define CmdSendSlave     0xB1
//数据包长度。
#define LenCmdWs         0x10      //已改成16字节
#define LenCmdSlave      0x08
#define LenCmdTime       0x09
#define LenCmdAlarm      0x04
#define LenCmdWsControl  0x05     /*  需修正*/
#define LenCmdSendSlave  0x07     //向上位机发送的数据包的字节数
/**********************************************数据包*****************************************************/

/**********************************************外设信息***************************************************/
//外设地址信息。
#define WsAddress1         0x01  //起始地址从01开始
#define WsAddress2         0x02
#define WsAddress3         0x03
#define WsAddress4         0x04
#define WsAddress5         0x05
//外设类型信息。
#define WsType1            0x01   //7017
#define WsType2            0x02   //7053
//外设通道信息。
#define Channel1           0x00   //起始地址从00开始
#define Channel2           0x01
#define Channel3           0x02
#define Channel4           0x03
#define Channel5           0x04
#define Channel6           0x05
#define Channel7           0x06
#define Channel8           0x07
#define Channel9           0x08

#define Channel10          0x09
#define Channel11          0x0A
#define Channel12          0x0B
#define Channel13          0x0C
#define Channel14          0x0D
#define Channel15          0x0E
#define Channel16          0x0F
//外设数据长度信息。
#define LenRecvWsType1     0x38    //外设类型1的数据长度
#define LenRecvWsType2     0x04    //外设类型2的数据长度
/**********************************************外设信息***************************************************/

/**********************************************从机信息***************************************************/
//从机编号信息。
#define SlaveCode1         0x01     //从机1编号。
#define SlaveCode2         0x02     //从机2编号。
#define SlaveCode3         0x03     //从机3编号。
#define SlaveCode4         0x04     //从机4编号。
#define SlaveCode5         0x05     //从机5编号。
uchar   SlaveCode = SlaveCode1;     //当前从机编号。
//从机数据存储最大长度。
#define DataLen7053        560      //7053数据存储最大长度。
#define DataLen7017        280      //7017数据存储最大长度。
//从机串口信息。
#define InitState          0        //开始接收状态。
#define DataState          1        //数据接收状态。
#define SlaveStartFlag     0x3E     //数据开始标志。
uchar   n = 1;                      //当前处理的外设编号。
uchar   FlagWsSend[5]={0,0,0,0,0};  //从机外设的数据返回状态。
char    RecvDataCount=-1;           //接收外设数据的计数器。
uint    TimeCount = 0;              //串口通讯的计数器。
uchar   RecvState= InitState;       //接收的状态,初始化为初始化接收状态。
uchar   RecvDataSize;               //接收外设数据的长度。
//从机参数信息。
#define SlaveParaLen     0x05        //从机默认参数长度。
uchar   BodeRate;                    //从机与外设通讯的波特率。
uchar   WsNumber;                    //从机的外设个数。
uint    ReadDataRate;                //读取外设数据的时间间隔。
uchar   WsType;                      //外设的类型。
/**********************************************从机信息***************************************************/
/**************************************拷贝数据最大长度定义**************************************/
#define MaxOrderLen              0x6FD
#define MaxSlaveDataLen          0x230

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -