📄 macohbak.c
字号:
}
break;
case left:
if(tbit<2) tbit++;
else tbit=0;
break;
case set_up:
while (1)
{
tr_x1: pontmp=pontdata;
pontdata=1;
sandcnd_display(tr_x,trdata_x[tdbit],1);
o[1]=tdbit+1;
key=display_flash(135,0,1);
pontdata=pontmp;
switch (key)
{
case set:
reset_m=resettemp;
in_m=intemp ;
intm_m=inmtemp;
while(1)
{
sandchar_display(in,inm);
p[0]=intm_m+13;
o[0]=in_m+13;
key=display_flash(135,0,1);
switch (key)
{
case set:
while (1)
{
sandchar_display(rst,comtep);
o[0]=reset_m+13;
key=display_flash(135,0,1);
switch (key)
{
case up:
if(reset_m<2) reset_m++;
else reset_m=0;
break;
case set:
goto menu_end;
case left3s:
resettemp=reset_m;
EEPROMwrite(0x11,resettemp);
goto menu_end;
}
}
break;
case down:
if(intm_m==0)intm_m++;
else intm_m=0;
break;
case up:
if(in_m<2) in_m++;
else in_m=0;
break;
case left3s:
inmtemp=intm_m;
intemp=in_m;
EEPROMwrite(0x11,inmtemp );
EEPROMwrite(0x12,intemp);
goto menu_end;
}
}
break;
case up:
tr_x2: fbit=1; cbit=0;
pontmp=pontdata;
pontdata=1;
sandcnd_display(tr_x,trdata_x[tdbit],1);
while(1)
{
o=tr_x;
key=display_flash(fbit,cbit,2);
pontdata=pontmp;
switch (key)
{
case up:
fbit=2;
if(cbit==1) p[cbit]-=25;
if(p[cbit]<9) p[cbit]++;
else p[cbit]=0;
if(cbit==1) p[cbit]+=25;
break;
case down:
fbit=2;
if(cbit==1) p[cbit]-=25;
if(p[cbit]>0) p[cbit]--;
else p[cbit]=9;
if(cbit==1) p[cbit]+=25;
break;
case left:
fbit=2;
if(cbit<1) cbit++;
else cbit=0;
break;
case left3s:
trdata=0;
trdata+= ((p[1]-25)*10);
trdata+= p[0];
trdata_x[tdbit]=trdata;
EEPROM_WRITE(0x30,trdata_x);
goto tr_x1;
case set:
goto menu_end;
case set3s:
goto menu_end;
}
}
break;
case down:
goto tr_x2;
break;
case left:
if(tdbit<2) tdbit++;
else tdbit=0;
break;
case set3s:
goto menu_end;
}
}
break;
case down:
Key_Init1();
break;
}
menu_end: return;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------
void sanddata_display(long i, long j, unsigned char k )
{ // ---------------------------------------------长数据1----长数据2-----------小数点开关
unsigned char v=0;
unsigned char m=0;
if(k==0) m=1; v=1;
if(k==1) m=1;
if(k==2) v=1;
process(j,p,m);
process(i,o,v);
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------
void sandcnd_display(unsigned char *q, long j, unsigned char y )
{
process(j,p,y);
o=q;
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------
void sandchar_display(unsigned char *q, unsigned char *w)
{
o=q;
p=w;
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------
char display_flash (unsigned char ed,unsigned char g, unsigned char c)
{
unsigned char a,b,d,keydata=0;
unsigned char *x,*f;
x=p;
f=o;
b=p[g];
for (d=0;d<c;d++)
{
ed=~ed;
switch (ed)
{
case 1: o=v; break;
case 2: p[g]=10; break;
case 3: p=v; o=v; break;
}
for (a=0;a<35;a++)
{
display();
if((PINB&0XF0)!=0xf0) goto end_d;
}
p[g]=b;
p=x;
o=f;
}
end_d: keydata=GetKey() ;
p[g]=b;
p=dhitemp;
o=dlotemp;
return keydata;
}
//------------------------------------------------------------------------------------------------------------
void cntplay(void)
{
long posstep;
posstep=CNT*scldata[0];
tempcnt= posstep/scldata[1];
process(tempcnt,o,1);
process(timeset[tbit],p,0);
display();
}
//-------------------------------------------------------------------------------------------------------------
void display (void) //--------------------------------------------------------------------------数码管显示扫描
{
unsigned char oda,pda,bda,cx,cz;
unsigned char bitda=0x01;
unsigned char bi;
for(bi=0;bi<3;bi++)
{
if(kt[bi]==1){
if(ticnt>=ti[bi]) {if( (ticnt-ti[bi])/10>=trdata_x[bi] ) { PORTC&=~BIT(bi); kt[bi]=3;}}
else {if( (60000+ticnt-ti[bi])/100>=trdata_x[bi] ) { PORTC&=~BIT(bi); kt[bi]=3;}}
}
if(trdata_x[bi]==0) kt[bi]=1;
}
if( resettemp==2) { if(kt[0]*kt[1]*kt[2]==1) CNT=0;}
for(bi=0;bi<3;bi++)
{
if(trdata_x[bi]==0) kt[bi]=3;
}
if( resettemp>=1) { if((kt[0]+kt[1]+kt[2])==9) Key_Init1();}
PORTC&=~BIT(cp);
for(cz=0;cz<7;cz++)
{
oda=~table[p[cz]];
pda=~table[o[cz]];
bda=~bitda;
for(cx=0;cx<24;cx++)
{
delay_nus(1);
PORTC&=~BIT(sh_cp);
if(cx<8){
if( oda&0x80) PORTC|= BIT(ds);
else PORTC&=~BIT(ds);
oda<<=1;
}
else {
if(cx<16)
{
if( pda&0x80) PORTC|= BIT(ds);
else PORTC&=~BIT(ds);
pda<<=1;
}
else
{
if( bda&0x80) PORTC|= BIT(ds);
else PORTC&=~BIT(ds);
bda<<=1;
}
}
PORTC|= BIT(sh_cp);
}
delay_nus(1);
PORTC|=BIT(cp);
delay_nus(1);
PORTC&=~BIT(cp);
bitda<<=1;
delay_nus(500);
}
}
//----------------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------
char GetKey(void) //-----------------------------------------------------------------------------------取键值防抖动
{
unsigned char c,e,jd,f,u = 0;
c=0; f=0;
if((PINB&0XF0)!=0xf0)
{
e = (PINB&0XF0);
display();
if(e==(PINB&0XF0) )
{
loopkey: display();
c++;
if(c>10)
{
if(c==100) {
e = (PINB&0XF0);
e++;
s3loop: display();
u++;
if (u>20)
{
for(u=0;u<80;u++)
{
p=so_1;
display();
}
p=dhitemp;
return e;
}
if((PINB&0XF0)==0xf0 ) return e;
else goto s3loop;
}
if ((PINB&0XF0)==set) goto loopkey;
if ((PINB&0XF0)==left) goto loopkey;
if ((PINB&0XF0)==0xa0) goto loopkey;
if ((PINB&0XF0)==0x60) goto loopkey;
return e;
}
if((PINB&0XF0)==0xf0 ) return e;
else goto loopkey;
}
}
return f;
}
//----------------------------------------------------------------------------------------------------------------
void process(long i,unsigned char *p,unsigned char z)//-----------------------------------------运算位数据
{
long j=100000;
long x;
unsigned char cv,s=5;
if(i<0) { i*=-1; cv=1;}
else cv=0;
x=i;
repro:
if(s!=0)
{
p[s]=i/j;
if(x<j) {if(cv==0) p[s]=10;
else { if(s>pontdata) p[s]=12; } }
i%=j; j/=10; s--;
goto repro;
}
else p[s]=i;
if(z==1)
{//----------------------
if(p[pontdata] != 10 ) { if(pontdata!=0) p[pontdata]+=25;}
else
{
if(pontdata>0)
{
s=pontdata;
possreb: if(p[s]==10)
{
p[s]=0; s--;
if(s!=0) goto possreb;
}
p[pontdata]+=25;
}
}
if(pontdata==5) {if(cv!=0) p[5]=55 ;}
}//----------------------------
}
//-------------------------------------------------------------------------------------------------------------------
long process_add(void)
{
long timeposs=0;
if(p[5]<10) timeposs+= (p[5]*100000);
if(p[4]<10) timeposs+= (p[4]*100000/10);
if(p[3]<10) timeposs+= (p[3]*1000);
if(p[2]<10) timeposs+= (p[2]*100);
if(p[1]<10) timeposs+= (p[1]*10);
if(p[0]<10) timeposs+= p[0];
return timeposs;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -