Conoscere per quanto tempo un tasto è stato premuto è utile per gestire menu differenti utilizzando un solo pulsante.
È un’operazione diffusa in molte apparecchiature elettroniche per gestire l’impostazione dell’orologio interno quando si chiede di premere il pulsante per 1 secondo per impostare le ore, premere per 2 secondi per impostare i minuti, premere per tre secondi per impostare i secondi e così di seguito.
Oggetti da inserire nel 3D System Panel
Dal menu Inputs, selezionare e aggiungere nel 3D System Panel il pulsante sw_push; da Properties, collegare il pulsante al pin 2 della porta D.
Dal menu Outputs, selezionare e aggiungere nel 3D System Panel due Lamp_led; da Properties, collegare i pulsanti, rispettivamente al pin 0 e al pin 1 della porta B.
Variabili di progetto
In Project explorer:
Macro Time
Quando si seleziona il tipo di Timer Interrupt da utilizzare, è necessario ricordare che:
La macro “time”, è collegata allo interrupt TMR2; il valore del prescaler determina quante volte il secondo, il programma richiamerà la macro “time”.
La macro “time”, controlla se il pulsante collegato alla porta D, bit 2, è premuto.
Ciclo principale
La funzione Decisione, if count > 5000, inserita nel ciclo principale, controlla se il pulsante è premuto per un tempo superiore al superamento del valore 5000 della variabile count, in tal caso esegue il percorso di destra:
Se il pulsante è premuto prima che la variabile count raggiunga il valore 5000, il programma prosegue .
La funzione Decisione if count >10, controlla che il pulsante sia premuto per un valore maggiore di 10, in tal caso:
diagramma di flusso completo
C code
Riccardo Monti