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

📄 gy33485.c

📁 红外抄表系统的源代码。利用非电信号传送控制信息和数据信息
💻 C
📖 第 1 页 / 共 5 页
字号:

                  wr_s_eeprom(FaultTime,IpStartEeprom,sizeof(FaultTime));
                  IpStartEeprom += 6;
              }
              if(IntervalIpFlag)
                  Ip_interval_min = Ip_fault.min +(Ip_fault.hour-Ip_start_hour)*60 - Ip_start_min;
              if(Ip_interval_min >= 10)      //10
              {
                  Ip_fault_flag = 1;
                  IntervalIpFlag = 0;
                  Ip_enable = 1;
              }
              PreIpIn = Ip_in;
          }
      }
      else    //Ip no fault processing
      {
           if(PreIpIn) //fault stop processing
           {
               Ip_interval_min = 0;
               for(i=2;i<6;i++)
                   FaultTime[i] = Curtime[i];  //fault start time(include month,date,hour,minute)
               FaultTime[1] = Curtime[0];
               FaultTime[0] = Ip;
               wr_s_eeprom(FaultTime,IpStartEeprom,sizeof(FaultTime));
               IpStartEeprom += 6;
               if(!Ip_enable) IpStartEeprom -= 12;
               else Ip_enable = 0;
           }
    	   Ip_fault_flag = 0;
    	   PreIpIn = Ip_in;
      }
//=============================================
/*      UX_in=1;
      //if(!UX_in)  //UX fault processing
      if(UX_in)  //UX fault processing
      {
         UX_fault.sec=UX_fault.sec+1;
         if(UX_fault.sec>=60)
         {
              UX_fault.sec = 0;
              UX_fault.min++;
              if(UX_fault.min>=60)
              {
                   UX_fault.min = 0;
                   UX_fault.hour++;
                   if(UX_fault.hour>=10000)
                   {
                        UX_fault.hour = 9999;
                   }
              }
         }
         wr_s_eeprom((uchar idata *)(&UX_fault), UX_EEPROM, sizeof(UX_fault));
	       if(!PreUXIn)
	       {
	       	   // start UX_fault  ,read start time,read UX_fault.min
	       	   UX_start_min = UX_fault.min;
	       	   UXDis5Start = 1;
             for(i=0;i<2;i++)
	       	       UXFault_start_time[i] = Curtime[i+4];  //fault start time(include month,date,hour,minute)
	       }
	       if(UX_start_min > UX_fault.min)
	           UX_interval_min = UX_fault.min + 60 - UX_start_min;
	       else if(UX_start_min < UX_fault.min)
	       	   UX_interval_min = UX_fault.min - UX_start_min;
	       if(UX_interval_min >= 1)      //10
	       	   UX_fault_flag = 1;
         PreUXIn = UX_in;
     }
     else
    {
    	   if(PreUXIn)   //fault stop processing
    	   	{
    	   		  //UXDis5Stop = 1;
    	   		  UX_interval_min = 0;
    	   		  for(i=0;i<2;i++)
	       	       UXFault_stop_time[i] = Curtime[i+4];  //fault start time(include month,date,hour,minute)
    	   	}
    	   UX_fault_flag = 0;
    	   PreUXIn = UX_in;
    }
*/
      mail_box_flag = 0;
}

void xx(void)
{
    Ua_fault_flag = 0;
    Ub_fault_flag = 0;
    Uc_fault_flag = 0;
    Ia_fault_flag = 0;
    Ib_fault_flag = 0;
    Ic_fault_flag = 0;
    Ip_fault_flag = 0;
    UX_fault_flag = 0;
}
void clear(void)
{
    uint i,j;
    uchar dis_play[6];
    fbase = 0;
    prefbase = 0;

/*    UaStartEeprom = 72;
    UbStartEeprom = 96;
    UcStartEeprom = 120;
    IaStartEeprom = 144;
    IcStartEeprom = 168;
    IpStartEeprom = 192;
*/
    UaStartEeprom = 80;
    UbStartEeprom = 200;
    UcStartEeprom = 320;
    IaStartEeprom = 440;
    IcStartEeprom = 560;
    IpStartEeprom = 680;

    for(i=0;i<9;i++)
        disnum[i] = 0;
    wr_s_eeprom(disnum, Num_EEPROM, sizeof(disnum[0]));

    wr_s_eeprom(disnum+1, 66, sizeof(disnum[1]));
    wr_s_eeprom(disnum+2, 67, sizeof(disnum[2]));
    wr_s_eeprom(disnum+3, 68, sizeof(disnum[3]));
    wr_s_eeprom(disnum+4, 69, sizeof(disnum[4]));
    wr_s_eeprom(disnum+6, 70, sizeof(disnum[6]));
    wr_s_eeprom(disnum+7, 70, sizeof(disnum[7]));

    for(i=0;i<sizeof(Ua_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ua_EEPROM, sizeof(Ua_fault));

    for(i=0;i<sizeof(Ub_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ub_EEPROM, sizeof(Ub_fault));

    for(i=0;i<sizeof(Uc_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Uc_EEPROM, sizeof(Uc_fault));

    for(i=0;i<sizeof(Ia_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ia_EEPROM, sizeof(Ia_fault));

    for(i=0;i<sizeof(Ib_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ib_EEPROM, sizeof(Ib_fault));

    for(i=0;i<sizeof(Ic_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ic_EEPROM, sizeof(Ic_fault));

    for(i=0;i<sizeof(Ip_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, Ip_EEPROM, sizeof(Ip_fault));

    for(i=0;i<sizeof(UX_fault);i++)  dis_play[i]=0x0;
    wr_s_eeprom(dis_play, UX_EEPROM, sizeof(UX_fault));


for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, UaStartEeprom, sizeof(FaultTime));
    UaStartEeprom +=6;
}
UaStartEeprom = 80;
for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, UbStartEeprom, sizeof(FaultTime));
    UbStartEeprom +=6;
}
UbStartEeprom = 200;
for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, UcStartEeprom, sizeof(FaultTime));
    UcStartEeprom +=6;
}
UcStartEeprom = 320;
for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, IaStartEeprom, sizeof(FaultTime));
    IaStartEeprom +=6;
}
IaStartEeprom = 440;
for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, IcStartEeprom, sizeof(FaultTime));
    IcStartEeprom +=6;
}
IcStartEeprom = 560;
for(j=0;j<20;j++)
{
    for(i=0;i<sizeof(FaultTime);i++) dis_play[i]=0x0;
    wr_s_eeprom(dis_play, IpStartEeprom, sizeof(FaultTime));
    IpStartEeprom +=6;
}
IpStartEeprom = 680;
///////////////////////////////////////////////////////
    Ua_fault.sec = 0;
    Ua_fault.min = 0;
    Ua_fault.hour= 0;
    Ub_fault.sec = 0;
    Ub_fault.min = 0;
    Ub_fault.hour= 0;
    Uc_fault.sec = 0;
    Uc_fault.min = 0;
    Uc_fault.hour= 0;
    Ia_fault.sec = 0;
    Ia_fault.min = 0;
    Ia_fault.hour= 0;
    Ib_fault.sec = 0;
    Ib_fault.min = 0;
    Ib_fault.hour= 0;
    Ic_fault.sec = 0;
    Ic_fault.min = 0;
    Ic_fault.hour= 0;
    Ip_fault.sec = 0;
    Ip_fault.min = 0;
    Ip_fault.hour= 0;
    UX_fault.sec = 0;
    UX_fault.min = 0;
    UX_fault.hour= 0;


Ua_interval_min = 0;
Ub_interval_min = 0;
Uc_interval_min = 0;
Ia_interval_min = 0;
Ic_interval_min = 0;
Ip_interval_min = 0;


Init_IC1();
LCD_WD2(26,0x0F);
a_stop = 0;
a_start = 0;
//TR0 = 0;
 TR2=0;

IdNum = 0;

disnum_flag = 0;
}

//*************************eeprom*********************************//
void txst(void) //这是发送时钟IC的开始条件
{
    SCL = 1;
    SDA = 1;
    delay(DEL10);
    SDA = 0;
    delay(DEL10);
    SCL = 0;
}
void txstop(void) //这是发送时钟IC的结束条件
{
    SDA = 0;            // stop writing
    delay(DEL10);
    SCL = 1;
    delay(DEL10);
    SDA = 1;
}
void wrbit(bit b)
{
    SDA = b;
    delay(DEL10);
    SCL = 1;
    delay(DEL10);
    SCL = 0;
    delay(DEL10);
}
void wrbyte(uchar c)
{
    B = c;
    wrbit(b7);
    wrbit(b6);
    wrbit(b5);
    wrbit(b4);
    wrbit(b3);
    wrbit(b2);
    wrbit(b1);
    wrbit(b0);
}
void wr_s_eeprom(uchar *buf, uint start_address, uchar len)
{
    uint i,j;
    EEPROM_Enable = 0;
    for(i=start_address,j=0;i<start_address+len;i++,j++)
    {
        // EA = 0;
         WriteOneByte(i,buf[j]);
        // EA = 1;
    }
    EEPROM_Enable = 1;
    KickDog();
}
bit rdbit(void)
{
    SDA = 1;        // ready for reading
    delay(DEL10);
    SCL = 1;
    delay(DEL10);
    b0 = SDA;
    delay(DEL10);
    SCL = 0;
    delay(DEL10);
    return(b0);
}
uchar rdbyte(void)
{
    b7 = rdbit();
    b6 = rdbit();
    b5 = rdbit();
    b4 = rdbit();
    b3 = rdbit();
    b2 = rdbit();
    b1 = rdbit();
    b0 = rdbit();
    SDA = 1;
    delay(DEL10);
    SCL = 1;
    delay(DEL10);
    SCL = 0;
    delay(DEL10);
    SDA = 0;
    delay(DEL10);
    return(B);
}
void rd_s_eeprom(uchar *buf, uint start_address, uchar len)
{
    uint i, j;
    EEPROM_Enable = 0;
    for(i=start_address,j=0;i<start_address+len;i++, j++)
    {
         //EA = 0;
         buf[j]=ReadOneByte(i);
         //EA = 1;
    }
    EEPROM_Enable = 1;
}
//////////////////////////////////////?????????????????????????need test
void WriteOneByte(uint address,uchar ch)
{
	  uchar AddrH,AddrL;
	  AddrH = ((address&0x7FF)>>7)&0x0E;  //page
	  AddrL = address&0x0FF;         //address
    txst();               // start I2C
    wrbyte(0xa0|AddrH);
    while(rdbit()==1);     // waiting for the response bit
    wrbyte(AddrL);
    while(rdbit()==1);
    wrbyte(ch);
    while(rdbit()==1);
     txstop();
     delay(DELL10);
}
///////////////////////////////////////
uchar ReadOneByte(uint address)
{
    uchar uch;
	  uchar AddrH,AddrL;
	  AddrH = ((address&0x7FF)>>7)&0x0E;  //page
	  AddrL = address&0x0FF;         //address
    txst();
    wrbyte(0xa0|AddrH);             // R/W = 0 for address writing
    while(rdbit()==1);          // waiting for the response bit
    wrbyte(AddrL);
    while(rdbit()==1);         // waiting for the response bit
    SDA = 1;
    SCL = 1;
    txst();
    wrbyte(0xa1|AddrH);              // R/W = 1 for reading
    while(rdbit()==1);          // waiting for the response bit
    uch = rdbyte();
    txstop();
    return(uch);

⌨️ 快捷键说明

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