⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pulse.c

📁 本人花了几个月做的单相电能表程序
💻 C
字号:
#include <REG932.H>
#include <define.h>
#include <Stdio.h>
#include <Intrins.h>

//-----***-电量小数累加-***-----//
void PulseAdd(void)
{ 	
       unsigned char i;
       EDatafg=0;
       //EA=0;
       EX1=0;
       ES=0;
       EData[0]++;
       if(EData[0]>=0x64)
       {           
           EData[0]=0;
           wbyteiic(0xa0,0x00,0x00);
           EData[1]++;
           ET0=0;
           iicEDatasave(1);
           if(EData[1]>=0x64)
           {   
               EData[1]=0;
               wbyteiic(0xa0,0x01,0x00);
               EData[2]++;
               iicEDatasave(2);
               if(EData[2]>=0x64)
               {   
                   //ET0=1;
                   EData[2]=0;
                   wbyteiic(0xa0,0x02,0x00);
                   EData[3]++;
                   iicEDatasave(3);
                   if(EData[3]>=0x0a)
                   {
                       inpulse=0;
                       EData[0]=EData[1]=EData[2]=EData[3]=0;
                       for(i=0;i<4;i++)
                       {
                            wbyteiic(0xa0,i,0x00);
                       }
                       ET0=1;
                   }
                   else
                   {
                        ET0=1;
                   }
               }
               else
               {
                   ET0=1;
               }
            }
            else
            {
                ET0=1;
            }
        }
        else
        {
             _nop_();
        }
        //EA=1;
        EX1=1;
        ES=1;
}
/*
//-----***-7755状态电量信息状态采集-***-----//
void PulseParse(void)
{
    if(PulseParseFg)
    {
		PulseParseFg=0;
		if(AdDir)
        {
            ReverseSt=1;
            KBMASK &= 0xBF;//--------------------------------------关闭方向中断功能
            RevTimeStrSt = 1;
    		RevTimeEndSt = 0;
    		ShowBit[0]|=0x10;//------------------------------------液晶点亮反向
    		PulseParseFg=1;
        }
        else
        {
            ReverseSt=0;//-----------------------------------------清楚反向状态
            KBMASK |= 0x40;//--------------------------------------打开方向中断功能
            if(RevTimeStrSt)
            {
                RevTimeStrSt=0;
                RevTimeEndSt=1;
            }            
            ShowBit[0]&=0xEF;//------------------------------------液晶消隐反向
        }
        if(AdPulse)
        {
            PulseLedFg=1;
            KBMASK &= 0x7F;//--------------------------------------关闭脉冲中断功能一直到低电平后
            PulseParseFg=1;
        }
        else
        {
            PulseLedFg=0;
            KBMASK |= 0x80;//--------------------------------------打开方向中断功能
            PulseAddFg=1; 
        }
        if(RevTimeStrSt)//-----------------------------------------反向开始时间记录
        {
            if(RevTimeEndFg==0)
            {
                PgIIcEn=1;
                RevTimeEndFg=1;
                RevTimeStrFg=0;
                IicMuchByteWrite(0xa2,0x10,&TimeBuf[1],2);//-------写反向开始时间(分时)
                IicMuchByteWrite(0xa2,0x12,&TimeBuf[4],2);//-------写反向开始时间(日月)
                PgIIcEn=0;
            } 
        }
        if(RevTimeEndSt)//-----------------------------------------反向结束时间记录
        {
            if(RevTimeStrFg==0)
            {
                PgIIcEn=1;
                RevTimeStrFg=1;
                RevTimeEndFg=0;
                IicMuchByteWrite(0xa2,0x16,&TimeBuf[1],2);//-------写反向结束时间(分时)
                IicMuchByteWrite(0xa2,0x18,&TimeBuf[4],2);//-------写反向结束时间(日月)
                IicMuchByteWrite(0xa2,0x1c,RevTimeAdd,4);//--------写反向累计时间
                PgIIcEn=0;
            } 
        }
    }   
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -