📄 jiaotong2.c
字号:
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 + -