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

📄 hjcomm.c

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 C
📖 第 1 页 / 共 5 页
字号:
           wdi_reset();
         }
         date=0x30+mode;               /*0:k0,1:k1*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x0d;                    /*回车符*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         delay(200);
                                       /*屏蔽MODEM回显*/
         date=0x41;                    /*A*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x54;                    /*T*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x65;                    /*e*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x30;                    /*0*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x0d;                    /*回车符*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         delay(200);
         date=0x41;                    /*A*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x54;                    /*T*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x71;                    /*q*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x31;                    /*1*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x0d;                    /*回车符*/
         XBYTE[0xdff0]=date;
         i=0;
         while((XBYTE[0xdffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         delay(200);
       }
       wdi_reset();
       EA=1;
}
/*-------------------------------------------------------*/
void   modem_angser(uchar comm_no,mode){/*设置MODEM为自动应答*/

       uchar data   date ;
       uint  data   i;

       EA=0;
       wdi_reset();
       if(comm_no==1){              //-------------------com1口-------------------------
         date=0x41;                    /*A*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x54;                    /*T*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x53;                    /*S*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x30;                    /*0*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x3d;                    /*=*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         if(mode==1){
           date=0x31;                  /*1:自动应答*/
         }
         else{
           date=0x30;                  /*主呼*/
         }
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         date=0x0d;                    /*回车符*/
         XBYTE[0xeff0]=date;
         i=0;
         while((XBYTE[0xeffd]<0x60)&(i<7000)){
           i=i+1;
           wdi_reset();
         }
         delay(200);
         }
         else{               //-------------------com2口-----------------------
           date=0x41;                  /*A*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           date=0x54;                  /*T*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           date=0x53;                  /*S*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           date=0x30;                  /*0*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           date=0x3d;                  /*=*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           if(mode==1){
             date=0x31;                /*1:自动应答*/
           }
           else{
             date=0x30;                /*主呼*/
           }
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           date=0x0d;                  /*回车符*/
           XBYTE[0xdff0]=date;
           i=0;
           while((XBYTE[0xdffd]<0x60)&(i<7000)){
             i=i+1;
             wdi_reset();
           }
           delay(200);
         }
         wdi_reset();
         EA=1;
}
/*-------------------------------------------------------*/
void  modem_dial(uchar comm_num){      /*进行MODEM拨号连接*/

       uchar data date;
       uint  data j;

       wdi_reset();
       if(comm_num==1){
         XBYTE[0xeff0]=0x41;           /*A*/
         j=0;
         while((XBYTE[0xeffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         XBYTE[0xeff0]=0x54;           /*T*/
         j=0;
         while((XBYTE[0xeffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         XBYTE[0xeff0]=0x44;           /*D*/
         j=0;
         while((XBYTE[0xeffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         XBYTE[0xeff0]=0x54;           /*T*/
         j=0;
         while((XBYTE[0xeffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         date=0;
         while((XBYTE[0xf006+date]!=0xff)&(date<10)){/*拨电话号码*/
           XBYTE[0xeff0]=XBYTE[0xf006+date]+0x30;
           j=0;
           while((XBYTE[0xeffd]<0x60)&(j<7000)){
             j=j+1;
             wdi_reset();
           }
           date=date+1;
         }
         XBYTE[0xeff0]=0X0d;
         j=0;
         while((XBYTE[0xeffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
       }
       else{
         date=0x41;                    /*A*/
         XBYTE[0xdff0]=date;
         j=0;
         while((XBYTE[0xdffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         date=0x54;                    /*T*/
         XBYTE[0xdff0]=date;
         j=0;
         while((XBYTE[0xdffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         date=0x44;                    /*D*/
         XBYTE[0xdff0]=date;
         j=0;
         while((XBYTE[0xdffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         date=0x54;                    /*T*/
         XBYTE[0xdff0]=date;
         j=0;
         while((XBYTE[0xdffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
         date=0;
         while((XBYTE[0xf010+date]!=0xff)&(date<10)){/* 拨电话号码*/
           XBYTE[0xdff0]=XBYTE[0xf010+date]+0x30;
           j=0;
           while((XBYTE[0xdffd]<0x60)&(j<7000)){
             j=j+1;
             wdi_reset();
           }
           date=date+1;
         }
         XBYTE[0xdff0]=0x0d;
         j=0;
         while((XBYTE[0xdffd]<0x60)&(j<7000)){
           j=j+1;
           wdi_reset();
         }
       }
       wdi_reset();
}
/*-------------------------------------------------------*/
void   set_baud(){                     /*CPU初始化各通信口速率*/

       EA=0;
       wdi_reset();
       if(((XBYTE[0xf000]&0x01)==1)&(XBYTE[0xf02d]!=XBYTE[0xf001])){    /*更新RS-232-1通信速率*/
         wdi_reset();
         XBYTE[0xf02d]=XBYTE[0xf001];
         set_comm1(XBYTE[0xf001]);
     /*    if(XBYTE[0xf004]==1){         拨号方式*/
           XBYTE[0xeffc]=1;
           delay(200);
           XBYTE[0xeffc]=0;
           delay(200);
           modem_angser(1,1);
           delay(200);
           modem_flow(1,3);
           delay(200);
      /*     if(XBYTE[0xf01e]==1){       互为备用
             XBYTE[0xdffc]=1;
             delay(200);
             XBYTE[0xdffc]=0;
             delay(200);
             modem_angser(2,1);
             delay(200);
             modem_flow(2,3);
             delay(200);
           }
         }*/
       }
       if(((XBYTE[0xf000]&0x02)==2)&(XBYTE[0xf02e]!=XBYTE[0xf002])){    /*更新RS-232-2通信速率*/
         wdi_reset();
         XBYTE[0xf02e]=XBYTE[0xf002];
         set_comm2(XBYTE[0xf002]);
        /* if(XBYTE[0xf005]==1){         拨号方式*/
           XBYTE[0xdffc]=1;
           delay(200);
           delay(200);
           XBYTE[0xdffc]=0;
           delay(200);
           delay(200);
           modem_angser(2,1);     //com2口,自动应答
           delay(200);
           modem_flow(2,3);
           delay(200);
        /*   if(XBYTE[0xf01e]==1){       互为备用
             XBYTE[0xeffc]=1;
             delay(200);
             XBYTE[0xeffc]=0;
             delay(200);
             modem_angser(1,1);
             delay(200);
             modem_flow(1,3);
             delay(200);
           }
         }*/
       }
       if(((XBYTE[0xf000]&0x04)==4)&(XBYTE[0xf02f]!=XBYTE[0xf003])){    /*更新RS-485口通信速率*/
          wdi_reset();
          set_comm3(XBYTE[0xf003]);
          XBYTE[0xf02f]=XBYTE[0xf003];
       }
       XBYTE[0xf000]=0;
       wdi_reset();
       EA=1;
}
/*-------------------------------------------------------*/
/*void   calcu_ram(){                    整理碎片

       uchar data i,data j,data  true,data k;
       uint  data  beg_add,data end_add;

       wdi_reset();
       true=0;
       XBYTE[0xf076]=0x88;
       beg_add=XBYTE[0xf01f]*256+XBYTE[0xf020];
       end_add=XBYTE[0xf021]*256+XBYTE[0xf022];首尾越界
       if((beg_add<0xa080)||(beg_add>0xf7ff)){
         true=1;
       }
       else{
         if((beg_add>0xa7ff)&(beg_add<0xf080)){
           true=1;
         }
         else{
           if((end_add<0xa080)||(end_add>0xf7ff)){
             true=1;
           }
           else{
             if((end_add>0xa7ff)&(end_add<0xf080)){

⌨️ 快捷键说明

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