Paso 3: Codificación de la modulación con una señal de tiempo
{ISR(TIMER0_COMPA_vect)}
interruptor (ranura) {}
caso 0: {señal = 2; break;}
caso 1: {señal = ((minute_tens >> 2) & 1); break;} / / min 40
caso 2: {señal = ((minute_tens >> 1) & 1); break;} / / min 20
caso 3: {señal = ((minute_tens >> 0) & 1); break;} / / min 10
caso 5: {señal = ((minute_ones >> 4) & 1); break;} / / min 8
caso 6: {señal = ((minute_ones >> 2) & 1); break;} / / min 4
caso 7: {señal = ((minute_ones >> 1) & 1); break;} / / min 2
caso 8: {señal = (minute_ones & 1); break;} min 1
caso 9: {señal = 2; break;}
caso 12: {señal = ((hour_tens >> 1) & 1); break;} / / hora 20
caso 13: {señal = ((hour_tens >> 0) & 1); break;} / / hora 10
caso 15: {señal = ((hour_ones >> 4) & 1); break;} / / hora 8
caso 16: {señal = ((hour_ones >> 2) & 1); break;} / / hora 4
caso 17: {señal = ((hour_ones >> 1) & 1); break;} / / hora 2
caso 18: {señal = (hour_ones & 1); break;} hora 1
caso 19: {señal = 2; break;}
caso 26: {señal = 1; break;} //
caso 27: {señal = 1; break;} Día del año 60
caso 29: {señal = 2; break;} //
caso 31: {señal = 1; break;} //
caso 32: {señal = 1; break;} Día del año 6
caso 37: {señal = 1; break;} //
caso 39: {señal = 2; break;}
caso 42: {señal = 1; break;} //
caso 43: {señal = 1; break;} DUT1 = 0.3
caso 49: {señal = 2; break;}
caso 50: {señal = 1; break;} Año = 08
caso 55: {señal = 1; break;} Año bisiesto = True
59 del caso: {señal = 2; break;}
por defecto: {señal = 0; break;}
}
interruptor (señal) {}
caso 0: {}
0 (0.2s reducido poder)
Si (contador < 12) {OCR1A = 6;}
Else {OCR1A = 66;}
} break;
caso 1: {}
1 (0.5s reducido poder)
Si (contador < 30) {OCR1A = 6;}
Else {OCR1A = 66;}
} break;
caso 2: {}
Marcador (0.8s reducido poder)
Si (contador < 48) {OCR1A = 6;}
Else {OCR1A = 66;}
} break;
}
contador ++; Contador de avance
Si (contador == 61) {/ / comprobar si en el final de segunda
Contador = 0; Si así restablecer el temporizador de
ranura ++; Ranura de datos avance en paquete de datos minutos
Si (ranura == 60) {}
ranura = 0; Restablecer la ranura a 0 si en 60 segundos
minute_ones ++; Avance cuenta minuta
}
}
}