📄 systemfun.c
字号:
unsigned char Byte2BCD(unsigned char Data)
{
unsigned char Rslt=0;
if (Data>=99) return 0x99;
while(Data>9)
{
Data-=10;
Rslt+=0x10;
}
return(Rslt+Data);
}
//*************Flash补充*************************/
void MemFill( unsigned char *Data_Ptr, unsigned int Len, unsigned char byte )
{
while ( Len>0 )
{
*Data_Ptr = byte;
Data_Ptr++;
Len--;
}
}
void Word2BCD2(unsigned char *Ptr, unsigned long Data)
{
*(Ptr+2)= 0;
*(Ptr+1)= 0;
*Ptr= 0;
while(Data>=100000)
{
Data-=100000;
*(Ptr+2) += 0x10;
}
while(Data>=10000)
{
Data-=10000;
*(Ptr+2) += 0x01;
}
while(Data>=1000)
{
Data-=1000;
*(Ptr+1) += 0x10;
}
while(Data>=100)
{
Data-=100;
*(Ptr+1) += 0x1;
}
*Ptr = Byte2BCD( (char)Data );
}
//看门狗检测
void WatchdogFun(void)
{
WDTCTL = WDT_ARST_1000;
BtCycle++;
if(BtCycle>1)
{
BtCycle = 0;
SystemFlag |= BT_Flag;
}
SystemFlag &= ~WatchDog_Flag;
}
//基本时钟
void BT_Process(void)
{
_NOP();
SystemFlag &= ~BT_Flag;
if(((POWER_TEST_IN & POWER_TEST_BIT) == 0) && ((ESPCTL & ESPEN) == ESPEN))
{
MBOUT1= modeIDLE; // ESP_IDLE;
MBOUT0= mSET_MODE;
while ((ESP430_STAT0 & ACTIVEME) == ACTIVEME); // Wait for Idle mode
TACCTL0 = 0;
if ((ESP430_STAT0 & ACTIVEME) == 0)
{
ESPCTL = 0;
_NOP();_NOP();_NOP();_NOP();_NOP();
_NOP();_NOP();_NOP();_NOP();_NOP();
ulActP1 = 0;
ulReActP = 0;
ulAppP = 0;
uiV1Rms = 0;
ulIRms = 0;
iPf = 0;
uiMainsFrequency = 0;
//MetParConv();
SCFI0 = FLLD_1; // Freq = 1.024MHz
SCFQCTL = 32 - 1;
FLL_CTL0 &= ~DCOPLUS;
MeterRunState &= ~Voltage_Flag;
SystemFlag |= DataSave_Flag;
}
}
else if(((POWER_TEST_IN & POWER_TEST_BIT) == POWER_TEST_BIT) && ((ESPCTL & ESPEN) == 0))
{
Goto_High_Freq();
Init_Analog_Front_End_ESP();
Init_ESP_Parameter(); //初始化ESP参数寄存器
Start_Measurement(); // 进入测量模式
MeterRunState |= Voltage_Flag;
}
if(MeterRunState&Skip_Second)
{
MeterRunState &= ~Skip_Second;
}
else
{
Clk_Sys();
Ms_1--;
if(Ms_1== 0)
{
Ms_1=5;
Pages++;
if(Pages>6)
Pages=0;
}
}
SystemFlag |= LCD_Flag;
}
void ESP_ENRDYFG_Process(void)
{
SystemFlag &= ~ESP_ENRDYFG;
uiV1Rms = ((unsigned long)uiV1Rms*Esp.uiV1Gain)/POW_2_15;
Word2BCD2(ubV1Rms,uiV1Rms);
ulIRms = ulIRms>>14;
ulIRms = (unsigned long long)ulIRms*Esp.ulIGain/POW_2_18;
Word2BCD2(ubIRms,ulIRms);
iPf = (unsigned long)uiPowerFct*10000/POW_2_14;
Word2BCD2(iPowerFct,iPf);
if(ullMainsCntBak==0)
{
uiMainsFrequency = 0;
}
else
{
ullMainsCntBak = ullMainsCntBak*104857600;
uiMainsFrequency = ullMainsCntBak/ulMainsPeriodBak;
}
//MetParConv();
SystemFlag |= LCD_Flag;
}
void LCD_Process(void)
{
SystemFlag &= ~LCD_Flag;
UpdataDisplay();
}
void KeyPage(void)
{
if(P1IFG & KEY_BIT)
{
P1IFG &= ~KEY_BIT;
bgbzh = 0x01;
bgtimer = 0x00;
BG_OUT |= BG_BIT;
Pages++;
SystemFlag |= LCD_Flag;
Ms_1 = 30;
if(Pages >6)
Pages = 0;
}
UpdataDisplay();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -