📄 data.h
字号:
/*与CPLD相关部分接口定义*/
//-------------------------------------------------------------------------------------------------------
//功 能 描 述: 本程序为相控充电机控制板上的CPLD内的程序,完成如下功能1.键盘扫描2.控制AD转换3.产生PWM信号
// 与51系列CPU接口,接在51地址数据总线上,51单片机通过访问地址总线上的数据寄存器来控制CPLD
// -----------------------------------------------------------------------------------------
// |地址 | 读 | 写 |
// -----------------------------------------------------------------------------------------
// |10000000 |AD转换低8位值 |写PA口,低三位有一位为1则begin_ad = '1' |
// -----------------------------------------------------------------------------------------
// |10000001 |AD转换高5位值最高位为1则数据无效 |写PB口,液晶的数据总线 |
// -----------------------------------------------------------------------------------------
// |10000010 |按键值,大于15为无效按键 |写PWM低8位 |
// -----------------------------------------------------------------------------------------
// |10000011 |无效 |写PWM高4位 |
//-------------------------------------------------------------------------------------------------------
// |10000100 |无效 |写PE口,0:液晶被光制线,其它备用 |
//-------------------------------------------------------------------------------------------------------
#ifdef DATA
#define EXT_DATA
#else
#define EXT_DATA extern
#endif
#define CPLD_PORT_A 0x80//PBYTE[0x80]//write
#define CPLD_PORT_B 0x81//PBYTE[0x81]//write
#define CPLD_PWM_LOW 0x82//PBYTE[0x82]//write
#define CPLD_PWM_HIGH 0x83//PBYTE[0x83]//write
#define CPLD_PORT_E 0x84//PBYTE[0x84]//write
#define CPLD_ADCOUNT_LOW 0x80//PBYTE[0x80]//read
#define CPLD_ADCOUNT_HIGH 0x81//PBYTE[0x81]//read
#define CPLD_KEY_NUMBER 0x82//PBYTE[0x82]//read
//State 所对应的宏定义
#define STOP 0
#define RUN 1
#define PAUSE 2
#define POWER_DOWN 3
#define SET_PARAMETER 5
#define AFFIRM_SET_PROGRAM 6
#define SET_PROGRAM_NO 7
#define SET_PROGRAM_STEP 8
#define REFER_RECORD 9
#define AFFIRM_RUN 10
#define SET_RUN_START 11
#define AFFIRM_RUN_OTHERS_STEP 12
#define AFFIRM_STOP 13
#define AFFIRM_PAUSE 14
#define AFFIRM_RESTORE 15
#define FUNCTION_TABLE 16
//ErrorState所对应的宏定义
#define WITHOUT_ERROR 0
#define DEVICE_ERROR 1
#define DEVICE_DL_ERROR 2
#define DEVICE_GL_ERROR 3
#define DEVICE_GY_ERROR 4
//极限参数定义
#define PROGRAM_NO_MAX 0
#define STEP_MAX 30
#define LOOP_TIMES_MAX 10000
#define SETUP_I_MAX 65535
#define SETUP_U_MAX 65535
#define INTERVAL_TIME_M_MAX 5999 //99:59
#define JUMP_TIME_M_MAX 5999 //99:59
#define JUMP_U_MAX 60000
#define JUMP_Q_MAX 60000
#define PARAMETER_MAX 60000
#define PARAMETER_MIN 0
//Eeprom 中地址分配定义
//0~0x3FF 用于存一个工步
#define E2State 0x400
#define E2ErrorState 0x401
#define E2Address 0x402
#define E2Step 0x403
#define E2ProgramNo 0x404
#define E2RemainLoopTimes 0x405
#define E2AmountQ10S 0x406
#define E2LastTimeS 0x40A
#define E2SetupCurrentDirection 0x40E
#define E2Ub 0x400
#define E2Ib 0x402
#define E2Uk 0x404
#define E2Ik 0x406
#define E2DAk 0x408
#define E2DAb 0x40A
#define E2Tk 0x40C
#define E2Tb 0x40E
struct DataRecord
{
unsigned int Record;
unsigned char Sequence;
};
EXT_DATA uint16 xdata IRealCount;
EXT_DATA uint16 xdata URealCount;
EXT_DATA uint16 xdata TRealCount;
EXT_DATA uint16 xdata Ib;
EXT_DATA uint16 xdata Ik;
EXT_DATA uint16 xdata Ub;
EXT_DATA uint16 xdata Uk;
EXT_DATA uint16 xdata Tb;
EXT_DATA uint16 xdata Tk;
EXT_DATA uint16 xdata DAk;
EXT_DATA uint16 xdata DAb;
//EXT_DATA uint16 pdata IntervalTimeM;
EXT_DATA uint16 xdata JumpTimeM;
EXT_DATA uint16 xdata JumpU;
EXT_DATA uint16 xdata JumpI;
EXT_DATA uint16 xdata JumpQ;
EXT_DATA struct DataRecord xdata Ibuf5Second[10];
EXT_DATA struct DataRecord xdata Ubuf5Second[10];
EXT_DATA struct DataRecord xdata Tbuf5Second[10];
EXT_DATA uint16 xdata IAverage5SecondCount;
EXT_DATA uint16 xdata UAverage5SecondCount;
EXT_DATA uint16 xdata TAverage5SecondCount;
EXT_DATA uint8 idata State;
EXT_DATA uint8 idata Deep0Focus;
EXT_DATA uint8 idata Deep1Focus;
EXT_DATA uint8 idata ErrorState;
EXT_DATA uint8 idata Address; //本机地址
EXT_DATA uint8 idata Step; //当前正在执行的工步
EXT_DATA uint8 idata ProgramNo;
EXT_DATA uint8 idata RemainLoopTimes;//剩余的循环次数
EXT_DATA int16 idata MeasureI; //测试所得的电流
EXT_DATA int16 idata MeasureU; //测试所得的电压
EXT_DATA int16 idata MeasureRealU; //测试所得的实时电压
EXT_DATA int16 idata MeasureUAdjust; //用于做恒压调节的变量,大于1V时等于MeasureRealU,小于等于1V时等于MeasureU
EXT_DATA int16 idata MeasureT; //测试所得的温度
EXT_DATA int16 idata MeasureTU; //测试所得的温度所对应的电压
EXT_DATA uint32 idata AmountQ10S; //累计电量 比安时大36000倍
EXT_DATA uint32 idata LastTimeS; //本工步持续的时间
EXT_DATA bit RunKeySetupStep;//运行键盘设的工步
EXT_DATA bit Debug; //1:系统处于调试状态 0:正常运行
//EXT_DATA uint8 idata DebugISelect; //显示的电流是哪个时间段内的滤波
//EXT_DATA uint8 idata DebugUSelect; //显示的电压是哪个时间段内的滤波
EXT_DATA uint8 idata Mode;
EXT_DATA uint8 idata LoopTimes;
EXT_DATA uint16 idata SetupI;
EXT_DATA uint16 idata SetupU;
EXT_DATA uint16 idata SetupCurrentDirection;//充放电电池方向0:正常 1:逆向
EXT_DATA uint16 idata SetupIDA; //由SetupI计算而来
EXT_DATA uint16 idata RealTimeDA;//由DA和采样所得的电压经模糊算法计算而来,最大值为DA
EXT_DATA uint16 idata WriteOutDA;//WriteOutDA=RealTimeDA+DAb>4094?4094:RealTimeDA+DAb
EXT_DATA bit CommNewMessage; //收到报文尾后置的标志位,
EXT_DATA uint8 idata CommCounter;//通信计数器,正确收到一个报文时由void TaskReceive(void)清0,
//每秒种由void TaskCalcCapa(void)加1,当值大于240(4分钟)时报通信中断
//通信中断时由TaskCalcCapa(void)给void TaskWorkStep(void)发送'急停'信号量
#define RX_BUF_MAX 40
#define TX_BUF_MAX 40
EXT_DATA uint8 data CommState;
EXT_DATA uint8 data CommCid;
EXT_DATA uint8 data CommChkIn;
EXT_DATA uint8 data CommChkOut;
EXT_DATA uint8 data ReturnCode;
EXT_DATA uint8 data CommRxLength;
EXT_DATA uint8 data CommTxLength;
EXT_DATA uint8 data CommRxPointer;
EXT_DATA uint8 data CommTxPointer;
EXT_DATA uint8 xdata CommRxBuf[RX_BUF_MAX];
EXT_DATA uint8 xdata CommTxBuf[TX_BUF_MAX];
extern uint8 bdata ErrorType;
extern bit DeviceError ;//设备故障
extern bit DeviceDLError;//断流故障
extern bit DeviceGLError;//过流故障
extern bit DeviceGYError;//过压故障
extern bit DeviceGWError;//充电机过温故障
EXT_DATA bit ChangeStateFlag;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -