📄 mfmgd.h
字号:
/***** DEFINED **************************/
#define ulong unsigned long
#define uint unsigned int
#define uchar unsigned char
#define uintd __data unsigned int
#define uchard __data unsigned char
#define uintb __bdata unsigned int
#define ucharb __bdata unsigned char
#define uinti __idata unsigned int
#define uchari __idata unsigned char
#define ei() (IE_bit.EA=1)
#define di() (IE_bit.EA=0)
#define uintc unsigned int const
#define OUTA P1_bit.P12
#define OUTB P1_bit.P13
#define RXD1 P1_bit.P14 //AC220 断电状态
#define LEDBJ P2_bit.P23 //报警
#define KRES P2_bit.P22 //设置
#define rx_tx P1_bit.P17 //通讯控制
#define VOUT P2_bit.P20 //停电检测
#define TXD P0_bit.P01
#define RS485Rcv rx_tx=1
#define RS485Trx rx_tx=0
#define Constant 0x10 // 0xa0 // 电表常数
#define SECADDR 0x40
#define ENWriADD 0x4f
#define lh 0x80 /** LCD 笔画代码 **/
#define la 0x10
#define lb 0x20
#define lc 0x40
#define ld 0x08
#define le 0x04
#define lf 0x01
#define lg 0x02
__code unsigned char const decode[16]={
la+lb+lc+ld+le+lf,
lb+lc,
la+lb+ld+le+lg,
la+lb+lc+ld+lg,
lb+lc+lf+lg,
la+lc+ld+lf+lg,
la+lc+ld+le+lf+lg,
la+lb+lc,
la+lb+lc+ld+le+lf+lg,
la+lb+lc+ld+lf+lg, // 数字0-9笔画
0xff, // 显示全亮all 10
0x00, // 显示全不亮 11
la+lb+lc+le+lf+lg,
3,
3,
0xff
};
/******脉冲输入所用资源 ?***************/
/******IO口和标志位?***************/
__idata uchar SR_P,SRTIME;
__idata uchar Pulsebz;
__idata unsigned char IncZZFlag,PulseFlag,minute_bz,StartP_bz,SetDateFlag,ADDTIME;
__idata unsigned char PulseFXFlag,ProgFlag,KRES_bz,StartAD_bz,SleepFlag,TimeErr_bz;
__idata unsigned char StartFlag,CheIDFlag,SIOtrFlag,SR_STAT,SIOrecvFlag,SR485_bz,SetTimeFlag,t2flg;
__idata static unsigned char WDT_bz,S_timeFlag,Dis_bz,M_timeFlag,LastVoutFlag;
__idata uchar EEbuf[20];
__idata uchar LCDbuf[7]; // LCD 显示缓冲区
__idata uchar DL[5];
/******定时器T0执行所用资源和主循环检测标志位?***************/
/****** :标志位和定时计数单元 ****************/
__data uchar PulTime[2];
__idata uchar MonthMark;
__idata uchar T0Timer,PulseTime,DisTime,MinTime;
__idata uchar testbyte,Timefull,CleanCnt,DayMark,WDTVal,ZH_x,ZH_n;
__data uchar Db_S_Jdq,MOTOR_FLAG,Xulon,MOTOR_Timer,OFFRXD;
__idata uchar HourVal,StopT[4],LastTime[2],HourMark;
__idata uchar PulseAdd[3]; // 脉冲数,0总 1尖 2峰 3平 4谷 5反向总
// 6反向尖 7反向峰 8反向平 9反向谷
__idata static unsigned char recv[100];
__data uchar trxLong;
__data static volatile uchar MeterID[6];
#define NORMAL 0x03
#define STX 0x68
#define ETX 0x16
#define PulT_ib 81
#define MaxL 42
#define VLdata 0x80 //2.5v
/**** EEPROM 24LC16 地址分配 *******************************/
#define WRITE 0xa0
#define READ 0xa1
#define DQDL 0x0
#define XUL 0x2
//000-039 当前(实时)表码整数部分,每个4字节(6位 BCD 整数+1位小数(即最后一字节〈10)
/// 正向:00-03总 04-07尖 08-11峰 12-15平 16-19谷
// 反向:20-23总 24-27尖 28-31峰 32-35平 36-39谷
//040-059 本月表码,每个4字节,只有正向,顺序同上
//060-079 上月表码,每个4字节,只有正向,顺序同上
//080-099 上上月表码,每个4字节,只有正向,顺序同上
//100-109 本月需量,每个2字节脉冲数(16进制玛),顺序同上
//110-119 上月需量,每个2字节脉冲数(16进制玛),顺序同上
//120-129 上上月需量,每个2字节脉冲数(16进制玛),顺序同上
//130-149 本月需量时间,每个4字节(月日时分),顺序同上
//150-169 上月需量时间,每个4字节(月日时分),顺序同上
//170-189 上上月需量时间,每个4字节(月日时分),顺序同上
//E2 低半部256字节定义/
#define CoIdAdd 0X01
#define LastDayAdd 0x03
#define LastDayAddpc 0X05 //整点数据地址
#define JDQADD 0x09 //继电器状态
#define NOWVALADD 0x10 //当前电量
#define NOWZVALJYADD 0x18 //09af
#define YHIDADD 0x1a //表号
#define PulseEEadd 0x0C //脉冲数
#define MIMAADD0 0x20 //0级密码
#define MIMAADD 0x24 //1级密码
#define INIVALADD 0x28 // 有功电能时段起始读数,4字节
#define AUTOREADDAYADD 0x00
#define MONTHMARKADD 0x2c
#define CleanAdd 0X2e
#define BYVALADD 0x30 //上月电能
#define NOWZEROADD 0x3E //0点数据地址
#define HOURZADD 0x40
#define ZEROADD 0xC0
#define LASTHOURZADD 0x00
void readNOWval(uchar ucM,uchar valadd);
void Dismark(void);
void E_WRITE(uchar addr, uchar value);
uchar E_READ(uchar addr);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -