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

📄 jiaotong2.c

📁 交通灯控制源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
                                *(disp_buffer+6)=(step_time-num_1s)%10;
                                run_state=4;
                                break;
         }            
         write();  
         doide_d();
         for(i=0;i<7;i++)                               
         *(DISP_BUF+i)=tab_num[*(disp_buffer+i)];
         if((time_10ms%64000==0)&&(time_10ms!=0)){
              key_state=0;
              key_system_set=0;
              run_state=4;
              for(i=0;i<8;i++)
                { *(disp_buffer+i)=0x0a;
                  *(DISP_BUF+i)=0xff;}
             
         }
        key_check=60;
    }                 
      flash();
   }
  }                 
}                
byte  key_read(){
	byte y,h;
	byte check;
	h=0x01;
	for(y=0;y<5;y++){
		*line_addr=h;
		check = P1&0x0f;
		 h<<=1;
		if(!check) continue;                       
      switch(check){
       case 1:check=y*10+0;y=6;break;
       case 2:check=y*10+1;y=6;break;
       case 4:check=y*10+2;y=6;break;
       case 8:check=y*10+3;y=6;break;
		}
	}
    if(y!=5)
    key_pass=1;
    *line_addr=0xff;
	 	return (check);   
}
void  write(void){                               //buffer  data to  29c256
       byte i,y;
       word a;
         if((flag_writ!=0)&&(flag_writ==judge_data())){
           switch(flag_writ){
            case 1:y=(10*(*disp_buffer)+(*(disp_buffer+1))-1)%4;
                   a=0x1000+*(disp_buffer+2)*512+(10*(*disp_buffer)+(*(disp_buffer+1))-1)/4*64;
                   read(a);
                   *(REC_BUF+(y+1)*16-1)=10*(*(disp_buffer+3))+(*(disp_buffer+4));break;             
            case 2: y=(10*(*disp_buffer)+(*(disp_buffer+1)))%16;
                    a=0x100+num_plan*64;  
                    read(a);
                     *(REC_BUF+(y-1)*4+2)=*(disp_buffer+2);break;
            case 3:y=(10*(*disp_buffer)+(*(disp_buffer+1)))%16;
                   a=0x100+num_plan*64;  
                   read(a);
                   *(REC_BUF+(y-1)*4)=(*(disp_buffer+3)<<4)+(*(disp_buffer+4));break;
            case 4:y=(10*(*disp_buffer)+(*(disp_buffer+1)))%16;
                    a=0x100+num_plan*64;  
                    read(a);
                    *(REC_BUF+(y-1)*4+1)=(*(disp_buffer+5)<<4)+(*(disp_buffer+6));break;
          }
           EA=0;
       (*(byte xdata *)(0x5555))=0xaa;
       (*(byte xdata *)(0x2aaa))=0x55;
       (*(byte xdata *)(0x5555))=0xa0;
       for(i=0;i<64;i++)
           *(sp_address+a+i)=*(REC_BUF+i);
           for(a = 0;a<500;a++)
              P1 = 0; 
           EA=1;
         }
     return;
     } 
byte judge_data(void){
  byte i,hh1,mm1,hh2,mm2;
  bit hhp,mmp,hhp1,mmp1;
  i=flag_writ;
  if(flag_writ>2){
      hh1=((sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-2))->start_hour;
      mm1=((sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-2))->start_min;
      hh2=((sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan))->start_hour;
      mm2=((sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan))->start_min;
      if((*disp_buffer)*10+*(disp_buffer+1)==1){ 
         hhp=(10*(*(disp_buffer+3))+(*(disp_buffer+4)))<=hh2;
         hhp1=(10*(*(disp_buffer+3))+(*(disp_buffer+4)))==hh2;
         mmp=(10*(*(disp_buffer+5))+(*(disp_buffer+6)))>=mm2;
         if(!hhp){        
             i=0;
             *(disp_buffer+3)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour>>4;
             *(disp_buffer+4)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour&0x0f;
         }
           else if(mmp&&hhp1){
             i=0;
            *(disp_buffer+5)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min>>4;
            *(disp_buffer+6)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min&0x0f;
           }
      }
       else if((*disp_buffer)*10+*(disp_buffer+1)==16){ 
                hhp=(10*(*(disp_buffer+3))+(*(disp_buffer+4)))>=hh1;
                hhp1=(10*(*(disp_buffer+3))+(*(disp_buffer+4)))==hh1;
                mmp=(10*(*(disp_buffer+5))+(*(disp_buffer+6)))<=mm1;
            if(!hhp){
               i=0;
                *(disp_buffer+3)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour>>4;
                *(disp_buffer+4)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour&0x0f;
             }
             else if(mmp&&hhp1){
               i=0;
               *(disp_buffer+5)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min>>4;
               *(disp_buffer+6)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min&0x0f;
            }
        }
       else if(1){ 
            hhp=(hh1<=(10*(*(disp_buffer+3))+(*(disp_buffer+4))))&&((10*(*(disp_buffer+3))+(*(disp_buffer+4)))<=hh2);
            hhp1=(hh1==(10*(*(disp_buffer+3))+(*(disp_buffer+4))))||((10*(*(disp_buffer+3))+(*(disp_buffer+4)))==hh2);
            mmp=mm1>=(10*(*(disp_buffer+5))+(*(disp_buffer+6)));
            mmp1=(10*(*(disp_buffer+5))+(*(disp_buffer+6)))>=mm2;
         if(!hhp){        
             i=0;
             *(disp_buffer+3)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour>>4;
             *(disp_buffer+4)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_hour&0x0f;
         }
           else if(((hh1==(10*(*(disp_buffer+3))+(*(disp_buffer+4))))&&mmp)||(((10*(*(disp_buffer+3))+(*(disp_buffer+4)))==hh2)&&mmp1)){
             i=0;
            *(disp_buffer+5)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min>>4;
            *(disp_buffer+6)=(sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1)->start_min&0x0f;
          }         
       }
   }   
 return(i);
 } 
void read(word b){                                                         
 byte i;
 for(i=0;i<64;i++)
   *(REC_BUF+i)=*(sp_address+(b>>8)*256+(b&0xff)+i);
 return;
}
void doide_d(void){
  if(hand)
     *(DISP_BUF+7)=0X87;
    else{switch(key_system_set){
        case 1: *(DISP_BUF+7)=0xdf;break;
        case 2: *(DISP_BUF+7)=0xef;break;
        case 3: *(DISP_BUF+7)=0xf7;break;
        case 4: *(DISP_BUF+7)=0xbf;break;
        }
    }     
  if(!light_on) *(DISP_BUF+7)&=0xfd;
     else *(DISP_BUF+7)&=0xfb;
}
void flash(void){
  if(((time_10ms%50)>0)&&((time_10ms%100)<25)){
   switch(key_set){
      case 0x10:if(no1)*(DISP_BUF+5)=0x7f;
                  else *(DISP_BUF+6)=0x7f;
                break;
      case 0x11:if(no1)*(DISP_BUF+3)=0x7f;
                  else *(DISP_BUF+4)=0x7f;break;
      case 0x12:*(DISP_BUF+2)=0x7f;break;
      case 0x13:if(no1)*DISP_BUF=0x7f;
                  else *(DISP_BUF+1)=0x7f;break;
      }
  }
} 
 void all_red(){
       byte i,j; 
       for (i=0;i<16;i++){
          *(CON_BUF+i)=0x03; 
                    } 
       if(key_system_set!=0x02){
       for (j=0;j<8;j++){
             *(DISP_BUF+j)=0xfe;
                    }
       }
    }       
 void  special_day_check()                                 /*special date check,in all 16 special date*/
      {
       byte i,cost=0x07;
       bit j,k,l,m=0;
                   if((CLK_REGA&0x80)!=0x80){
               num_plan=0;
               for (i=0;i<64;i++){
                 if((sp_date+i)->mon==cur_mon) j=1; else j=0;
                 if((sp_date+i)->date==cur_date) k=1; else k=0;
                 if((sp_date+i)->week==cur_week) l=1; else l=0;
                 if((!j&!k)&&(l&&(!m)))
                     {num_plan=(sp_date+i)->project;} 
                 if(((j&k)&&(!l))&&((sp_date+i)->week>=cost))
                        {
                          num_plan=(sp_date+i)->project; m=1;
                                                 }                 
                 if((j&k)&&l)
                     {num_plan=(sp_date+i)->project; break;} 
                 
                                      }
                             }                            
                         }       
            
 void  project_d_check()                                       /*base time check project,in all 16 plan*/
      {
       byte i;
       bit j,k,l,m,n,p;       
       for (i=0;i<16;i++){
           if(cur_hour>((sp_project+16*(num_plan)+i)->start_hour)) j=1;
           else j=0;
           if(cur_hour<((sp_project+16*(num_plan)+(i+1))->start_hour)) k=1;
           else k=0;
           if(cur_hour==((sp_project+16*(num_plan)+i)->start_hour)) l=1;
           else l=0;
           if(cur_hour==((sp_project+16*(num_plan)+(i+1))->start_hour)) m=1;
           else m=0;  
           if(cur_min>=((sp_project+16*(num_plan)+i)->start_min)) n=1;
           else n=0;   
           if(cur_min<((sp_project+16*(num_plan)+(i+1))->start_min)) p=1;
           else p=0; 
           if(j&&k){
               {num_control=(sp_project+16*(num_plan)+i)->scheme; 
                num_step=(sp_project+16*(num_plan)+i)->step_num;}
                break;  }
           if((l&&n)&&k){
               {num_control=(sp_project+16*(num_plan)+i)->scheme; 
                num_step=(sp_project+16*(num_plan)+i)->step_num;}
                break; 
                        }
           if((l&&n)&&(m&&p)){
               {num_control=(sp_project+16*(num_plan)+i)->scheme; 
                num_step=(sp_project+16*(num_plan)+i)->step_num;}
                break; 
                      }
           if(j&&(m&&p)){
               {num_control=(sp_project+16*(num_plan)+i)->scheme; 
                num_step=(sp_project+16*(num_plan)+i)->step_num;}
                break;} 
                                    }
                       }                                       
 void  con_get_data(){                                                  /*give data to control out buffer*/
      if((flag_write)==0){ 
         *(CON_BUF)=(sp_scheme+32*(num_control)+cur_step)->out1;
         *(CON_BUF+1)=(sp_scheme+32*(num_control)+cur_step)->out2;
         *(CON_BUF+2)=(sp_scheme+32*(num_control)+cur_step)->out3;
         *(CON_BUF+3)=(sp_scheme+32*(num_control)+cur_step)->out4;
         *(CON_BUF+4)=(sp_scheme+32*(num_control)+cur_step)->out5;
         *(CON_BUF+5)=(sp_scheme+32*(num_control)+cur_step)->out6;
         *(CON_BUF+6)=(sp_scheme+32*(num_control)+cur_step)->out7;
         *(CON_BUF+7)=(sp_scheme+32*(num_control)+cur_step)->out8;                              
         *(CON_BUF+8)=(sp_scheme+32*(num_control)+cur_step)->out9;
         *(CON_BUF+9)=(sp_scheme+32*(num_control)+cur_step)->out10;
         *(CON_BUF+10)=(sp_scheme+32*(num_control)+cur_step)->out11;
         *(CON_BUF+11)=(sp_scheme+32*(num_control)+cur_step)->out12;
         *(CON_BUF+12)=(sp_scheme+32*(num_control)+cur_step)->out13;
         *(CON_BUF+13)=(sp_scheme+32*(num_control)+cur_step)->out14;
         *(CON_BUF+14)=(sp_scheme+32*(num_control)+cur_step)->out15;
         *(CON_BUF+15)=(sp_scheme+32*(num_control)+cur_step)->stop_time;
                       }                   
                   }                      
                                                        
 void  disp_con(){                                                         /*flash programme  */  

⌨️ 快捷键说明

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