return(ret);
}
-void display(char num)
+void display(char num, char d0, char d1)
{
- dsp[0] = font[(num / 10) % 10];
- dsp[1] = font[num % 10];
+ dsp[0] = font[(num / 10) % 10] | (d0?SEGP:0);
+ dsp[1] = font[num % 10] | (d1?SEGP:0);
}
void disphex(unsigned char num)
rstate = 0;
init();
sei();
- display(0);
+ display(0, 0, 0);
while(1) {
mnow = getticks();
if(ktok) {
ktok = 0;
if((tempk >= 273) && (tempk <= 372)) {
- display(tempk - 273);
+ display(tempk - 273, 0, run);
} else {
- dsp[0] = dsp[1] = SEGG;
+ dsp[0] = SEGG;
+ dsp[1] = SEGG | (run?SEGP:0);
}
}
if(pval != 0)
else
run = !run;
}
- if(run)
- dsp[1] |= SEGP;
- else
- dsp[1] &= ~SEGP;
} else if(state == 1) {
/* Temp setting */
if(pval != 0) {
cur = 0;
if(cur > 100)
cur = 100;
- if(cur < 100)
- display(cur);
- else
- dsp[0] = dsp[1] = SEGG;
+ if(cur < 100) {
+ display(cur, 0, run);
+ } else {
+ dsp[0] = SEGG;
+ dsp[1] = SEGG | (run?SEGP:0);
+ }
utime = mnow;
}
if(mnow - utime > 1000000)
} else if(state == 2) {
/* Display raw temp time reading */
if(ttimea < 20000) {
- display((ttimea / 100) % 100);
- dsp[0] |= SEGP;
- if(ttimea >= 10000)
- dsp[1] |= SEGP;
+ display((ttimea / 100) % 100, 1, ttimea >= 10000);
} else {
- display(ttimea / 1000);
+ display(ttimea / 1000, 0, 0);
}
if(sstate == 2) {
state = 0;