Stap 3: Een steekproef van broncode (C-taal)
#include < REG2051. H >code senen_seg [10] = {0x81, 0xe7, 0x92, 0xa2, 0xe4, 0xa8, 0x88, 0xe3, 0x80, 0xa0};
beetje key1_enter = 0, key2_enter = 0, key3_enter = 0, countdown_mark = 0, stopwatch_mark = 0, count_mark = 0, bell_mark = 0;
unsigned char programma = 0, program_variable = 0, count_bit = 0, graaf = 0;
unsigned char uur = 10, minuten = 10, tweede = 0;
unsigned char delayed_hour = 22, delayed_minute = 10, delayed_second = 0;
unsigned char count_hour = 0, count_minute = 0, count_second = 0;
unsigned int count_time = 0, count_count = 0;
VOID vertraging (unsigned int t)
{
unsigned int i, j;
voor (ik = 0; ik < t; i ++)
voor (j = 0; j < 10; j ++)
;
}
ongeldig time0_init(void) {}
EA = 0;
TR0 = 0;
TMOD = 0X02;
TH0 = 0X4;
TL0 = 0X4;
ET0 = 1;
TR0 = 1;
EA = 1;
}
statische nietige timer0_isr(void) interrupt TF0_VECTOR met 1
{
count_time ++;
Als (count_time > = 4020) {}
count_time = 0;
tweede ++;
Als (tweede > = 60) {}
tweede = 0;
minuut ++;
Als (minuut > = 60) {}
minuten = 0;
uur ++;
Als (uur > = 24) uur = 0;
}
}
}
Als (delayed_hour == uur & & delayed_minute == minuut & & tweede < 4) P3_7 = 0;
anders P3_7 = 1;
if(countdown_mark==1) {}
count_count ++;
Als (count_count > = 4000 & & (count_second! = 0|count_minute! = 0|count_hour! = 0)) {}
count_count = 0;
count_second--;
Als (count_second > = 60) {}
count_second = 59;
count_minute--;
Als (count_minute > = 60) {}
count_minute = 59;
count_hour--;
Als (count_hour > = 100) count_hour = 99;
}
}
}
Als (count_second == 0 & & count_minute == 0 & & count_hour == 0 & & count_count < = 12000) P3_7 = 0;
anders P3_7 = 1;
Als (count_count > = 15000) count_count = 14000;
}
if(stopwatch_mark==1) {count_count ++;
Als (count_count > = 40) {}
count_count = 0;
count_second ++;
Als (count_second > = 100) {}
count_second = 0;
count_minute ++;
Als (count_minute > = 60) {}
count_minute = 0;
count_hour ++;
Als (count_hour > = 60) count_hour = 0;
}
}
}
}
}
unsigned char show_key (void) {}
unsigned char x = 0, y = 0;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [tweede 10%];
breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [tweede 10%];
breken;
geval 2: if(delayed_hour==24) P1 = 0xfe;
anders P1 & = senen_seg [delayed_second % 10];
breken;
Case 3: als (count_bit > = 0) P1 & = senen_seg [count_second % 10];
anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_second % 10];
breken;
geval 5: P1 & = senen_seg [count_second % 10];
breken;
}
P3_3 = 0;
delay(10);
if(P3_5==0) {}
key1_enter = 1;
Als (graaf < = 254) graaf ++;
}
if(P3_4==0) key2_enter = 1;
if(P3_2==0) key3_enter = 1;
P3_3 = 1;
P1| = 0XFF;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [tweede/10];
breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [tweede/10];
breken;
geval 2: if(delayed_hour==24) P1 = 0xfe;
anders P1 & = senen_seg [delayed_second/10];
breken;
Case 3: als (count_bit > = 1) P1 & = senen_seg [count_second/10];
anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_second/10];
breken;
geval 5: P1 & = senen_seg [count_second/10];
breken;
}
P3_1 = 0;
delay(10);
P3_1 = 1;
P1| = 0XFF;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [minuut 10%];
breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [minuut 10%];
breken;
geval 2: if(delayed_hour==24) P1 = 0xfe;
anders P1 & = senen_seg [delayed_minute % 10];
breken;
Case 3: als (count_bit > = 2) P1 & = senen_seg [count_minute % 10];
anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_minute % 10];
breken;
geval 5: P1 & = senen_seg [count_minute % 10];
breken;
}
P3_2 = 0;
delay(10);
P3_2 = 1;
P1| = 0XFF;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [minuut/10];
breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [minuut/10];
breken;
geval 2: if(delayed_hour==24) P1 = 0xfe;
anders P1 & = senen_seg [delayed_minute/10];
breken;
Case 3: als (count_bit > = 3) P1 & = senen_seg [count_minute/10];
anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_minute/10];
breken;
geval 5: P1 & = senen_seg [count_minute/10];
breken;
}
P3_5 = 0;
delay(10);
P3_5 = 1;
P1| = 0XFF;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [uur 10%];
breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [uur 10%];
breken;
geval 2: if(delayed_hour==24) P1 = 0xfe;
anders P1 & = senen_seg [delayed_hour % 10];
breken;
Case 3: als (count_bit > = 4) P1 & = senen_seg [count_hour % 10];
anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_hour % 10]; breken;
geval 5: P1 & = senen_seg [count_hour % 10];
breken;
}
P3_0 = 0;
delay(10);
Als (P3_4 == 1 & & key2_enter == 1) {}
x = 3; key2_enter = 0;
}
P3_0 = 1;
P1| = 0XFF;
schakelaar (programma) {}
geval van 0: P1 & = senen_seg [uur/10]; breken;
geval 1: als (count_time > = 2000) P1 & = senen_seg [uur/10]; breken;
geval 2: if(delayed_hour==24) P1 = 0xfe; anders P1 & = senen_seg [delayed_hour/10];
breken;
Case 3: als (count_bit > = 5) P1 & = senen_seg [count_hour/10]; anders P1 = 0xff;
breken;
geval 4: P1 & = senen_seg [count_hour/10];
breken;
geval 5: P1 & = senen_seg [count_hour/10]; breken;
}
P3_4 = 0;
delay(10);
Als (P3_5 == 1 & & key1_enter == 1) {}
Als (graaf > = 127) x = 1; anders x = 2; key1_enter = 0;
Graaf = 0;
}
Als (P3_2 == 1 & & key3_enter == 1) {}
x = 4;
key3_enter = 0;
}
P3_4 = 1;
P1| = 0XFF;
Als (programma < = 1 & & count_time > = 2000) P1 & = 0xff;
Als (programma < = 1 & & count_time < = 2000) P1 & = 0x7f;
if(Program==2) P1 & = 0x7f;
if(Program==3) P1 & = 0xff;
if(Program==4) P1 & = 0x7f;
if(Program==5) P1 & = 0xff;
y = x;
x = 0;
retourneren van y;
}
void main() {}
P1 = 0XFF;
P3 = 0XFF;
time0_init();
while(1) {}
switch(Program) {}
geval van 0: {while(program==0)}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 1;
breken;
}
}
breken;
geval 1: {while(program==1)}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 2;
breken;
Case 3: uur ++;
Als (uur > = 24) uur = 0;
breken;
geval 4: minute ++;
Als (minuut > = 60) minuten = 0;
breken;
}
}
breken;
geval 2: {while(program==2)}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 3;
breken;
Case 3: delayed_hour ++;
Als (delayed_hour > = 25) delayed_hour = 0;
breken;
geval 4: delayed_minute ++;
Als (delayed_minute > = 60) delayed_minute = 0;
breken;
}
}
breken;
Case 3: {while(program==3)}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 4;
breken;
Case 3: count_bit ++;
Als (count_bit > = 7) count_bit = 0;
breken;
geval 4: {switch(count_bit)}
geval van 0: count_second += 1;
breken;
geval 1: count_second += 10;
breken;
geval 2: count_minute += 1;
breken;
Case 3: count_minute += 10;
breken;
geval 4: count_hour += 1;
breken;
geval 5: count_hour += 10;
breken;
kast 6: breken;
}
Als (count_hour > = 100) count_hour-= 100;
Als (count_minute > = 60) count_minute-= 60;
Als (count_second > = 60) count_second-= 60;
breken;
}
if(count_bit==6) countdown_mark = 1;
anders countdown_mark = 0;
}
breken;
geval 4: count_hour = 0;
count_minute = 0;
count_second = 0;
while(Program==4) {}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 5;
breken;
Case 3: stopwatch_mark = ~ stopwatch_mark;
breken;
geval 4: {if(stopwatch_mark==0)}
count_hour = 0;
count_minute = 0;
count_second = 0;
}
breken;
}
}
breken;
geval 5: count_hour = 0;
count_minute = 0;
count_second = 0;
while(Program==5) {}
switch(show_key()) {}
geval van 0: breken;
geval 1: programma = 0;
breken;
geval 2: programma = 0;
breken;
Case 3: count_second ++;
Als (count_second > = 100) {}
count_second = 0;
count_minute ++;
Als (count_minute > = 100) {}
count_minute = 0;
count_hour ++;
Als (count_hour > = 100) count_hour = 0;
}
}
breken;
geval 4: count_hour = 0;
count_minute = 0;
count_second = 0;
breken;
}
if(P3_7==0) {}
while(P3_7==0) show_key();
count_second ++;
Als (count_second > = 100) {}
count_second = 0;
count_minute ++;
Als (count_minute > = 100) {}
count_minute = 0;