Sei sulla pagina 1di 4

//Including Header files

#include "S52.h"
#include<vreg52.h>
#include<intrins.h>
// Global variables
extern unsigned char FMUnit;
extern unsigned char munit;
extern unsigned char unit;
extern unsigned char pulsec;
extern unsigned char flag;
extern unsigned char idata RData[80];
extern unsigned char idata RCunits[6];
//extern unsigned char totalunits[6];
uc units[3], milliunits[3] ;
// Functions Prototype
void Welcome(void);
void Main_Scr(void);
void Conv(unsigned char *st,unsigned char tmp);
//void coldata(uc *units,uc *milliunits);
void extractRCunits();
// Main Function
void main(void)
{
SConfig();
FMUnit = 0;
munit = 0;
unit = 0;
pulsec = 0;
EA=1;
EX0=1;
ES=1;
Welcome();
Main_Scr();

// Displays the welcome message

/*------------------------------------------------------------*/
// Welcome Display Function
void Welcome(void)
{
uc RCflag=0;
if(!(*RCunits))
{
RCunits[0]='0';
RCunits[1]='0';
RCunits[2]='.';
RCunits[3]='0';
RCunits[4]='0';
RCunits[5]='\0';
}
ClrLCD();
lprintf("TECH",1,1);
Delay(200);
lprintf("Energy Meter",1,1);

Delay(200);
do
{
RCflag = chk_units("00.00",RCunits);
Delay(50);
if( RCflag )
{
Recharge();
}
}while(RCflag);
ClrLCD();
lprintf("Recharged units",1,1);
Delay(50);
lprintf(RCunits,2,1);
Delay(250);
extractRCunits();
Delay(50);
}
/*------------------------------------------------------------*/

/*------------------------------------------------------------*/
// Main Screen of the DAS Transmitter
void Main_Scr(void)
{
uc unitstr[5],milliunitstr[5];
uc RCflag;
ClrLCD();
lprintf("Energy Meter :",1,1);
lprintf("Units: ",2,1);
lprintf("00:00",2,8);
RCflag=0;
while(1)
{
RCflag=0;
//CY=P0_7;
// This is to check manually
//P3_2=CY;
// These line when ADE7757 board is connected
if(FMUnit)
{
munit++;
if(munit==100)
{
unit++;
Conv(unitstr,unit);
lprintf(unitstr,2,8);
// Send(unitstr);
LCD_Data(':');
//Send_Char(':');
munit=0;
}
Conv(milliunitstr,munit);
lprintf(milliunitstr,2,11);
// Send(milliunitstr);
FMUnit=0;
}
if(!(*unitstr))

{
unitstr[0]='0';
unitstr[1]='0';
unitstr[2]='0';
unitstr[3]='\0';
}
if(!(*milliunitstr))
{
milliunitstr[0]='0';
milliunitstr[1]='0';
milliunitstr[2]='0';
milliunitstr[3]='\0';
}
//coldata(unitstr,milliunitstr);
RCflag = chk_units(units,unitstr);
Delay(10);
if( RCflag )
{
// lprintf("milliunitscheck",1,5);
//Delay(50);
RCflag = 0;
RCflag = chk_units(milliunits,milliunitstr);
Delay(50);
LCD_Cmd(0x8d);
LCD_Data(RCflag+0x30);
Delay(50);
if(RCflag)
{
if((*RCunits))
{
RCunits[0]='0';
RCunits[1]='0';
RCunits[2]='.';
RCunits[3]='0';
RCunits[4]='0';
RCunits[5]='\0';
}
Recharge();
ClrLCD();
lprintf("Recharged units",1,1);
Delay(50);
lprintf(RCunits,2,1);
Delay(250);
RCflag=0;
extractRCunits();
Delay(50);
ClrLCD();
lprintf("Energy Meter :",1,1);
lprintf("Units: ",2,1);
lprintf("00:00",2,8);
Delay(50);
FMUnit = 0;
munit = 0;
unit = 0;
pulsec = 0;
if((*unitstr))
{
unitstr[0]='0';
unitstr[1]='0';
unitstr[2]='0';

unitstr[3]='\0';
}
if((*milliunitstr))
{
milliunitstr[0]='0';
milliunitstr[1]='0';
milliunitstr[2]='0';
milliunitstr[3]='\0';
}
}
}
} // End of While
} // End of Main_Scr()
/*------------------------------------------------------------*/
// Function to Convert a no. to String
void Conv(unsigned char *st,unsigned char tmp)
{
uc b,c,d;
b=10;
b=tmp/b;
c=b;
b=10;
b=tmp%b;
d=b;
c=c+0x30;
if(c=='\0')
c=0x30;
d=d+0x30;
if(d=='\0')
d=0x30;
*st=c;
st++;
*st=d;
st++;
*st='\0';
//lprintf(st,1,1);
}
/*------------------------------------------------------------*/
// Function to Convert a no. to String
void extractRCunits(void)
{
units[0]=RCunits[0];
units[1]=RCunits[1];
units[2]='\0';
Delay(25);
milliunits[0]=RCunits[3];
milliunits[1]=RCunits[4];
milliunits[2]='\0';
}
/*------------------------------------------------------------*/

Potrebbero piacerti anche