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

📄 waterctrl4-wdt.c

📁 一个基于PIC18F单片机的开发的流量计量仪表
💻 C
📖 第 1 页 / 共 5 页
字号:
/*----------------------------------------------------------------------*/
/*WQ-WC01											*/
/*													*/
/*													*/
/*													*/
/*													*/
/*----------------------------------------------------------------------*/
//#ifndef _CLRE2_
//#define _CLRE2_
//#endif

#include "p18f6720.h"	                	 //PIC18F6520 Head File	
#include "PIC18F6720_IO.h"
#include "PIC18F6720_PERIPHERYDEVICE.h"
#include "OFF_CHIP_DEVICE.h"
#include "delays.h"		                 	//soft delay Head Flie
						                 	//Delay1TCY();  delay one TCY
                                        				//Delay10TCYx(uchar t); (255~0)*10TCY 
						                 	//.....100........ 
                                                  		//.....1K.........
 					                 		//.....10K........
						                 	//if uchar t = 0  that delay time = 2560000tCY

#define		uchar			unsigned char
#define		uint				unsigned int	
#define		Delay5tcy()		Delay1TCY();Delay1TCY();Delay1TCY();Delay1TCY()

#define		MAXpirce		0x20			//max water pirce <20Yuan/M3
#define         MIXYOULIANG      0x20
#define		WATER_COUNT_UNIT_10L		
//#define	WATER_COUNT_UNIT_100L	
//#define	WATER_COUNT_UNIT_1000L

#define		LOWPressureVal		0			//0Kg
#define		HIGHPressureVal		160			//20Kg

#define 		YuKou				40			//100L
				//				10			//50L


#define 		AddUsingValueOp()		BCDBytesAdd(YongSL,OPnum3,3);BCDBytesAdd(YongJE,DanJCnt,5);BCDBytesAdd(LieJSL,OPnum4,5);BCDBytesSub(CardYE,DanJCnt,5)
#define		ReflhDisplayVal()			ClearNumDpy(2,10);DPY_SLorJE_Num(YongSL,0);ClearNumDpy(3,10);DPY_SLorJE_Num(YongJE,1);ClearNumDpy(0,10);DPY_Card_YLorJE_Num(CardYE);
#define		DYP_OpenValve_Flg()		OneLcdFlagSET(37);OneLcdFlagSET(59);OneLcdFlagClear(57)
#define		DPY_CloseValve_Flg()		OneLcdFlagSET(37);OneLcdFlagSET(57);OneLcdFlagClear(59)
#define		UnDPY_Valve_FLg()		OneLcdFlagSET(37);OneLcdFlagClear(59);OneLcdFlagClear(57)
#define		DYP_Failure_Flg()			OneLcdFlagSET(75)
#define		UnDPY_Failure_Flg()		OneLcdFlagClear(75)
#define		DYP_CardOn_Flg()		OneLcdFlagSET(33)
#define		UnDYP_CardOn_Flg()		OneLcdFlagClear(33)
#define		DPY_0Pow_Flg()			OneLcdFlagSET(67);OneLcdFlagClear(61);OneLcdFlagClear(65);OneLcdFlagClear(71)
#define		DPY_1Pow_Flg()			OneLcdFlagSET(67);OneLcdFlagClear(61);OneLcdFlagClear(65);OneLcdFlagSET(71)	
#define		DPY_2Pow_Flg()			OneLcdFlagSET(67);OneLcdFlagClear(61);OneLcdFlagSET(65);OneLcdFlagSET(71)
#define		DPY_3Pow_Flg()			OneLcdFlagSET(67);OneLcdFlagSET(61);OneLcdFlagSET(65);OneLcdFlagSET(71)
#define		DPY_Full_SigleLv_Flg()	OneLcdFlagSET(11);OneLcdFlagSET(17);OneLcdFlagSET(19);OneLcdFlagSET(23)
#define		DPY_Half_sigleLv_Flg()	OneLcdFlagSET(11);OneLcdFlagClear(23);
#define		UnDPY_Sigle_Flg()		OneLcdFlagClear(11);OneLcdFlagClear(23)
#define		DPY_CardYL_Area()		OneLcdFlagSET(7);OneLcdFlagSET(9);OneLcdFlagSET(13);OneLcdFlagClear(5);OneLcdFlagClear(15)
#define		DPY_CardJE_Area()		OneLcdFlagSET(5);OneLcdFlagSET(9);OneLcdFlagSET(15);OneLcdFlagClear(7);OneLcdFlagClear(13)
#define		UnDPY_CardJEorYL_Area()			OneLcdFlagClear(5);OneLcdFlagClear(15);OneLcdFlagClear(7);OneLcdFlagClear(9);OneLcdFlagClear(13);OneLcdFlagClear(5);OneLcdFlagClear(15)
#define		DPY_SL_Area()			OneLcdFlagSET(3);OneLcdFlagSET(21);OneLcdFlagSET(27)
#define		UnDPY_SL_Area()			OneLcdFlagClear(3);OneLcdFlagClear(21);OneLcdFlagClear(27)
#define		DPY_LJSL_Area()			OneLcdFlagSET(1);OneLcdFlagSET(41);OneLcdFlagSET(45)
#define		UnDPY_LJSL_Area()		OneLcdFlagClear(1);OneLcdFlagClear(41);OneLcdFlagClear(45)
#define		DPY_DateT()				OneLcdFlagSET(35);OneLcdFlagSET(39);Wr1BCDNumToLcd(0x02 , 14);Wr1BCDNumToLcd(0x00 , 15)
#define		UnDPY_DateT()			OneLcdFlagClear(35);OneLcdFlagClear(39);Wr1BCDNumToLcd(21,14);Wr1BCDNumToLcd(21,15)
#define		DPY_SDL_Area()			OneLcdFlagSET(43);OneLcdFlagSET(73);OneLcdFlagSET(77);OneLcdFlagClear(47);OneLcdFlagClear(79)
#define		DPY_DJ_Area()			OneLcdFlagSET(47);OneLcdFlagSET(73);OneLcdFlagSET(79);OneLcdFlagClear(43);OneLcdFlagClear(77)
#define		UnDPY_DJorSDL_Area()	OneLcdFlagClear(43);OneLcdFlagClear(77);OneLcdFlagClear(47);OneLcdFlagClear(79);OneLcdFlagClear(73)
#define		DPY_JE_Area()			OneLcdFlagSET(55);OneLcdFlagSET(63);OneLcdFlagSET(69)
#define		UnDPY_JE_Area()			OneLcdFlagClear(55);OneLcdFlagClear(63);OneLcdFlagClear(69)
#define		DPY_Time_Area()			OneLcdFlagSET(49);OneLcdFlagSET(53)
#define		UnDPY_Time_Area()		OneLcdFlagClear(49);OneLcdFlagClear(53)
#define		DPY_WaterWheelSt1()	OneLcdFlagSET(31);OneLcdFlagClear(29);OneLcdFlagClear(25)
#define		DPY_WaterWheelSt2()	OneLcdFlagSET(29);OneLcdFlagClear(25);OneLcdFlagClear(31);
#define		DPY_WaterWheelSt3()	OneLcdFlagSET(25);OneLcdFlagClear(31);OneLcdFlagClear(29)



	
////////////////////////////////////////////////////////////////
#define FM1702_OK		    			0		// U}H7 
#define FM1702_NOTAGERR			1		// N^?( 
#define FM1702_CRCERR				2		// ?(F,CRCP#Qi4mNs 
#define FM1702_EMPTY				3		// J}V5Rg3v4mNs 
#define FM1702_AUTHERR				4		// QiV$2;3I9& 
#define FM1702_PARITYERR			5		// ?(F,FfE<P#Qi4mNs 
#define FM1702_CODEERR			6		// M(Q64mNs(BCCP#Qi4m) 
#define FM1702_SERNRERR			8		// ?(F,PrAP:E4mNs(anti-collision 4mNs) 
#define FM1702_SELECTERR			9		// ?(F,J}>]3$6HWV=Z4mNs(SELECT4mNs) 
#define FM1702_NOTAUTHERR			10		// ?(F,C;SPM(9}QiV$ 
#define FM1702_BITCOUNTERR		11		// 4S?(F,=SJU5=5DN;J}4mNs 
#define FM1702_BYTECOUNTERR		12		// 4S?(F,=SJU5=5DWV=ZJ}4mNs=v6A:/J}SPP' 
#define FM1702_RESTERR				13		// 5wSCrestore:/J}3v4m 
#define FM1702_TRANSERR			14		// 5wSCtransfer:/J}3v4m 
#define FM1702_WRITEERR			15		// 5wSCwrite:/J}3v4m 
#define FM1702_INCRERR				16		// 5wSCincrement:/J}3v4m 
#define FM1702_DECRERR			17		// 5wSCdecrement:/J}3v4m 
#define FM1702_READERR				18		// 5wSCread:/J}3v4m 
#define FM1702_LOADKEYERR			19		// 5wSCLOADKEY:/J}3v4m 
#define FM1702_FRAMINGERR			20		// FM1702V!4mNs 
#define FM1702_REQERR				21		// 5wSCreq:/J}3v4m 
#define FM1702_SELERR				22		// 5wSCsel:/J}3v4m 
#define FM1702_ANTICOLLERR		23		// 5wSCanticoll:/J}3v4m 
#define FM1702_INTIVALERR			24		// 5wSC3uJ<;/:/J}3v4m 
#define FM1702_READVALERR			25		// 5wSC8_<66A?iV5:/J}3v4m 
#define FM1702_DESELECTERR		26		//
#define FM1702_CMD_ERR			42		// C|An4mNs 
////////////////////////////////////////////////////////////////////
//FM1702<D4fFw6(Re 
#define Page_Sel				0x00	// R3P4<D4fFw 
#define Command				0x01	// C|An<D4fFw 
#define FIFO						0x02	// 64WV=ZFIFO;:3e5DJdHkJd3v<D4fFw 
#define PrimaryStatus			0x03	// 7"IdFw=SJUFw<0FIFO5DW4L,<D4fFw1 
#define FIFO_Length				0x04	// 51G0FIFODZWV=ZJ}<D4fFw 
#define SecondaryStatus			0x05	// 8wVVW4L,<D4fFw2 
#define InterruptEn				0x06	// VP6OJ9D\/={V9<D4fFw 
#define Int_Req					0x07	// VP6OGkGs1jJ6<D4fFw 
#define Control					0x09	// ?XVF<D4fFw 
#define ErrorFlag					0x0A	// 4mNsW4L,<D4fFw 
#define CollPos					0x0B	// 3eM;<l2b<D4fFw 
#define TimerValue				0x0c	// 6(J1Fw51G0V5 
#define Bit_Frame				0x0F	// N;V!5wU{<D4fFw 
#define TxControl				0x11	// 7"KM?XVF<D4fFw 
#define CWConductance			0x12	// Q!Tq7"Id=ETX1:MTX27"IdLlO_5DWh?9 
#define ModConductance			0x13	// 6(ReJd3vG}6/Wh?9 
#define CoderControl				0x14	// 6(Re1`BkD#J=:MJ1VSF5BJ 
#define DecoderControl			0x1a	// =bBk?XVF<D4fFw 
#define RxControl1				0x19	// =SJUTvRf?XVF
#define RxControl2				0x1e	// =bBk?XVF<0Q!Tq=SJUT4 
#define RxWait					0x21	// Q!Tq7"Id:M=SJUV.<d5DJ1<d<d8t 
#define ChannelRedundancy		0x22	// RFM(5@<lQiD#J=IhVC<D4fFw 
#define CRCPresetLSB			0x23
#define CRCPresetMSB			0x24
#define MFOUTSelect				0x26	// mf OUT Q!TqEdVC<D4fFw 
#define TimerClock				0x2a	// 6(J1FwV\FZIhVC<D4fFw 
#define TimerControl				0x2b	// 6(J1Fw?XVF<D4fFw 
#define TimerReload				0x2c	// 6(J1Fw3uV5<D4fFw 
#define TypeSH					0x31	// IO:#1jW<Q!Tq<D4fFw
#define TestDigiSelect			0x3d	// 2bJT9\=EEdVC<D4fFw 
#define FM1702HARTPD			HQCRST=1// =xHkS2<~5u5gD#J=	
#define FM1702HARTPO			HQCRST=0// MK3vS2<~5t5gD#J=

//-------------------------- E2prom Memory Map Define-----------------------------//
				
#define SystemNumADD				0x0000				//0x00~0x02  	: 3 byte system serail number		
#define BeingUserFlagADD			0x0003				//==0xa5     		: this mater is ragister for system  	
														//=='other'	 	: dosen`t ragister for system 	
#define	HartCardLoadPWAdd			0x0004				//0X04~0X09  	: 6 BYTE hart card PASSWORD
#define 	SoftcardPWADD 				0x000a				//0x0a~0x0c		: 3 BYTE software card password				
#define	CurrentPriceADD				0x000d         	      		//0x0d~0x0e  	: 2 Bytes Current water Price 
#define	CurrentStartUsingDateADD	0x000f     			//0x0f~0x14  	: 6 Byte BCD Number year mth wek day hur min 
#define	MaterWorkStateByteADD  		0x0015		      		//bit[7]
														//bit[6]			
														//bit[5]
														//bit[4]				  
														//bit[5]				  
														//bit[6]				 
														//bit[7]
#define MeterNumberADD 			0x0016      	  		//0x0016~0x001c	:7byte meter serial number
#define CurrentCntPriceADD			0x001d				//0x001d~0x0021	:5byte Price for count
#define LieJiShuiLiangADD				0x0022				//0x0022~0x0026	: 	 
#define SmsObjNumber1ADD			0x0027				//0x0027~0x002c	
#define SmsObjNumber2ADD			0x002d				//0x002d~0x0032
#define SmsSeverNuberADD			0x0033				//0x0033~0x0038
#define Current6vBatVolt				0x0039				//0x0039: Hex ADvalue 
														//0x003a: BCD voltage value :X.X(V)
#define CurrentGuanYaLi				0x003b				//0x003b:Hex ADvalue
														//0x003c~0x003d:YaLi BCD value:0X.XX(Mpa)

#define E2NoteStartUpFlgADD			0x0ffc				//'s':startup flag,other char : have not startup 		
#define MempryFullFlg1ADD			0x0ffd				//'f'=full/'e'not full	
#define ConsumeNoteNumH1ADD		0x0ffe				//
#define ConsumeNoteNumL1ADD		0x0fff				//
#define ConsumeNoteStart1ADD		0x1000				//0x1000~0xffff 	1920 pieces note

    





//************************************* Functoin Statement *************************************//
//System initialize
void InitializeSystem(void);
//HT1623 DRV
extern void InitHT1623Port(void);	
extern unsigned char RdHT1623OneByte(unsigned char Id_addr);
extern void WrHT1623OneByte(unsigned char Toid_addr,unsigned char Todata);	
extern void SentCmdToHT1623(unsigned char ht1623cmd);
extern void Dsdisplay(void);
extern void Endisplay(void);
//FM1702 SPI DRV
extern unsigned char SpiRev(void);
extern void SpiSend(unsigned char var);
extern unsigned char SPIRead(unsigned char SpiAddress);
extern void SPIWrite(unsigned char SpiAddress,unsigned char dat);
//FM1702 DRV
extern void InitialFM1702(unsigned char mode);
extern void Set_BitFraming(unsigned char row, unsigned char col);
extern unsigned char Clear_FIFO(void);
extern void Write_FIFO(unsigned char count, unsigned char *buff);
extern unsigned char Read_FIFO(unsigned char *buff);
extern unsigned char Judge_Req(unsigned char *buff);
extern unsigned char Check_UID(void);
extern void Save_UID(unsigned char row, unsigned char col, unsigned char length);
extern unsigned char Command_Send(unsigned char count,unsigned char *buff,unsigned char Comm_Set);
extern unsigned char Read_E2(unsigned char lsb,unsigned char msb,unsigned char count,unsigned char *buff );
extern unsigned char Write_E2(unsigned char lsb,unsigned char msb,unsigned char count,unsigned char * buff );
extern unsigned char MIF_Halt(void);
extern char M500HostCodeKey(unsigned char *uncoded,signed char *coded);
extern unsigned char Load_keyE2_CPY(unsigned char Secnr, unsigned char Mode);
extern unsigned char Request(unsigned char mode);
extern unsigned char AntiColl(void);
extern unsigned char Select_Card(void);
extern unsigned char Authentication(unsigned char *UID, unsigned char SecNR, unsigned char mode);
extern unsigned char MIF_READ(unsigned char *buff, unsigned char Block_Adr);
extern unsigned char MIF_Write(unsigned char *buff, unsigned char Block_Adr);
//extern unsigned char MIF_Increment(unsigned char *buff, unsigned char Block_Adr);
//extern unsigned char MIF_Decrement(unsigned char *buff, unsigned char Block_Adr);
//extern unsigned char MIF_Restore(unsigned char Block_Adr);
//extern unsigned char HL_Active(unsigned char Block_Adr, unsigned char Mode);
//extern unsigned char MIF_Initival(unsigned char *buff, unsigned char Block_Adr);
//extern unsigned char HL_Read(unsigned char *buff, unsigned char Block_Adr, unsigned char Mode);
//extern unsigned char HL_Write(unsigned char *buff, unsigned char Block_Adr, unsigned char Mode);
//
void ANALYSE_CARD (void);
unsigned char IsFindCard(void);
unsigned char IsSelectCradOk(void);
unsigned char IsConflictOk(void);
unsigned char DownLoadm1CradKey(unsigned char sectornum,unsigned char keyab);	   //check M1 RFcrad hart sactor1 6byte keyword 
unsigned char ChkCsSysCrdSerNum(void);     //check crad bank1 cs ,system serial number ,crad cs
//unsigned char RdCardMomey(void);
unsigned char CardStopOp(void);
void Cmd_process(void);
//at24c512
extern void E2PRON_START (void);
extern void E2PROM_STOP (void);
extern unsigned char MCU_R_ACK (void);
extern void MCU_T_ACK (void);
extern void MCU_T_NOACK (void);
extern void MCU_T_1BYTE (unsigned char temp);
extern unsigned char MCU_R_1BYTE (void);
extern void WRITE_E2PROM(unsigned char *mcu_ramadd,unsigned int e2promadd,unsigned char n,unsigned char chipn);
extern void READ_E2PROM(unsigned char *mcu_ramadd,unsigned int e2promadd,unsigned char n,unsigned char chipn);
extern void WRITE_1_BYTE_E2PROM (unsigned char *mcu_ramadd,unsigned int e2promadd,unsigned char chipn);
extern void READ_1_BYTE_E2PROM(unsigned char *mcu_ramadd,unsigned int e2promadd,unsigned char chipn);
void InitE2prom(void);



//LCD Display Flsg
void OneLcdFlagSET(unsigned char dpy_memory);
void OneLcdFlagClear(unsigned char dpy_memory);
void WaterWheelStChg(void);
/*
void DYP_OpenValve_Flg(void);
void DPY_CloseValve_Flg(void);
void UnDPY_Valve_FLg(void);

void DYP_Failure_Flg(void);
void UnDPY_Failure_Flg(void);

void DYP_CardOn_Flg(void);
void UnDYP_CardOn_Flg(void);

void DPY_0Pow_Flg(void);
void DPY_1Pow_Flg(void);
void DPY_2Pow_Flg(void);
void DPY_3Pow_Flg(void);

void DPY_Full_SigleLv_Flg(void);
void DPY_Half_sigleLv_Flg(void);
void UnDPY_Sigle_Flg(void);

void DPY_WaterWheelSt1(void);
void DPY_WaterWheelSt2(void);
void DPY_WaterWheelSt3(void);


void DPY_CardYL_Area(void);     				
void DPY_CardJE_Area(void);					
void UnDPY_CardJEorYL_Area(void);

void DPY_SL_Area(void);		    				
void UnDPY_SL_Area(void);

void DPY_LJSL_Area(void);       				
void UnDPY_LJSL_Area(void);

void DPY_DateT(void);           					
void UnDPY_DateT(void);

void DPY_SDL_Area(void);						
void DPY_DJ_Area(void);						
void UnDPY_DJorSDL_Area(void);

void DPY_JE_Area(void);         					
void UnDPY_JE_Area(void);

void DPY_Time_Area(void);						
void UnDPY_Time_Area(void);
*/

//IniTialoze LCD Display
void InitLcdDpy(void);
//clear LCD Display
void ClearLcdMem(void);

void DPY_Time(void);
//Display One Number to LCD
void Wr1BCDNumToLcd(unsigned char NumToDpy , unsigned char LcdNumNum);
//Display Card YE/YL 
void DPY_Card_YLorJE_Num(unsigned char * databuf/*,unsigned char dpy_type*/);
//Display meter use ShuiLiang Jine
void DPY_SLorJE_Num(unsigned char * databuf,unsigned char dpy_type);
//Display meter Setting-price or setting value
void DPY_SDZorDJ_Num(unsigned char * databuf1,unsigned char dpy_type1);

void DPY_LJSLorRQ_Num(unsigned char * databuf1,unsigned char dpy_type1);

void DisplayErrCode(unsigned char errcode);

void ClearNumDpy(unsigned char WhatNumArea,unsigned char WhatflagAera);
//Clear one of five Number display area
 
void LcdWheelDisplay(void);
//
void DypWaitSetSDST(unsigned char tempdyptype,unsigned char tempdpyst);
//
unsigned char UserSettingValue(unsigned char * whichtypedatabuf);
//
void ClearRamValue(void);
//
extern unsigned char CheckCardIsMove(void);
//
void BCDBytesAdd(unsigned char *source,unsigned char *target,unsigned char length);
//
unsigned char  BCDBytesSub(unsigned char *source,unsigned char *target,unsigned char length);
//
//void Arithmetic_ShenYuShuiLiang(void);
//
unsigned char HexNumGuptoBcd(unsigned char * HexNumGup,char Guplth);
//
//void AddUsingValueOp(void);
//
//void ReflhDisplayVal(void);
//
unsigned char CntCurrDJ(void);
//
void GetCurrDJ(void);
//
void CntLieJiShuiLiang(void);
//
unsigned char WeOneCnToE2(void);
//
void ADTEST(unsigned char adwhichway);
//
void DPY_YaLi(void);
//
void CUT_YaLi(void);
//
void DPY_Volt(void);
//
void CUT_Volt(void);
//
unsigned char WrCdOneBnk(unsigned char whichbank);
unsigned char RdCdOneBnk(unsigned char whichbank);
unsigned char CntReturnWr(void);
//
void DpyRdCardOk(void);

//DS1302
extern void ResetDs(void);
extern void OutByte(unsigned char outdata);
extern unsigned char InByte(void);
extern void WriteByteDs(unsigned char addr,unsigned char outdata);
extern unsigned char ReadByteDs(unsigned char addr);
extern void WriteTime(unsigned char * time);
extern void ReadTime(unsigned char * time);
extern void En_dswork(void);
void ReflashLcdTimeDpy(unsigned char rflhtype);
//Serial port
void Uart1senddata(unsigned char num , unsigned char *dpoint);	//Uart1 sent datas 
void Uart2senddata(unsigned char num , unsigned char *dpoint);	//Uart2 sent datas 
void Uart1RevInt(void);

//Interruot ISR 
//******************** Interrup ISR statement *********************//
void		interrupth(void);						
#pragma		code Vector=0x08
void    	vector(void)
  {
			_asm GOTO interrupth _endasm
  }
//#pragma		interrupt interrupth save=PROD,PRODL,PRODH,TBLPTRL,TBLPTRH

//*****************************************************************//
void		interruptl(void);													
#pragma		code atlowVector=0x18
void 		atlowVector(void)
  {
			_asm GOTO interruptl _endasm
  }	
#pragma 	code
//#pragma		interruptlow interruptl save=PROD,PRODL,PRODH,TBLPTRL,TBLPTRH
//*****************************************************************//


//************************************** Variable statement  ***********************************// 

unsigned char countWTRCNT;		
//unsigned char KEY_B[6];						 	          	       //s50 card keyworda B
extern unsigned char RevBuffer[20];						       //Command data r/t buffer
unsigned char Systemnum[3];									//system serail number
//unsigned char Cardnum[3];									//card user serail number 
unsigned char  CdBnk4Grp[16];
unsigned char CdBnk5Grp[16];
unsigned char CdBnk6Grp[16];
extern unsigned char UID[5];							            	//S/N
extern unsigned char Secnr;			 	      		   		     	//Card Secnr  
extern unsigned char tagtype[2];			                       	     	//card
//---------------------------------------------------------------//


	   unsigned char systemflag;
//		0x80	set 1		recevice whole frame from infrared
//		0x40	set 1		recevice whole frame from GSM
//		0x20	set 1		water counter one unit 
//		0x10	set 1		will save use note
//		0x08	set 1		reading USER Card ok
//		0x04	set 1		user begin use water 
//		0x02	set 1		user will setting ues value
//		0x01	set 1		user sure to setting use valuem
	   unsigned char systemflag3;
//		0x01	set1		will into sleep mode
//		0x02	set1		fault precaution close velve
//		0x04	set1		user stop use water ,the stop key been turn on
//		0x08	set1		displaying LeiJiShuiLiang time
//		0x10	set1		
//		0x20	set1		read start card is ok
//		0x40	set1		left countkey trigger		
//		0x80	set1		right countkey trigger

        unsigned char systemflag2;
//		0x01     	set1        	key 'ok' is on 
//		0x02	set1		key 'selecet' is on
//		0x04	set1		key 'up' is on
//		0x08	set1		key 'down' is on  
//		0x10	set1		display Volt /YaLi
//		0x20     	set1			
//		0x40     	set1		Read card error flag
//		0x80     	set1		setting use water mode

	unsigned char systemflag4;
//		0x01     	set1        	1:low 6v power
//		0x02	set1		1:read clear card is ok

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -