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

📄 data.h

📁 Keil单片机软件开发平台下的一个51系列单片机工程
💻 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 + -