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

📄 mfmgd.h

📁 基于ADE7166/7169的单相表程序
💻 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 + -