Aggiungo la scritta “Preset”, all’inizio della prima riga del Display LCDI2C1 con Cursor 0,0 e con PrintString (“Preset”).
Nella simulazione, non avendo a disposizione un deviatore, utilizzo due interruttori; nella pratica, la medesima operazione, la farò con un solo deviatore, a zero centrale, che commuta dalla fase “Preset” a quella di “Conteggio”, spostando la levetta da una parte all’altra.
Per trasferire il contenuto della variabile “Totale”, che rappresenta il numero decimale impostato con i BCD_Binary_Switch, utilizzo un deviatore collegato al pin2 della porta D.
Dal menu “Input”, inserisco nella “dashboard” due deviatori:
collegamento dei deviatori read” e “Start”.
nuove variabili
Conteggio up
L’operazione di conteggio, avviene con la macro “conteggio”.
dal menu “MACRO”, creo la macro “conteggio” che contiene la funzione “Calcolo” con l’espressione
count = count + 1
per richiamare la macro “Conteggio”, utilizzerò l’Interrupt TRM1.
La funzione “Input Read” controlla lo stato del deviatore sw_slide_sub_pcb2.
Se il deviatore è spostato a destra: if Read= 1
Il programma esegue il ciclo di lettura dei BCD_Binary_Switch.
Se il deviatore è spostato a sinistra: if Read = 0
Il programma prosegue il percorso verso il basso visualizzando il contenuto della variabile “totale”, sulla riga inferiore del display alla posizione Cursor 1,10; questo valore è visibile in Count Down.
impostazione “Preset”
ciclo ”conteggio up”, da zero al valore di preset.
con “count up”, il display mostra il contenuto di “count”
sposto sw_slide_sub_pcb2 (load) su OFF e sw_slide_sub_pcb1 (start). su ON.
la funzione “Decisione” : Start” = 1 (D3 -> ON), abilita TMR1 che richiama la macro “Conteggio”.
la funzione “Decisione”: if totale = count
controlla il contenuto della variabile “totale” .
quando totale = count (il conteggio raggiunge il valore di Preset)
la funzione “Output” : 1 -> D2
accende il led collegato all’uscita 2 della porta D.
l’istruzione successiva disabilita TMR1, bloccando il conteggio.
ClearLine(1)
pulisce la linea 1 del display
per predisporre un nuovo count down
video “ count up”
C Code
Riccardo Monti