|
使用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; } }
|