📄 tempctrl.h
字号:
#ifndef __TEMPCTRL_H__
#define __TEMPCTRL_H__
//korfi
//13/09/2006
//#include <reg51.h>
#include <math.h>
#include <REG52.H>
#include <intrins.h>
////////////////////////////////////////////
typedef unsigned char uchar;
typedef unsigned int uint;
////////////////////////////////////////////
//#define __USING_FUZZYPID__ 1
//#define __USING_BB_FZ_PID__ 1
//因程序空间问题,两者只能选其一
////////////////////////////////////////////
#define DPA() LedBuf[2]+=128//在上面加小数点
#define DPB() LedBuf[6]+=128//在下面加小数点
#define MieDown() LedBuf[6]=0xff;\
LedBuf[7]=0xff
#define ALM_ON() KeySta|=0x10
#define ALM_OFF() KeySta&=0xef
#define R_ON() KeySta|=0x20
#define R_OFF() KeySta&=0xdf
#define L_ON() KeySta|=0x40
#define L_OFF() KeySta&=0xBF
#define MAN_ON() KeySta|=0x80
#define MAN_OFF() KeySta&=0x7f
#define CH(n) {P1&=0x1f;P1|=Channal[n];}
#define PosOutput(){P_OUT1=1;P_OUT2=0;}
#define NegOutput(){P_OUT1=0;P_OUT2=1;}
#define OffOutput(){P_OUT1=1;P_OUT2=1;}
////////////////////////////////////////////
extern unsigned char idata LedBuf[8];//8个显存空间
extern unsigned char AdmitFlag;//1允许测量更新上排显示
extern unsigned char idata LedCnt;
extern unsigned char idata LedBitCnt;//LedCnt的位表示
extern unsigned char idata MeterSta;//标记仪器状态
#define STA_AUTO 0
#define STA_Sr 1
#define STA_Sv 2
#define STA_SH 3
#define STA_SL 4
#define STA_oH 5
#define STA_oL 6
#define STA_P 7
#define STA_I 8
#define STA_d 9
#define STA_db 10
#define STA_Fd 11
#define STA_FF 12//上述循环,功能键
#define STA_MAN 13//
extern unsigned char idata KeySta;
extern bit FunFlag;//0未按下
extern bit ManFlag;
extern bit PassWordLock;
extern unsigned int idata DataTemp;//设置某一项时的临时数据存放
extern int idata InputTemp;//调整数据时的某项临时存放
extern unsigned int idata InputLimit;//各参数输入上限
//extern int idata InputTimeCnt;//
extern unsigned char UpCnt;
extern unsigned char DownCnt;
extern unsigned char FunCnt;
extern unsigned char idata InputCnt;//0尚未输入第一次
extern unsigned char idata InputSpeed;
extern unsigned char DlySecond;
extern unsigned int idata SampleTimeCnt;//
extern bit SampleFlag;
extern unsigned char idata OverCnt;//溢出
extern unsigned char idata TpOverCnt;
extern unsigned char idata TpTH0;
extern unsigned char idata TpTL0;
extern unsigned int idata Temperature;//温度×10
extern unsigned int idata Setted_Temperature;
extern unsigned int idata LastTemperature;
extern unsigned int idata FastLastTemperature;
extern unsigned int idata PreTemperature;
extern unsigned char idata CtrlSta;
#define NR_FAST 1
#define NR_WAITING 2
#define NR_FUZZY 3
#define RL_PID 4
#define NL_FAST 5
#define NL_WAITING 6
#define NL_FUZZY 7
extern unsigned char IdTimeCnt;
extern char CloseOpenTimeCnt;
extern unsigned char idata WaitingCnt;
extern int SpareOutput;
extern int TwinOutput;
extern int MinOutputLimit;
extern int idata Error;
//extern int idata LastError;
extern int idata dError;
//extern int idata PreError;
extern int Output;
extern float idata fK1;
extern float idata fK2;
extern float idata fK3;
//extern float idata fK4;
extern int idata FrZero;//0°C频率漂移
extern unsigned char code LedCode[26];
#define C_S 10//字符预定义
#define C_r 11
#define C_v 12
#define C_H 13
#define C_L 14
#define C_o 15
#define C_P 16
#define C_I 17
#define C_d 18
#define C_b 19
#define C_F 20
#define C_Fuhao 21
#define C_Mie 22
#define C_A 23
#define C_c 24
#define C_E 25
//公共临时变量
extern unsigned int idata k0,k1,k2,k3;
extern float idata x1,x2,x3;
extern unsigned char idata i;
extern int idata ikt;
extern unsigned int idata FFSta;
extern unsigned int idata UpperLimit;
extern unsigned int idata LowerLimit;
extern int idata DeathZone;
extern int idata LineA;//FF1
extern int idata LineB;//FF2
extern int idata LineC;//FF3
extern int idata LineD;
//
extern unsigned char code Channel[8];
//extern unsigned int code Pt100_R2T[80];
extern unsigned int code Fr2Temp[46];
//extern unsigned int code Fr[6];
extern int code FuzzyRule[5][3];
//////////////////////////////
//功能函数
extern void Monitor(void);//按键及显示
extern void SamplingProcess(void);//一次采样处理
///93c46
extern unsigned int Read(unsigned char address); //地址范围:0~63
extern void Write(unsigned char address,unsigned int dat); //地址范围:0~63
extern void WriteByte(unsigned char address,unsigned char dat); //地址范围:0~127
extern unsigned char ReadByte(unsigned char address); //地址范围:0~127
//助记
extern void Wait(unsigned char x);
extern void LedH(unsigned int dat);//无小数点,根据需要添加(+128)
extern void LedL(unsigned int dat);
extern void Led(unsigned int dat);
extern void ShowInputTemp(void);
extern float FloatDiv(float xt1,float xt2);
extern void UpdatePid(void);
extern void UpdateFrZero(void);
///////////////////////////////
//EEPROM地址表:0x00~0x3f,共64个16bit
//Read()及Write()地址表
#define EP_FT 0x00//第一次标记
#define EP_Sr 0x01//密码
#define EP_Sv 0x02//给定值
#define EP_SH 0x03//上限
#define EP_SL 0x04//下限
#define EP_oH 0x05//开度上
#define EP_oL 0x06//开度下
#define EP_P 0x07//P
#define EP_I 0x08//I
#define EP_d 0x09//d
#define EP_db 0x0a//闸位死区
#define EP_Fd 0x0b//分度号
#define EP_FF1 0x0c
#define EP_FF2 0x0d
#define EP_FF3 0x0e
#define EP_FF4 0x0f
#define EP_FrMax 0x12
#define EP_FrMin 0x13//
#define EP_DeathZone 0x14//
//////////////////////////////
//接口定义
//93c46
sbit P_CS = P1^3;
sbit P_CLK = P1^0;
sbit P_DI = P1^1;
sbit P_DO = P1^2;//弱上拉,则器件高阻是为1,0则为写忙
//命令定义
#define CMD_READ 0x80
#define CMD_WRITE 0x40
#define CMD_ERASE 0xc0
#define CMD_EWEN 0x30
#define CMD_EWDS 0x00
#define CMD_ERAL 0x20
#define CMD_WRAL 0x10//不准备使用这条指令
sbit P_KEY=P1^4; //按键输入脚,korfi
sbit P2_0=P2^0; //键盘接口 FUN
sbit P2_1=P2^1; //INC
sbit P2_2=P2^2; //DEC
sbit P2_3=P2^3; //M/A
sbit P_ALM=P2^4; //指示灯输出 ALM
sbit P_R=P2^5; //L
sbit P_L=P2^6; //R
sbit P_MAN=P2^7; //MAN
sbit P_OUT1=P3^3; //OUT1正向
sbit P_OUT2=P3^5; //OUT2
sbit ALM_OUT=P3^2; //警报接通
sbit P_IN=P3^4; //数据输入口,T0
//#define N_state 20
/////////////////////////////////
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -