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

📄 jiaotong2.c

📁 交通灯控制源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
          byte i;
          for(i=0;i<64;i++){                
             if(addr_num1==0x00){
                if((i%4)==0){
                  if((*(REC_BUF+i)>0x12)&&(*(REC_BUF+i)!=0xff)) err_flag=1;
                  if((*(REC_BUF+i+1)>0x31)&&(*(REC_BUF+i+1)!=0xff)) err_flag=1;
                  if((*(REC_BUF+i+2)>6)&&(*(REC_BUF+i+2)!=0xff)) err_flag=1;
                              }
                           }   
             if((addr_num1>=0x01)&&(addr_num1<=0x0f)){
                if(addr_num2%64==0){
                   if(*(REC_BUF+i)!=0xff){
                     if (i<4){
                       if(((i-1)%3==0)&&(*(REC_BUF+i-1)>32)) err_flag=1;}
                     if ((i>=4)&&((i-1)%4==0)){
                        if((*(REC_BUF+i)<0x60)&&(*(REC_BUF+i-1)<0x25)){
                           if(*(REC_BUF+i-1)!=0x24){
                            if((*(REC_BUF+i-1)<*(REC_BUF+i+3))||((*(REC_BUF+i-1)==*(REC_BUF+i+3))&&(*(REC_BUF+i)<=*(REC_BUF+i+4)))){
                                if(*(REC_BUF+i+2)>32) err_flag=1;}
                            else err_flag=1; }
                           }    
                        else  err_flag=1;
                      }                                         
                   }
                   else break;
                } 
                else err_flag=1;  
             }             
             if((addr_num1>=0x10)&&(addr_num1<=0x7f)){
                if(addr_num2%64==0){
                     if(*(REC_BUF)!=0xff){
                        if(((i+1)%16==0)&&(*(REC_BUF+i)>99))  err_flag=1;}} 
                else  err_flag=1;
                                                     }
                                              }
         if(!err_flag){SBUF=0x00;while(TI==0);TI=0;}
         if(err_flag) {SBUF=0xff;while(TI==0);TI=0;}
                            }     
                   
   void  write_eeprom(){                                       /*buffer  data to  29c256*/
       word i,k;
       byte j;
        EA=0;
       flag_write=1;
       address=((word)addr_num1<<8)+(word)addr_num2;             /*find the eeprom address*/
       for(k=0;k<200;k++);       
       (*(byte xdata *)(0x5555))=0xaa;
       (*(byte xdata *)(0x2aaa))=0x55;
       (*(byte xdata *)(0x5555))=0xa0;
        
       for(i=0;i<64;i++)
          {
          j=*(REC_BUF+i);
          *(sp_address+address+i)=j;
          }
       for(k=0;k<4000;k++);
       flag_write=0; 
       EA=1;  
         }   
void  write();
void  read(word b);
void  doide_d();
void  flash();
byte key_read();
byte judge_data();
void initrtcc(byte hh, byte mm);
void  key_dispose(void){
  byte i,hour,min;
  bit  clk_chang;
   if(key_state)
  {   if(flag_10ms){
  		  flag_10ms=0;
		  flag_writ=0;
		  time_10ms++;
        switch(time_10ms){
			       case 3: if(!EX0)key_check = key_read();break;			
			       case 4: if((key_check != key_read())&&(!EX0)) {key_state=0;EX0=1;key_pass=0;}break;
			       case 5:if((key_check != key_read())&&(!EX0)){key_pass=0; EX0=1;key_state=0;} break;	
        }
	   if((P1&0x0f)==0){	
         EX0=1;
         if((key_pass)&&(key_check!=60)){                                                                         
               key_check=tab_key[key_check%10][key_check/10];
               key_pass=0;
               if((key_check>0x09)&&(key_check<0x10)) 
               {key_set=0;
                 key_system_set=0x00;}
             if((key_check>15)&&(key_check<20)&&(return_state!=4)){
                  no1=1;
                  key_set=key_check;}
         }   
         switch(key_system_set){                                                     
                   case 0x00:switch(key_check){
                                   case  key_rs: *disp_buffer=(cur_step+1)/10;
                                                 *(disp_buffer+1)=(cur_step+1)%10;
                                                 *(disp_buffer+2)=num_control;
                                                  if(step_time>99){
                                                     step_time=20;
                                                     flag_writ=1;}
                                                 *(disp_buffer+3)=step_time/10;
                                                 *(disp_buffer+4)=step_time%10;
                                                 *(disp_buffer+5)=0x0a;
                                                 *(disp_buffer+6)=0x0a;
                                                  key_system_set=return_state=0x01;
                                                  break;
                                   case  key_tc: *disp_buffer=(cur_step+1)/10;
                                                 *(disp_buffer+1)=(cur_step+1)%10;
                                                 *(disp_buffer+2)=num_control;
                                                 *(disp_buffer+3)=CLK_HR>>4;
                                                 *(disp_buffer+4)=CLK_HR&0x0f;
                                                 *(disp_buffer+5)=CLK_MIN>>4;
      					                            *(disp_buffer+6)=CLK_MIN&0x0f;
      					                            key_system_set=return_state=0x02;
                                                   break;                                        
                                   case  key_ps: *disp_buffer=0x00;
                                                 *(disp_buffer+1)=0x01;
                                                 *(disp_buffer+2)=(sp_project+num_plan*16)->scheme;
                                                 *(disp_buffer+3)=(sp_project+num_plan*16)->start_hour>>4;
                                                 *(disp_buffer+4)=(sp_project+num_plan*16)->start_hour&0x0f;
                                                 *(disp_buffer+5)=(sp_project+num_plan*16)->start_min>>4;
                                                 *(disp_buffer+6)=(sp_project+num_plan*16)->start_min&0x0f;
                                                 key_system_set=return_state=0x03;
                                                  break;                                   
                                   case key_hand_outo:  key_system_set=return_state ;
                                                        hand=~hand;
                                                         break;
                                   case key_light_off: light_on=~light_on;
                                                       key_system_set=return_state;
                                                       break;
                                   default: key_system_set=return_state=0x04;
                                            break;
                              }
                              break;     
                   case  0x01: switch(key_set){
                                  case key_step:  if((no1)&&(key_check>=0)&&(key_check<4)){
                                                       if((key_check<3)||((key_check==3)&&(*(disp_buffer+1)<3))){
                                                            *disp_buffer=key_check;no1=~no1;
                                                            if((key_check==0)&&(*(disp_buffer+1)!=0)){
                                                              *(disp_buffer+3)=((sp_scheme+(*(disp_buffer+2))*32+10*(*disp_buffer)+(*(disp_buffer+1))-1)->stop_time)/10;
                                                              *(disp_buffer+4)=((sp_scheme+(*(disp_buffer+2))*32+10*(*disp_buffer)+(*(disp_buffer+1))-1)->stop_time)%10;
                                                            }
                                                       }
                                                         else{*disp_buffer=key_check; no1=~no1;
                                                         }                                 
                                                  }             
                                                    else{
                                                        if((!no1)&&(((key_check>=0)&&(key_check<10)&&(*disp_buffer<3))||((key_check>=0)&&(key_check<3)&&(*disp_buffer==3)))){
                                                           if((key_check==0)&&(*disp_buffer!=0)||(key_check!=0)){
                                                            *(disp_buffer+1)=key_check;no1=~no1;
                                                            *(disp_buffer+3)=((sp_scheme+(*(disp_buffer+2))*32+(*(disp_buffer)*10)+key_check-1)->stop_time)/10;
                                                            *(disp_buffer+4)=((sp_scheme+(*(disp_buffer+2))*32+(*(disp_buffer)*10)+key_check-1)->stop_time)%10;
                                                           }
                                                        }
                                                    }
                                                  break;  
                                  case key_sch:  if(key_check<=9){
                                                       *(disp_buffer+2)=key_check;
                                                       *(disp_buffer+3)=((sp_scheme+key_check*32+(*(disp_buffer)*10)+*(disp_buffer+1)-1)->stop_time)/10;
                                                       *(disp_buffer+4)=((sp_scheme+key_check*32+(*(disp_buffer)*10)+*(disp_buffer+1)-1)->stop_time)%10;
                                                 }
                                                 break;
                                  case key_hour:  if(no1&&(key_check>=0)&&(key_check<10)){
                                                      *(disp_buffer+3)=key_check;no1=~no1;
                                                      flag_writ=1;
                                                  }
                                                    else if((key_check>=0)&&(key_check<10)){
                                                            *(disp_buffer+4)=key_check;
                                                              no1=~no1 ;
                                                              flag_writ=1;
                                                    }
                                                   break; 
                                  default:key_set=0;break;
                                }                                                   
                               break;
                   case  0x02: switch(key_set){
                                      case key_hour:if((no1)&&(key_check>=0)&&(key_check<=2)){
                                                        if((key_check==2)&&(*(disp_buffer+4)>=4 )){
                                                            *(disp_buffer+4)=0x0b;*(disp_buffer+3)=2;
                                                         }
                                                          else {*(disp_buffer+3)=key_check;
                                                                clk_chang=1;}
                                                        no1=~no1;
                                                    }
                                                      else if((!no1)&&((*(disp_buffer+3)==2)&&(key_check<4)||(*(disp_buffer+3)<2)&&(key_check<10))){ 
                                                                *(disp_buffer+4)=key_check;
                                                                no1=~no1;clk_chang=1;}
                                                      if(clk_chang){
                                                           hour=*(disp_buffer+4)+(*(disp_buffer+3)<<4);           
                                                           min=*(disp_buffer+6)+(*(disp_buffer+5)<<4);
                                                           initrtcc(hour,min);
                                                      }                                                           
                                                   break;         
                                     case key_min: if((no1)&&(key_check>=0)&&(key_check<6)){
                                                    *(disp_buffer+5)=key_check; no1=~no1 ; clk_chang=1;                                
                                                   }
                                                     else if((!no1)&&(key_check>=0)&&(key_check<10)){
                                                        *(disp_buffer+6)=key_check; no1=~no1; clk_chang=1; }
                                                 if(clk_chang){
                                                           hour=*(disp_buffer+4)+(*(disp_buffer+3)<<4);           
                                                           min=*(disp_buffer+6)+(*(disp_buffer+5)<<4);
                                                           initrtcc(hour,min);
                                                 } 
                                                 break;
                               default:key_set=0; break;
                               } 
                               clk_chang=0;
                               break;
                   case  0x03: switch(key_set){
                                      case key_step:if(no1&&(key_check>=0)&&(key_check<2)){
                                                         if((*(disp_buffer+1)<7)||(key_check<1))
                                                             *disp_buffer=key_check;
                                                          else{*disp_buffer=key_check; *(DISP_BUF+1)=0x0b;}
                                                        no1=~no1;
                                                    }
                                                      else if(((*disp_buffer==1)&&(key_check<7))||((*disp_buffer==0)&&(key_check<=9))){no1=~no1;
                                                            *(disp_buffer+1)=key_check; }
                                                    if(*(disp_buffer+1)!=0x0b){        
                                                            *(disp_buffer+2)=((sp_project+(*disp_buffer)*10+*(disp_buffer+1)+16*num_plan-1))->scheme;
                                                            *(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;
                                                            *(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;
                                                    }
                                                   break;                                                                                        
                                      case key_sch:  if((key_check>=0)&&(key_check<=0x09)){*(disp_buffer+2)=key_check;flag_writ=2;}
                                                     break;
                                      case key_hour: if(no1&&(key_check>=0)&&(key_check<=2)){
                                                             if((*(disp_buffer+4)<4)||(key_check<2))
                                                                 {*(disp_buffer+3)=key_check;
                                                                 flag_writ=3;}
                                                               else{*(disp_buffer+3)=key_check; *(disp_buffer+4)=0x0b;}
                                                             no1=~no1;
                                                          }
                                                        else if((!no1)&&(((*(disp_buffer+3)==2)&&(key_check<4))||((*(disp_buffer+3)<2)&&(key_check<=9)))){
                                                          *(disp_buffer+4)=key_check;
                                                           no1=~no1;
                                                           flag_writ=3;
                                                         }
                                                        break;
                                      case key_min:if(no1&&(key_check>=0)&&(key_check<6)){
                                                     *(disp_buffer+5)=key_check;
                                                       no1=~no1;
                                                       flag_writ=4;
                                                   }
                                                    else if((!no1)&&(key_check>=0)&&(key_check<=0x09)){no1=~no1;
                                                         *(disp_buffer+6)=key_check; flag_writ=4;
                                                    }
                                                    break;                                                      
                               }   

                               break;
                   case  0x04:  if((hand)&&(key_check<=9))
                                   hand_on=1; 
                                *disp_buffer=(cur_step+1)/10;
                                *(disp_buffer+1)=(cur_step+1)%10;
                                *(disp_buffer+2)=num_control;
                                if(step_time>99){
                                    step_time=20;
                                    flag_writ=1;}
                                *(disp_buffer+3)=step_time/10;
                                *(disp_buffer+4)=step_time%10;
                                *(disp_buffer+5)=(step_time-num_1s)/10;

⌨️ 快捷键说明

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