📄 pulseparse.txt
字号:
使用LPC932制作的一款电表---PulseParse
redbug 发表于 2005-10-14 16:36:00
#i nclude <REG932.H>
#i nclude <define.h>
#i nclude <Stdio.h>
#i nclude <Intrins.h>
//数据累加
void SumData(void)
{
//总电量累加
PulseData=PulseData+1;
if(PulseData==16)
{
SumPulseData[0]=SumPulseData[0]+1;
if(SumPulseData[0]==0x64)
{
SumPulseData[0]=0x00;
SumPulseData[1]=SumPulseData[1]+1;
if(SumPulseData[1]==0x64)
{
SumPulseData[1]=0x00;
SumPulseData[2]=SumPulseData[2]+1;
if(SumPulseData[2]==0x64)
{
SumPulseData[2]=0x00;
SumPulseData[3]=SumPulseData[3]+1;
if(SumPulseData[3]==0x64)
{
SumPulseData[0]=0x00;
SumPulseData[1]=0x00;
SumPulseData[2]=0x00;
SumPulseData[3]=0x00;
}
}
}
}
}
//反向电量累加
if(ReverseFgToData)
{
if(PulseData==16)
{
ReversePulseData[0]=ReversePulseData[0]+1;
if(ReversePulseData[0]==0x64)
{
ReversePulseData[0]=0x00;
ReversePulseData[1]=ReversePulseData[1]+1;
if(ReversePulseData[1]==0x64)
{
ReversePulseData[1]=0x00;
ReversePulseData[2]=ReversePulseData[2]+1;
if(ReversePulseData[2]==0x64)
{
ReversePulseData[2]=0x00;
ReversePulseData[3]=ReversePulseData[3]+1;
if(ReversePulseData[3]==0x64)
{
ReversePulseData[0]=0x00;
ReversePulseData[1]=0x00;
ReversePulseData[2]=0x00;
ReversePulseData[3]=0x00;
}
}
}
}
}
}
//峰电量累加
if(FengFg)
{
if(PulseData==16)
{
FengPulseData[0]=FengPulseData[0]+1;
if(FengPulseData[0]==0x64)
{
FengPulseData[0]=0x00;
FengPulseData[1]=FengPulseData[1]+1;
if(ReversePulseData[1]==0x64)
{
FengPulseData[1]=0x00;
FengPulseData[2]=FengPulseData[2]+1;
if(ReversePulseData[2]==0x64)
{
FengPulseData[2]=0x00;
FengPulseData[3]=FengPulseData[3]+1;
if(FengPulseData[3]==0x64)
{
FengPulseData[0]=0x00;
FengPulseData[1]=0x00;
FengPulseData[2]=0x00;
FengPulseData[3]=0x00;
}
}
}
}
}
}
//平电量累加
if(PingFg)
{
if(PulseData==16)
{
PingPulseData[0]=PingPulseData[0]+1;
if(PingPulseData[0]==0x64)
{
PingPulseData[0]=0x00;
PingPulseData[1]=PingPulseData[1]+1;
if(PingPulseData[1]==0x64)
{
PingPulseData[1]=0x00;
PingPulseData[2]=PingPulseData[2]+1;
if(PingPulseData[2]==0x64)
{
PingPulseData[2]=0x00;
PingPulseData[3]=PingPulseData[3]+1;
if(PingPulseData[3]==0x64)
{
PingPulseData[0]=0x00;
PingPulseData[1]=0x00;
PingPulseData[2]=0x00;
PingPulseData[3]=0x00;
}
}
}
}
}
}
//谷电量累加
if(GuFg)
{
if(PulseData==16)
{
GuPulseData[0]=GuPulseData[0]+1;
if(GuPulseData[0]==0x64)
{
GuPulseData[0]=0x00;
GuPulseData[1]=GuPulseData[1]+1;
if(GuPulseData[1]==0x64)
{
GuPulseData[1]=0x00;
GuPulseData[2]=GuPulseData[2]+1;
if(GuPulseData[2]==0x64)
{
GuPulseData[2]=0x00;
GuPulseData[3]=GuPulseData[3]+1;
if(GuPulseData[3]==0x64)
{
GuPulseData[0]=0x00;
GuPulseData[1]=0x00;
GuPulseData[2]=0x00;
GuPulseData[3]=0x00;
}
}
}
}
}
}
if(PulseData==16)
{
PulseData=0;
}
}
void PulseParse(void)
{
if(PulseParseFg)
{
KeyTemp=~P0&0x30;
KeyTemp=KeyTemp>>4;
switch(KeyTemp)
{
case 0x00 : //正向电量脉冲采集---累积正向电量
if(SumBit)
{
SumData();
SumBit=0;
}
ReverseFgToData=0;
ReverseFgToLcd=0;
KBMASK=KBMASK|0x30;
EKBI=1;
break;
case 0x01 : //正向电量脉冲有效标志
SumBit=1;
ReverseFgToData=0;
ReverseFgToLcd=0;
KBMASK=KBMASK|0x10;
EKBI=1;
break;
case 0x02 : //反向电量脉冲标志+脉冲有效---累积标志---反向电量
ReverseFgToData=1;
ReverseFgToLcd=1;
if(AddRev)
{
SumData();
AddRev=0;
}
KBMASK=KBMASK|0x20;
EKBI=1;
break;
case 0x03 :
AddRev=1;
KBMASK=KBMASK|0x30;
EKBI=1;
break;
}
PulseParseFg=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -