Timer con visualizzazione su terminale seriale
Il sistema digitale si deve comporatre come un cronometro con conteggio in salita e discesa, risoluzione di 1 ms, tempo minimo 0 secondi, tempo massimo 999.999 secondi.
Dopo il reset il tempo interno è fissato a 0 secondi e il conteggio è fermo. Ciascuno dei due tasti consente di avviare e interrompere il conteggio interno. Il conteggio in salita si avvia solo se il tempo interno è inferiere a 999.999 secondi, altrimenti la pressione del tasto non ha nessun effetto. Analogamenti, il conteggio in discesa di avvia solo se il tempo interno è inferiore a 0.
Quando il conteggio è fermo, il sistema invia sulla UART i caratteri che rappresentano il tempo in secondi nel formato SSS.MMM . La trasmissione di questi caratteri avviene con la cadenza di un secondo. E' compito del sistema digitale inviare i caratteri di controllo necessari al terminale seriale per mantenere la visualizzazione dei caratteri di ogni nuova visulaizzazione nella stessa posizione sullo schermo (tipicamente deve essere trasmesso un “CR” alla fine della stringa“.
Durante il conteggio, sempre con la cadenza di un secondo, viene inviato solo il conteggio relativo ai secondi nel formato SSSbbbb, dove “b” rappresenta il carattere “spazio”.
Quando il conteggio è in corso e in salita, il led verde deve essere acceso e gli altri devono essere spenti. Quando il conteggio è in corso e in discesa, il led blu deve essere acceso e gli altri devono essere spenti. Quando il conteggio interno è pari al valore massimo, il led rosso deve essere acceso egli altri devono essere spenti. Se il conteggio è ferno sullo 0, tutti i led devono essere spenti.
