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

📄 ledex.c

📁 ASC 信号机控制程序,国内最先进的信号机控制程序
💻 C
字号:
#include <reg51.h>
#include <absacc.h>
extern void reset_dog();
extern bit last_force;
sbit cs_dram=P3^2;
sbit busy=P1^5;                //忙闲判别
unsigned char xdata ask_flag;  /*查询标志*/
unsigned char xdata cha_flag;  /*设置标志*/
unsigned char xdata dat_flag;  /*数据标识*/
unsigned char xdata sch_code;  /*多方案的方案号*/
unsigned char xdata shc_id;
unsigned char xdata hand_flag;
unsigned char xdata prn[196];
unsigned char data tem;
unsigned char idata otp;
 unsigned int xdata len;
bit force_flag;
extern unsigned char xdata led83[24];
extern unsigned char xdata led86[24];
extern void make0x84();
exange(orgine_addr,targe_addr,length)
unsigned int orgine_addr;
unsigned int targe_addr;
unsigned int length;
{
 unsigned int  xdata i;
 unsigned char xdata *org_addr;
 unsigned char xdata *tar_addr;

 //unsigned char data j;


 org_addr=orgine_addr;
 tar_addr=targe_addr;
 len=length;
                cs_dram=0;
                do{}while(busy==0); ask_flag=XBYTE[0Xc400];
                do{}while(busy==0); cha_flag=XBYTE[0Xc401];
                do{}while(busy==0); dat_flag=XBYTE[0Xc402];
                do{}while(busy==0); sch_code=XBYTE[0Xc403];
                do{}while(busy==0); shc_id  =XBYTE[0Xc404];
                cs_dram=1;

 if((dat_flag==0x01)&&(cha_flag==0x00)){  /*液晶对信号机进行设置*/
   if(ask_flag==1){
           //cs_dram=0;
           //cs_dram=1;
     for(i=0;i<len;i++){
              cs_dram=0;           /*打开双口RAM片选信号*/
              tem=*org_addr;
              cs_dram=1;           /*关闭双口RAM片选信号*/
              reset_dog();
              *tar_addr=tem;
              //prn[i]=tem;
              //for(j=0;j<240;j++){};
              do{}while(*tar_addr!=tem);
              org_addr++;
              tar_addr++;
                 }
      cs_dram=0;
      do{}while(busy==0); XBYTE[0Xc402]=0;
      do{}while(busy==0); XBYTE[0Xc401]=0;
      do{}while(busy==0); XBYTE[0Xc400]=0;
      cs_dram=1;
                       }
      }
         cs_dram=0;
         do{}while(busy==0);     ask_flag=XBYTE[0Xc400];
         do{}while(busy==0);     cha_flag=XBYTE[0Xc401];
         do{}while(busy==0);     dat_flag=XBYTE[0Xc402];
         do{}while(busy==0);     sch_code=XBYTE[0Xc403];
         do{}while(busy==0);     shc_id  =XBYTE[0Xc404];
         cs_dram=1;

 if((cha_flag==0x01)&&(dat_flag==0x00)){ /*液晶 查询信号机数据*/
     //  i=0;
      //do{i++;}while(i<=40);

      for(i=0;i<len;i++){
              cs_dram=1;           /*关掉双口RAM片选信号*/
              tem=*org_addr;
              cs_dram=0;           /*打开双口RAM片选信号*/
              do{}while(busy==0);   /*忙*/
              *tar_addr=tem;
              //prn[i]=tem;

              cs_dram=1;
              org_addr++;
              tar_addr++;
                 }

      do{}while(busy==0);cs_dram=0;XBYTE[0Xc400]=0;
      do{}while(busy==0);cs_dram=0;XBYTE[0Xc401]=0;
      
      cs_dram=1;
                    }
 return 1;
}
led_exange()
{
    unsigned char i;

    cs_dram=0;
    do{}while(busy==0);ask_flag=XBYTE[0Xc400];
    do{}while(busy==0);cha_flag=XBYTE[0Xc401];
    do{}while(busy==0);dat_flag=XBYTE[0Xc402];
    do{}while(busy==0);sch_code=XBYTE[0Xc403];
    do{}while(busy==0);shc_id  =XBYTE[0Xc404];
    /*------------------------------------------------------------------------*/
    /*------------------------------------------------------------------------*/
    if(cha_flag==0x01){ /*液晶显示面板要查询参数*/
        switch (sch_code){
    /*   case 0x01:otp=exange(0x0000,0xc500,0x64);break;     */
         case 0x02:otp=exange(0x7f00,0xc500,  7);break;
    /*   case 0x03:otp=exange(0x0000,0xc500,0x64);break;     */
         case 0x04:otp=exange(0x8010,0xc500,  3);break;
         case 0x05:otp=exange(0x8014,0xc500,  2);break;
         case 0x06:otp=exange(0x8016,0xc500,  5);break;
         case 0x07:otp=exange(0x8020,0xc500, 16);break;
         case 0x09:otp=exange(0x8060,0xc500, 32);break;
         case 0x0a:otp=exange(0x8080,0xc500, 64);break;
         case 0x0b:otp=exange(0x80C0,0xc500,  8);break;
         case 0x0c:otp=exange(0x80C8,0xc500, 14);break;
         case 0x0d:otp=exange(0x80E0,0xc500,  1);break;
         case 0x0e:otp=exange(0x80EF,0xc500,  1);break;
         case 0x0f:otp=exange(0x8130,0xc500, 48);break;
         case 0x10:otp=exange(0x8160,0xc500, 48);break;
         case 0x11:otp=exange(0x8110,0xc420,98);break;
         case 0x12:otp=exange(0x81D5,0xc500,  2);break;
         /*case 0x13:otp=exange(0x0000,0xc500,0x64);break;
         case 0x14:otp=exange(0x0000,0xc500,0x64);break;    lq 注释 2005-8-2*/
         case 0x15:EA=0;
                   switch(shc_id){
                   case 0x01:otp=exange(0x8230,0xc500,16);break;
                   case 0x02:otp=exange(0x8240,0xc500,16);break;
                   case 0x03:otp=exange(0x8250,0xc500,16);break;
                   case 0x04:otp=exange(0x8260,0xc500,16);break;
                   case 0x05:otp=exange(0x8270,0xc500,16);break;
                   case 0x06:otp=exange(0x8280,0xc500,16);break;
                   case 0x07:otp=exange(0x8290,0xc500,16);break;
                   case 0x08:otp=exange(0x82a0,0xc500,16);break;
                   default:break;
                                  }EA=1;break;
         case 0x16:otp=exange(0x80E1,0xc500, 12);break;
         case 0x17:otp=exange(0x0000,0xc500,0x64);break;
         case 0x18:otp=exange(0x8F40,0xc500, 64);break;
         case 0x19:otp=exange(0x8F1E,0xc500, 20);break;
         case 0x1a:otp=exange(0x8F32,0xc500,  2);break;
         case 0x1b:otp=exange(0x8F34,0xc500,  1);break;
         case 0x1c:{if(shc_id>32)break;
                   else
                   otp=exange(0x9200+98*(shc_id-1),0xc500,98);
                   }break;
                   /*switch(shc_id){
                   case 0x01:otp=exange(0x9200,0xc500,98);break;
                   case 0x02:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x03:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x04:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x05:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x06:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x07:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x08:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x09:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x0a:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   case 0x0b:otp=exange(0x9200+98*(shc-1),0xc500,98);break;
                   default  :break;
                                    }
                   break;         */
         case 0x1d:otp=exange(0x9fb0,0xc420, 72);break;
         case 0x1e:switch(shc_id){
                   case 0x01:otp=exange(0x9000,0xc500,72);break;
                   case 0x02:otp=exange(0x9048,0xc500,72);break;
                   case 0x03:otp=exange(0x9090,0xc500,72);break;
                   case 0x04:otp=exange(0x90d8,0xc500,72);break;
                   case 0x05:otp=exange(0x9120,0xc500,72);break;
                   case 0x06:otp=exange(0x9168,0xc500,72);break;
                   case 0x07:otp=exange(0x91b0,0xc500,72);break;
                   default  :break;
                                    };break;
         case 0x1f:otp=exange(0x8fb0,0xc500, 72);break;
         case 0x20:otp=exange(0x0000,0xc500,0x64);break;
         case 0x21:for(i=0;i<24;i++){
                       cs_dram=0;
                       XBYTE[0xc500+i]=led83[i];
                       cs_dram=1;
                               }cs_dram=0;
                                XBYTE[0Xc400]=0;
                                XBYTE[0Xc401]=0;
                                cs_dram=1;
                                break;
         case 0x22:otp=exange(0x0000,0xc500,0x64);break;
         case 0x23:for(i=0;i<24;i++){
                       make0x84();
                       cs_dram=0;
                       XBYTE[0xc500+i]=led86[i];
                       cs_dram=1;
                               }cs_dram=0;
                                XBYTE[0Xc400]=0;
                                XBYTE[0Xc401]=0;
                                cs_dram=1;
                                break;
         case 0x24:otp=exange(0x0000,0xc500,0x64);break;
         default  :break;
                }
     }
      if(dat_flag==0x01){ /*液晶显示面板要设置参数*/
        switch (sch_code){
    /*   case 0x01:otp=exange(0x0000,0xc500,0x64);break;     */
         case 0x02:otp=exange(0xc500,0x7009, 7);
                       XBYTE[0XC009]=XBYTE[0X7009];       /*年*/
                       XBYTE[0XC008]=XBYTE[0X700A];       /*月*/
                       XBYTE[0XC007]=XBYTE[0X700B];       /*日*/
                       XBYTE[0XC004]=XBYTE[0X700C];       /*时*/
                       XBYTE[0XC002]=XBYTE[0X700D];       /*分*/
                       XBYTE[0XC000]=XBYTE[0X700E];       /*秒*/
                       XBYTE[0XC006]=XBYTE[0X700F];       /*星期*/
                       break;
        // case 0x03:otp=exange(0x0000,0xc500,0x64);break;   lq 注释 2005-8-2*/
         case 0x04:otp=exange(0xc500,0x8010,  3);break;
         case 0x05:otp=exange(0xc500,0x8014,  2);break;
         case 0x06:otp=exange(0xc500,0x8016,  5);break;
         case 0x07:
                   otp=exange(0xc500,0x8020, 16);
                                                 break;
         case 0x09:otp=exange(0xc500,0x8060, 32);break;
         case 0x0a:{EA=0;
                   otp=exange(0xc500,0x8080, 64);
                    EA=1;}break;
         case 0x0b:otp=exange(0xc500,0x80C0,  8);break;
         case 0x0c:otp=exange(0xc500,0x80C8, 14);break;
         case 0x0d:otp=exange(0xc500,0x80E0,  1);break;
         case 0x0e:otp=exange(0xc500,0x80EF,  1);break;
         case 0x0f:otp=exange(0x8130,0xc500, 48);break;
         case 0x10:otp=exange(0x8160,0xc500, 48);break;
         case 0x11:{//EA=0;
                    otp=exange(0xc420,0x8110,98);
                    //EA=1;
                    }break;
         case 0x12:otp=exange(0xc500,0x81D5,  2);break;
         /*case 0x13:otp=exange(0x0000,0xc500,0x64);break;
         /*case 0x14:otp=exange(0x0000,0xc500,0x64);break;   lq 注释 2005-8-2*/
         case 0x15:{EA=0;
                    otp=exange(0xc500,0x8220+16*shc_id,16);
                    EA=1;
                    }break;

         case 0x16:otp=exange(0xc500,0x80E1, 12);break;
         case 0x17:otp=exange(0xc500,0x7e29,  2);break;
         case 0x18:otp=exange(0xc500,0x8F40, 64);break;
         case 0x19:otp=exange(0xc500,0x8F1E, 20);break;
         case 0x1a:otp=exange(0xc500,0x8F32,  2);break;
         case 0x1b:otp=exange(0xc500,0x8F34,  1);break;
         case 0x1c:{do{}while(busy==0);
                    cs_dram=0;shc_id=XBYTE[0xc500];cs_dram=1;
                   if(shc_id>32)
                   {cs_dram=0;
                   XBYTE[0Xc400]=1;
                   XBYTE[0Xc401]=0;
                   XBYTE[0Xc402]=0;
                   cs_dram=1;}
                   else
                   {EA=0;
                   otp=exange(0xc500,0x9200+98*(shc_id-1),98);
                   EA=1;}
                   }break;

         case 0x1d:{EA=0;
                   otp=exange(0xc420,0x9fb0, 72);
                   EA=1;
                   }break;
         case 0x1e:{EA=0;
                     otp=exange(0xc500,0x9000+72*(shc_id-1),72);
                    EA=1;
                    }break;
       /*  switch(shc_id){
                   case 0x01:otp=exange(0xc500,0x9000,72);break;
                   case 0x02:otp=exange(0xc500,0x9048,72);break;
                   case 0x03:otp=exange(0xc500,0x9090,72);break;
                   case 0x04:otp=exange(0xc500,0x90d8,72);break;
                   case 0x05:otp=exange(0xc500,0x9120,72);break;
                   case 0x06:otp=exange(0xc500,0x9168,72);break;
                   case 0x07:otp=exange(0xc500,0x91b0,72);break;
                   default  :break;
                                    };break;  */
         case 0x1f:otp=exange(0xc500,0x8fb0, 72);break;
         /*case 0x20:otp=exange(0x0000,0xc500,0x64);break;
         case 0x21:otp=exange(0x0000,0xc500,0x64);break;
         case 0x22:otp=exange(0x0000,0xc500,0x64);break;
         case 0x23:otp=exange(0x0000,0xc500,0x64);break;
         case 0x24:otp=exange(0x0000,0xc500,0x64);break;   lq注释 2005-8-2*/
         default  :break;
                }
     }

}

⌨️ 快捷键说明

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