#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <intrins.h>
#include <math.h>
#include "ATT7025.h"
#include "lcdDrive.h"
#include "EepromDrv.h"
#include "uart1.h"
#include "COMDPROC.H"
#include "Emu.h"
#include "ATT7051.h"
#if 1
unsigned char BITADDRESS0 _at_ 0x20;
unsigned char BITADDRESS1 _at_ 0x21;
unsigned char BITADDRESS2 _at_ 0x22;
unsigned char BITADDRESS3 _at_ 0x23;
//qq #define CLEAR_ZERO_AVAILABILITY BITADDRESS0&=0x0DF //
//qq #define SET_ZERO_AVAILABILITY BITADDRESS0|=0x20
//qq #define GET_ZERO_AVAILABILITY BITADDRESS0&0x20
#define CLEAR_E_INCREASE_FLAG BITADDRESS0&=0x07F//
#define SET_E_INCREASE_FLAG BITADDRESS0|=0x80
#define GET_E_INCREASE_FLAG BITADDRESS0&0x80
#define CLEAR_BATTERY_TESTING_FLAG BITADDRESS2&=0x7F//
#define SET_BATTERY_TESTING_FLAG BITADDRESS2|=0x80
#define GET_BATTERY_TESTING_FLAG BITADDRESS2&0x80
#define CLEAR_BATTERY_VOLTAGE_LOW_FLAG BITADDRESS2&=0x0DF//
#define SET_BATTERY_VOLTAGE_LOW_FLAG BITADDRESS2|=0x20
#define GET_BATTERY_VOLTAGE_LOW_FLAG BITADDRESS2&0x20
#define CLEAR_SUB_MODE_FLAG BITADDRESS2&=0x0FB
#define SET_SUB_MODE_FLAG BITADDRESS2|=0x04
#define GET_SUB_MODE_FLAG BITADDRESS2&0x04
#define CLEAR_ENABLE_WR_EEPROM_FLAG BITADDRESS2&=0x0FD
#define SET_ENABLE_WR_EEPROM_FLAG BITADDRESS2|=0x02
#define GET_ENABLE_WR_EEPROM_FLAG BITADDRESS2&0x02
#define CLEAR_X_SIGN BITADDRESS3&=0x0FB
#define SET_X_SIGN BITADDRESS3|=0x04
#define GET_X_SIGN BITADDRESS3&0x04
#define CLEAR_POS_SIGN BITADDRESS3&=0x0F7
#define SET_POS_SIGN BITADDRESS3|=0x08
#define GET_POS_SIGN BITADDRESS3&0x08
#endif
//qq STATUS_t StateWord;
uchar TamperFlage=false,I2MeasFlage=false,PSMFlag=true,PowerDownFlag = false;
unsigned char InterfacePage;
unsigned char TEMP[16];
unsigned char NotCal=true;//qq 2009.04.15
unsigned char T20msFlag=0,T100msFlag=0, T500msFlag=0,T1sFlag=0,T10sFlag=0;
unsigned int xdata PP,QQ,RR,SS;
unsigned long xdata PPPP,QQQQ,RRRR,SSSS;
float xdata xxx,yyy,zzz;
unsigned char xdata I1_SOS[3],I2_SOS[3],P_SOS[2];
unsigned char LVD_Yes_Timer;
unsigned char BattTestTimer;
unsigned char POWER_UP_TIMER;
unsigned char BatFlashTimer;
unsigned char QQ_CLOCK;
unsigned char Test_EN_Timer;
unsigned char ant_CLOCK;
unsigned char COUNTER_for_10ms;
unsigned char UART0_RxBUF_POINTER_1;
unsigned char UART0_RxBUF_POINTER_2;
unsigned char UART0_RxBUF_POINTER_x;
unsigned char UART0_RxBUF_POINTER_y;
unsigned char UART0_TxBUF_POINTER_1;
//***********************************************************************************************/
void DelayTime(unsigned int len)
{
for(;len>0;len--);
}
void Init_MCU52(void)
{
RegWrEn();
//qq CLKCFG |= 0x02;//SYSCK1=1,fsys=fpri
CLKCFG |=0x06;//fsys=fpri=5529600Hz
// FMCFG |= 0x04; //BROMEN=1,enable Monitor rom
// FMCFG |= 0xE0;
// RegWrDis();
// (Autobaud);
// EICON |= 0x20; //BREAK PONIT IE
RegWrEn();
LCDCFG = 0x3F; //configure PA,PB,PC,with LCD output
P02CFG = 0x00; //configure P0 with GPIO, P2 with UART0,UART1,LVDIN,SF,PF,QF
P3CFG = 0x0A; //INT1=1;IRTX1=1,enable TX1 38K
TCON |= 0x04;//Int1 triggered on falling edge
//qq SUPDC = 0x4B;//enable EMU,BOR,LCD; disable TPS,LVD,I2C,SPI
SUPDC = 0x01;
// FMCFG |= 0xE0;
// IE = 0x46;
// SUPDC = SUPDC | 0x10; //close bor
}
void Init_T0(void)
{
TH0 = 0xF5; //mode1,1ms timer
TL0 = 0xD2;
}
void InitIo(void)
{
P0 = 0x00;
P1 = 0x00;
P2 = 0x00;
P3 = 0x00;
PTA = 0x00;
PTB = 0x00;
PTC = 0x00;
PTD = 0x00;
PTE = 0x01;
DDRA = 0xFF;
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0x00;
DDRE = 0x01;
DDRP0 = 0x00;
DDRP1 = 0x00;
DDRP2 = 0x0E3;
DDRP3 = 0x43;
}
#if 1
void FunCLEAR_POS_SIGN(void)
{
CLEAR_POS_SIGN;
}
void FunSET_POS_SIGN(void)
{
SET_POS_SIGN;
}
#endif
void InitRamDat(void)
{
uchar i;
SYSSCR = 0x16;
//qq CLEAR_ZERO_AVAILABILITY;
CLEAR_E_INCREASE_FLAG;
CLEAR_P_SIGN;
CLEAR_Q_SIGN;
CLEAR_BATTERY_TESTING_FLAG;
CLEAR_BATTERY_VOLTAGE_LOW_FLAG;
CLEAR_ENABLE_WR_EEPROM_FLAG;
CLEAR_X_SIGN;
CLEAR_POS_SIGN;
BatFlashTimer = 0;
Test_EN_Timer = 0;
LVD_Yes_Timer = 0;
BattTestTimer = 0;
ant_CLOCK = 0;
QQ_CLOCK = 0;
COUNTER_for_10ms = 0;
clsLDAT();
clsAllLcd();
InterfacePage = 1;
for(i=0;i<3;i++)
{
I1_SOS[i] = 0;
I2_SOS[i] = 0;
P_SOS[i] = 0;
}
for(i=0;i<64;i++)
{
UART0_RxBUF[i] = 0;
UART0_TxBUF[i] = 0;
UART1_RxBUF[i] = 0;
UART1_TxBUF[i] = 0;
}
UART0_TxBUF_CON = 1;
UART0_TxBUF_LEN = 0;
UART1_TxBUF_CON = 1;
UART1_TxBUF_LEN = 0;
RdEeBytes(EE_PFCNT, &CntDat.chard[0], 6);
RdEeBytes(EE_METER_ADDR, &gMeterPara.meterAddr[0], 10);//Addr+password
RdEeBytes(EE_EP_BCD, Energy.chard, 12);//EP,EQ,ES
memcpy(Energy_bak.chard, Energy.chard, 12);
}
//*********************************************************************************/
/*温度补偿显示*/
void wrTemperatuerToInterface(void)
{
uchar i;
char Tdata;
uint kk,jj;
CLEAR_X_SIGN;
Tdata = TEMPDR;
if(Tdata<0){
SET_X_SIGN;
i = -Tdata;
}
else{
i = Tdata;
}
kk = i;
jj = (uint)CalData.Item.Toff-62.5*kk;
i = (uchar)(jj>>8);
TEMP[4] = i;
if(GET_X_SIGN)
{
if(i>9){
displayChar(9, CHAR_negativ);
displayChar(10, i/10);
displayChar(11, i%10);
}
else{
displayChar(10, CHAR_negativ);
displayChar(11, i);
}
}
else
{
if(i>9){
displayChar(10, i/10);
displayChar(11, i%10);
}
else{
displayChar(11, i);
}
}
}
#if 0
void UpdateStateWord(void)
{
uchar Tmp;
if(T1sFlag)
{
Tmp = RSTSR;
}
}
#endif
void UpdateInterface(void)
{
uchar xdata Tempbuf[4];
pageToInterface(InterfacePage);
switch(InterfacePage)
{
case 23 :
if(GET_I2ANGLE_SIGN)
{displayIcon(Icon_Left,1);}
else
{displayIcon(Icon_Right,1);}
Tempbuf[1] = ((Ept.Angle_I2%1000000)/100000)*0x10 + (Ept.Angle_I2%100000)/10000;
Tempbuf[2] = ((Ept.Angle_I2%10000)/1000)*0x10 + (Ept.Angle_I2%1000)/100;
Tempbuf[3] = ((Ept.Angle_I2%100)/10)*0x10 + (Ept.Angle_I2%10);
wrFormat1ToInterface(&Tempbuf[1]);
break;
case 22 :
if(GET_I1ANGLE_SIGN)
{displayIcon(Icon_Left,1);}
else
{displayIcon(Icon_Right,1);}
Tempbuf[1] = ((Ept.Angle_I1%1000000)/100000)*0x10 + (Ept.Angle_I1%100000)/10000;
Tempbuf[2] = ((Ept.Angle_I1%10000)/1000)*0x10 + (Ept.Angle_I1%1000)/100;
Tempbuf[3] = ((Ept.Angle_I1%100)/10)*0x10 + (Ept.Angle_I1%10);
wrFormat1ToInterface(&Tempbuf[1]);
break;
case 21 :
displayIcon(Icon_kw,1);
if(GET_P1_SIGN)
{displayIcon(Icon_Left,1);}
else
{displayIcon(Icon_Right,1);}
Tempbuf[1] = ((Ept.Power_P1%1000000)/100000)*0x10 + (Ept.Power_P1%100000)/10000;
Tempbuf[2] = ((Ept.Power_P1%10000)/1000)*0x10 + (Ept.Power_P1%1000)/100;
Tempbuf[3] = ((Ept.Power_P1%100)/10)*0x10 + (Ept.Power_P1%10);
wrFormat1ToInterface(&Tempbuf[1]);
break;
case 20 :
if(GET_Q1_SIGN)
{displayIcon(Icon_Left,1);}
else
{displayIcon(Icon_Right,1);}
Tempbuf[1] = ((Ept.Power_Q1%1000000)/100000)*0x10 + (Ept.Power_Q1%100000)/10000;
Tempbuf[2] = ((Ept.Power_Q1%10000)/1000)*0x10 + (Ept.Power_Q1%1000)/100;
Tempbuf[3] = ((Ept.Power_Q1%100)/10)*0x10 + (Ept.Power_Q1%10);
wrFormat1ToInterface(&Tempbuf[1]);
break;
case 19 :
displayIcon(Icon_kw,1);
displayIcon(Icon_h,1);
Tempbuf[0] = ((Ept.Energy_P%100000000)/10000000)*0x10 + (Ept.Energy_P%10000000)/1000000;
Tempbuf[1] = ((Ept.Energy_P%1000000)/100000)*0x10 + (Ept.Energy_P%100000)/10000;
Tempbuf[2] = ((Ept.Energy_P%10000)/1000)*0x10 + (Ept.Energy_P%1000)/100;
Tempbuf[3] = ((Ept.Energy_P%100)/10)*0x10 + (Ept.Energy_P%10);
wrFormat3ToInterface(Tempbuf);
break;
case 18 :
Tempbuf[0] = ((Ept.Energy_Q%100000000)/10000000)*0x10 + (Ept.Energy_Q%10000000)/1000000;
Tempbuf[1] = ((Ept.Energy_Q%1000000)/100000)*0x10 + (Ept.
- 1
- 2
- 3
- 4
- 5
前往页