//Define values to be used in the seconds counter //Using 10MHz clock the value is 2.5MHz -> 0x2625A0 split into 3 bytes #define COUNTH 0x26 #define COUNTM 0x25 #define COUNTL 0xA0 //Sensor 1200 pulses = 1Litre value to be loaded into Compare Timer register #define SENSH 0x04 #define SENSL 0xB0 //No. of events #define MAX_EV 7 //maximum hours for sprinkling. Define must be one more than actual hours #define MAX_ONH 5 // Bit No. for solenoid/relay output + on led #define SOLENOID 0x08 #define LED 0x20 //#define BUZZER 0x20 #define OUTPUT PORTA void setup(); void dotime(); void clock(unsigned char sec); void EventOnTime(); //void Display(unsigned char disp); void Display(); void LZero(char digit,char*st); void Usage(); void AddCost(); void FirstBoot(unsigned char addr,unsigned char structsize); void WriteData(unsigned char addr,unsigned char *data,unsigned char structsize); //24 bit register required split into High,Mid,Low byte unsigned char TickHigh,TickMid,TickLow,sec; char min,hour; char line; struct Time { unsigned char Hours; unsigned char Mins; unsigned char Day; unsigned char PeriodH; unsigned char PeriodM; }; Time Event[MAX_EV]; Time *pEvent; struct TotalsList { unsigned char CostMSD; unsigned char CostLSD; unsigned char TotalLSD; unsigned int TotalMSD; unsigned char TenLt; unsigned char HunLt; unsigned int Klt; }; TotalsList Totals; unsigned char *pTotals; enum EventFlags{DispE=0x07,Tmr1E=0x06,Tmr2=0x05,Tmr0=0x04,ChckE=0x02,KeyE=0x01}; struct SysFlags {BYTE NOFLG:1; BYTE KeyE:1; BYTE ChckE:1; BYTE NOFLG:1; BYTE Tmr0:1; BYTE Tmr2:1; BYTE Tmr1E:1; BYTE DispE:1;}; SysFlags SysFlag; unsigned char *Day[7]= { "Mon ","Tue ","Wed ","Thu ","Fri ","Sat ","Sun " }; // spaces 2 9 const unsigned char *Padd[]={" "}; unsigned char sep=':'; unsigned char Dy,z,disptype;