Home
Accesso / Registrazione
 di 

Scritte scorrevoli con orologio - 2

Scritte scorrevoli con orologio

Ad ogni frazione di 5 millisecondi, il timer T0 genera una interrupt ed il nostro micro esegue tutte le istruzioni appartenenti all’etichetta TIME. Osservando il relativo flowchart, notiamo che ogni 5 millisecondi viene incrementata la cella di RAM dei millisecondi finché quest’ultima non raggiunge il numero 200: questo valore corrisponde ad 1 secondo (200x5 msec = 1000 msec, cioè 1 secondo) che è il valore minimo visualizzabile dal display.

Fino a quando il contatore non raggiunge le 200 unità la subroutine TIME non esegue nessuna altra operazione. In caso contrario, ovvero al raggiungimento del numero 200, il contatore software del programma T0 si azzera e contemporaneamente verifica lo stato dei pulsanti di impostazione di ore e minuti; se nessuno è premuto viene incrementato di una unità il contatore dei secondi.

scritta_scorrevole_dati_segmento

Quando il contatore delle 200 unità raggiunge un periodo di 1000 millisecondi, si resetta automaticamente e viene incrementato di un’altra unità il contatore dei secondi, sempre a patto che nessuno dei pulsanti sia premuto. Al raggiungimento del sessantesimo secondo il contatore relativo si azzera e comanda l’azzeramento della cifra sul display (:00) incrementando questa volta un terzo contatore, quello dei minuti.

Riepilogando, abbiamo la base dei tempi a 5 millisecondi che eccita il contatore di base, il quale fornisce un impulso ogni secondo: questi eccitano il contatore dei secondi, che ogni 60 unità eccita quello dei minuti. Quando il contatore dei minuti raggiunge i 60 impulsi si azzera e aggiorna quello delle ore: quest’ultimo avanza di un passo ogni 60 impulsi/minuto (un’ora è formata proprio da 60 minuti primi). Anche gli impulsi relativi alle ore aggiornano un contatore che attende di raggiungere il valore 13.

Quando tale valore viene raggiunto l’orologio si resetta e il display visualizza le ore 01:00:00; si azzera anche il contatore delle ore, mentre gli altri si azzerano automaticamente da soli. Il risultato dell’orologio, ovvero quanto contato dai dispositivi delle ore, minuti, secondi, viene trasferito in una ben precisa area di memoria dati del micro. Questa zona di dati, che nel proseguimento dell’articolo indicheremo con il termine Buffer di RAM, è compresa tra gli indirizzi esadecimali 20 e 44 (dal segmento 0 al 35, locazioni dalla 321 alla 644). In pratica l’orologio viene aggiornato in RAM ogni secondo, ovvero ogni 200 unità del primo contatore. Dopo il caricamento nel Buffer di RAM, la subroutine TIME provvede anche alla conversione dei dati binari relativi all’orologio in altrettanti caratteri ASCII i cui numeri BCD vengono convertiti (grazie ad una apposita tabella implementata nella memoria programma) in byte adatti a pilotare correttamente le righe del display. Vedremo tra poco come avviene la visualizzazione.

scritta_scorrevole_software

Analizziamo prima cosa accade se durante l’esecuzione della routine di interrupt di T0 si preme uno dei pulsanti. Ciascuno dei due viene “testato” ogni volta che il contatore della basetempi si resetta, ovvero ogni secondo: se si trova premuto il pulsante dei minuti si avvia la subroutine di aggiornamento dei minuti, che determina l’avanzamento di un’unità nel contatore dei minuti; una unità per ogni volta che si preme il relativo pulsante (P1). Se il pulsante dei minuti non è premuto il programma slitta al blocco di test successivo, ovvero va a controllare lo stato del pulsante delle ore (P2); se questo viene premuto si avvia la subroutine che incrementa di una unità il contatore delle ore (0÷13) con la modalità già vista per l’aggiornamento dei minuti.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 9 utenti e 94 visitatori collegati.

Ultimi Commenti