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