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

📄 mylib.c

📁 红外抄表系统的源代码。利用非电信号传送控制信息和数据信息
💻 C
📖 第 1 页 / 共 3 页
字号:
                 TickerIc = 0;
                 Ic_interpret();
             }
         }
         if(TickerIc>=Timing3)
         {
             disp_stop5(Ic);
             TickerIc = 0;
             Ic_a_flag = 0;
             Ic_interpret();
         }
     }
}

void Ia_interpret(void)
{
     if(IcDis5Start)
         a_b = 4;
     else if(IpDis5Start)
         a_b = 5;
     else if(UaDis5Start)
         a_b = 0;
     else if(UbDis5Start)
         a_b = 1;
     else if(UcDis5Start)
         a_b = 2;
     else
         a_b = 3;
}
void dispIa(void)
{
     if(IaDis5Start)
     {
     	    if(!UaDis5Start &&!UbDis5Start &&!UcDis5Start&& !i_flag)
         {
             a_b = 3;
             i_flag = 1;
             TickerIa = Timing1;
         }
         if(TickerIa>=Timing1 && !Ia_a_flag)
         {
             disp_start5(Ia);
             Ia_a_flag = 1;
             Ia_b_flag = 0;
         }
         if(TickerIa>=Timing2 && !Ia_b_flag)
         {
             disp_fault_time(Ia);
             Ia_b_flag = 1;
             if(!IaDis5Stop)
             {
                 Ia_a_flag = 0;
                 TickerIa = 0;
                 Ia_interpret();
             }
         }
         if(TickerIa>=Timing3)
         {
             disp_stop5(Ia);
             TickerIa = 0;
             Ia_a_flag = 0;
             Ia_interpret();
         }
     }
}
void Ua_interpret(void)
{
     if(UbDis5Start)
         a_b = 1;
     else if(UcDis5Start)
         a_b = 2;
     else if(IaDis5Start)
         a_b = 3;
     else if(IcDis5Start)
         a_b = 4;
     else if(IpDis5Start)
         a_b = 5;
     else
         a_b = 0;
}
void dispUa(void)
{
     if(UaDis5Start)
     {
     	    if(!i_flag)
         {
         	   a_b = 0;
             i_flag = 1;
             TickerUa = Timing1;
         }
         if(TickerUa>=Timing1 && !Ua_a_flag)
         {
             disp_start5(Ua);
             Ua_a_flag = 1;
             Ua_b_flag = 0;
         }
         if(TickerUa>=Timing2 && !Ua_b_flag)
         {
             disp_fault_time(Ua);
             Ua_b_flag = 1;
             if(!UaDis5Stop)
             {
                 Ua_a_flag = 0;
                 TickerUa = 0;
                 Ua_interpret();
             }
         }
         if(TickerUa>=Timing3)
         {
             disp_stop5(Ua);
             TickerUa = 0;
             Ua_a_flag = 0;
             Ua_interpret();
         }
     }
}
void Ub_interpret(void)
{
     if(UcDis5Start)
         a_b = 2;
     else if(IaDis5Start)
         a_b = 3;
     else if(IcDis5Start)
         a_b = 4;
     else if(IpDis5Start)
         a_b = 5;
     else if(UaDis5Start)
         a_b = 0;
     else
         a_b = 1;
}
void dispUb(void)
{
     if(UbDis5Start)
     {
         if(!UaDis5Start && !i_flag)
         {
             a_b = 1;
             i_flag = 1;
             TickerUb = Timing1;
         }
         if(TickerUb>=Timing1 && !Ub_a_flag)
         {
             disp_start5(Ub);
             Ub_a_flag = 1;
             Ub_b_flag = 0;
         }
         if(TickerUb>=Timing2 && !Ub_b_flag)
         {
             disp_fault_time(Ub);
             Ub_b_flag = 1;
             if(!UbDis5Stop)
             {
                 Ub_a_flag = 0;
                 TickerUb = 0;
                 Ub_interpret();
             }
         }
         if(TickerUb>=Timing3)
         {
             disp_stop5(Ub);
             TickerUb = 0;
             Ub_a_flag = 0;
             Ub_interpret();
         }
     }
}
void Uc_interpret(void)
{
     if(IaDis5Start)
         a_b = 3;
     else if(IcDis5Start)
         a_b = 4;
     else if(IpDis5Start)
         a_b = 5;
     else if(UaDis5Start)
         a_b = 0;
     else if(UbDis5Start)
         a_b = 1;
     else
         a_b = 2;
}
void dispUc(void)
{
     if(UcDis5Start)
     {
         if(!UaDis5Start && !UbDis5Start&&!i_flag)
         {
             a_b = 2;
             i_flag = 1;
              TickerUc = Timing1;
         }
         if(TickerUc>=Timing1 && !Uc_a_flag)
         {
             disp_start5(Uc);
             Uc_a_flag = 1;
             Uc_b_flag = 0;
         }
         if(TickerUc>=Timing2 && !Uc_b_flag)
         {
             disp_fault_time(Uc);
             Uc_b_flag = 1;
             if(!UcDis5Stop)
             {
                 Uc_a_flag = 0;
                 TickerUc = 0;
                 Uc_interpret();
             }
         }
         if(TickerUc>=Timing3)
         {
             disp_stop5(Uc);
             TickerUc = 0;
             Uc_a_flag = 0;
             Uc_interpret();
         }
     }
}*/
/////////////////////////////////5_17 shaded
/*void disp_start5(uchar type)
{
     a_stop = 0;      //for don't display  "终/到"
     a_start = 1;     //for display "起始"
     switch(type)
     {
        case Ua:
            if(UaDis5Start)
            {
                DisUaNumFlag = 1;  //test for number of fault
                DisUbNumFlag = 0;
                DisUcNumFlag = 0;
                DisIaNumFlag = 0;
                DisIcNumFlag = 0;
                DisIpNumFlag = 0;
                Phase_select(Phase_A);
                DispIC1_start_stop(S1,UaFault_start_time);  //
                UaDis5Fault = 1;
            }
         break;
         case Ub:
            if(UbDis5Start)
            {
                DisUbNumFlag = 1;  //test for number of fault
                DisUaNumFlag = 0;
                DisUcNumFlag = 0;
                DisIaNumFlag = 0;
                DisIcNumFlag = 0;
                DisIpNumFlag = 0;
                Phase_select(Phase_B);
                DispIC1_start_stop(S1,UbFault_start_time);  //
                UbDis5Fault = 1;
            }
         break;
         case Uc:
            if(UcDis5Start)
            {
                DisUcNumFlag = 1;  //test for number of fault
                DisUbNumFlag = 0;
                DisUaNumFlag = 0;
                DisIaNumFlag = 0;
                DisIcNumFlag = 0;
                DisIpNumFlag = 0;
                Phase_select(Phase_C);
                DispIC1_start_stop(S1,UcFault_start_time);  //
                UcDis5Fault = 1;
            }
         break;
         case Ia:
            if(IaDis5Start)
            {
                DisIaNumFlag = 1;  //test for number of fault
                DisUaNumFlag = 0;
                DisUbNumFlag = 0;
                DisUcNumFlag = 0;
                DisIcNumFlag = 0;
                DisIpNumFlag = 0;
                Phase_select(Phase_A);
                DispIC1_start_stop(S2,IaFault_start_time);  //
                IaDis5Fault = 1;
            }
         break;
         case Ic:
            if(IcDis5Start)
            {
                DisIcNumFlag = 1;  //test for number of fault
                DisUaNumFlag = 0;
                DisUbNumFlag = 0;
                DisUcNumFlag = 0;
                DisIaNumFlag = 0;
                DisIpNumFlag = 0;
                Phase_select(Phase_C);
                DispIC1_start_stop(S2,IcFault_start_time);  //
                IcDis5Fault = 1;
            }
         break;
         case Ip:
            if(IpDis5Start)
            {
                DisIpNumFlag = 1;  //test for number of fault
                DisUaNumFlag = 0;
                DisUbNumFlag = 0;
                DisUcNumFlag = 0;
                DisIcNumFlag = 0;
                DisIaNumFlag = 0;
                LCD_WD2(26,0x08);
                DispIC1_start_stop(S3,IpFault_start_time);  //
                IpDis5Fault = 1;
            }
         break;
         default:
         break;
     }
}*/
/*void disp_fault_time(uchar type)
{
    a_start = 0;      //for don't display "起始" ,default display "当前"
    switch(type)
    {
        case Ua:
            if(UaDis5Fault)
            {
                Phase_select(Phase_A);
                DispIC1(S1,Ua_fault);
            }
        break;
        case Ub:
            if(UbDis5Fault)
            {
                Phase_select(Phase_B);
                DispIC1(S1,Ub_fault);
            }
        break;
        case Uc:
            if(UcDis5Fault)
            {
                Phase_select(Phase_C);
                DispIC1(S1,Uc_fault);
            }
        break;
        case Ia:
            if(IaDis5Fault)
            {
                Phase_select(Phase_A);
                DispIC1(S2,Ia_fault);
            }
        break;
        case Ic:
            if(IcDis5Fault)
            {
                Phase_select(Phase_C);
                DispIC1(S2,Ic_fault);
            }
        break;
        case Ip:
            if(IpDis5Fault)
            {
            	  LCD_WD2(26,0x08);           //no display A,B,C
                DispIC1(S3,Ip_fault);
            }
        break;
        default:
        break;
    }
}
void disp_stop5(uchar type)
{
    a_stop = 1;         //for display "终/到"
    switch(type)
    {
        case Ua:
            if(UaDis5Stop)
            {
                Phase_select(Phase_A);
                DispIC1_start_stop(S1, UaFault_stop_time);  //
            }
        break;
        case Ub:
            if(UbDis5Stop)
            {
                Phase_select(Phase_B);
                DispIC1_start_stop(S1, UbFault_stop_time);  //
            }
        break;
        case Uc:
            if(UcDis5Stop)
            {
                Phase_select(Phase_C);
                DispIC1_start_stop(S1, UcFault_stop_time);  //
            }
        break;
        case Ia:
            if(IaDis5Stop)
            {
                Phase_select(Phase_A);
                DispIC1_start_stop(S2, IaFault_stop_time);  //
            }
        break;
        case Ic:
            if(IcDis5Stop)
            {
                Phase_select(Phase_C);
                DispIC1_start_stop(S2, IcFault_stop_time);  //
            }
        break;
        case Ip:
            if(IpDis5Stop)
            {
            	  LCD_WD2(26,0x08);             //no display A,B,C
                DispIC1_start_stop(S3, IpFault_stop_time);  //
            }
        break;
        default:
        break;
    }
}*/
/******************************************************/
/*本程序为初始化串口,波特率1200,***********************/
/*定时器t0用来产生38kHZ载波*************************************/
/*************************************设计日期*2007.6.8*****/

 void InitSci(void)
   {
     EA=1;
     ES=1;
     ET0=1;
     //TMOD=0x20;
     TMOD=0x22;
     TH1=0XE8;
     TL1=0XE8;
     //TH0=0xf3;
     //TL0=0xf3;
     TH0=0XF3;
     TL0=0XF3;

     TR0=1;
     TR1=1;
     SCON=0X50;
   }

/******************************************************/
/*本程序为切换故障类别*******//****************/
/**************************************/
/*************************************设计日期*2007.6.8*****/
  void Change_phase(void)
  {
  	if(swith_phase)
  	 {m2=m2+1;
  	 swith_phase=0;
         n=0;
         m1=0;
         times_flag=0;
  	 if(m2>6)m2=1;
          }
    switch (m2)
     {
     case 1: Fault_adress=80;break;//Fault_adress存贮故障的地址
     case 2: Fault_adress=200;break;
     case 3: Fault_adress=320;break;
     case 4: Fault_adress=440;break;
     case 5: Fault_adress=560;break;
     case 6: Fault_adress=680;break;
     }
  }

/******************************************************/
/*本程序为红外串行发送子程序*/
/**************************************/
/*************************************设计日期*2007.6.8*****/
  void SciSend(void)
  {uchar i;
      KickDog();
      if(send_flag)//发送标志
       {
       	 if(error_flag) //有错误,则重新发送
       	 	{m1=m1-6;
       	 	goto loop;
           }
 next:    if(!times_flag)n++;
            if(n>9)
            {n=0;
             times_flag=0;
             goto next;
             }
           times_flag=!times_flag;
loop:      rd_s_eeprom(FaultTime,Fault_adress+m1,sizeof(FaultTime));
           if(Fault_adress==80)FaultTime[0]=1;
           if(Fault_adress==200)FaultTime[0]=2;
           if(Fault_adress==320)FaultTime[0]=3;
           if(Fault_adress==440)FaultTime[0]=4;
           if(Fault_adress==560)FaultTime[0]=6;
           if(Fault_adress==680)FaultTime[0]=7;
           SBUF=0xcc;   //0xcc为发送起始标志
            KickDog();
           while(!TI);
           TI=0;
           SBUF=n;
           KickDog();
           while(!TI);
           TI=0;
	     for(i=0;i<6;i++)
            {SBUF=FaultTime[i];
             //SBUF=6;
             KickDog();
             while(!TI);
             TI=0;
            }
            SBUF=FaultTime[0]+FaultTime[1]+FaultTime[2]+FaultTime[3]+FaultTime[4]+FaultTime[5]+n;
            KickDog();
            while(!TI);
            TI=0;
         send_flag=0;
         m1=m1+6;
         if(m1>102)m1=0;
           }
        KickDog();
      }


/******************************************************/

⌨️ 快捷键说明

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