En del radiosändare klocka tid (3 / 4 steg)
Steg 3: Kodning moduleringen med en tidssignal
ISR(TIMER0_COMPA_vect) {
Växla (slot) {
fall 0: {signal = 2; break;}
fall 1: {signal = ((minute_tens >> 2) och 1), bryta;} / / min 40
fall 2: {signal = ((minute_tens >> 1) & 1), bryta;} / / min 20
fall 3: {signal = ((minute_tens >> 0) & 1), bryta;} / / min 10
fall 5: {signal = ((minute_ones >> 4) & 1), bryta;} / / min 8
mål 6: {signal = ((minute_ones >> 2) & 1), bryta;} / / min 4
fall 7: {signal = ((minute_ones >> 1) & 1), bryta;} / / min 2
mål 8: {signal = (minute_ones & 1), bryta;} / / min-1
mål 9: {signal = 2; break;}
ärende 12: {signal = ((hour_tens >> 1) & 1), bryta;} / / timme 20
ärende 13: {signal = ((hour_tens >> 0) & 1), bryta;} / / timme 10
mål 15: {signal = ((hour_ones >> 4) & 1), bryta;} / / timme 8
fall 16: {signal = ((hour_ones >> 2) & 1), bryta;} / / timme 4
17 i mål: {signal = ((hour_ones >> 1) & 1), bryta;} / / timme 2
fall 18: {signal = (hour_ones & 1), bryta;} / / timme 1
19 i mål: {signal = 2; break;}
fall 26: {signal = 1; break;} / /
fall 27: {signal = 1; break;} / / dag år 60
i mål 29: {signal = 2; break;} / /
fall 31: {signal = 1; break;} / /
i mål 32: {signal = 1; break;} / / dag år 6
37 i mål: {signal = 1; break;} / /
Case 39: {signal = 2; break;}
fall 42: {signal = 1; break;} / /
fall 43: {signal = 1; break;} / / DUT1 = 0,3
fall 49: {signal = 2; break;}
fall 50: {signal = 1; break;} / / år = 08
fall 55: {signal = 1; break;} / / språnget året = sant
59 i mål: {signal = 2; break;}
standard: {signal = 0; break;}
}
Växla (signal) {
fall 0: {
0 (0.2s minskat power)
om (timer < 12) {OCR1A = 6;}
annat {OCR1A = 66;}
} bryta;
fall 1: {
1 (0.5s minskat power)
om (timer < 30) {OCR1A = 6;}
annat {OCR1A = 66;}
} bryta;
fall 2: {
Markör (0.8s minskat power)
om (timer < 48) {OCR1A = 6;}
annat {OCR1A = 66;}
} bryta;
}
timer ++; Advance timer
om (timer == 61) {/ / kontrollera för att se om slutet av andra
timer = 0; Om så återställer timer
Slot ++; Advance data slot i minut datapaket
om (slot == 60) {
Slot = 0; Återställa slot till 0 om på 60 sekunder
minute_ones ++; Advance minut räkna
}
}
}