Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori ST626X. Ottava puntata 2/3

microcontrollori ST626X programmazione

IL PROGRAMMA

Il software, come al solito, inizializza le varie linee di I/O, assegna quindi ad ogni linea il corretto modo di funzionamento, in seguito controlla se i tasti 4, 5 e 6 sono premuti e se così è esegue la programmazione della memoria EEPROM. In quest’ultimo caso il micro attende la pressione di 5 tasti consecutivi e li memorizza nella propria EEPROM. A questo punto il micro entra nel loop principale in cui esegue ciclicamente tre diversi test. Il main program verifica se sono stati inseriti nella tastiera più di tre codici errati, se il tamper è attivo e se un tasto risulta premuto. Se tutti i test danno esito negativo il programma viene ripetuto in continuazione, in caso contrario il micro abbandona il programma principale ed esegue il gruppo di istruzioni associate all’evento in corso. Qualora vengano rilevati tre errori di digitazione del codice o l’apertura del tamper, il software provvede ad inibire la tastiera per circa 30 minuti e, nel contempo, fa lampeggiare i due led. Se viene rilevata la pressione di un tasto, il micro esegue un successivo test tra il tasto premuto e quello memorizzato nella EEPROM. Se i due coincidono, il programma incrementa il numero di cifre codificate, mentre se sono diversi, il programma incrementa il numero di errori.

Successivamente, il programma legge in RAM il numero di tasti correttamente codificati e se tale numero è uguale a 5 passa alla gestione del relè, in caso contrario torna nel programma principale. Compreso lo schema a blocchi, accendiamo il Computer e passiamo alla stesura vera e propria del programma sorgente.

ST626X_programma

Un esempio di listato è proposto (cod. MF68) nell’articolo; è evidente che il programma può essere modificato a piacere in funzione delle specifiche esigenze. Ad esempio, è possibile aumentare o diminuire il numero di cifre che compongono il codice oppure stabilire un diverso modo di funzionamento del relè. Come al solito, utilizziamo la pseudoistruzione “.DEF” per definire sia i registri che le celle RAM necessarie alla nostra applicazione. Poi, con la “.ORG” mappiamo la prima istruzione da far eseguire al micro nella prima cella di memoria programma, nel nostro caso la 80 hex.

ST626X_codici-contenitori

Utilizziamo la label “Reset” e l’istruzione “JP Reset” nel vettore di Reset, per comunicare al micro la prima istruzione da eseguire dopo l’accensione. Successivamente, disabilitiamo le interrupt, carichiamo il registro del watchdog e con l’istruzione “RETI” terminiamo l’interrupt di Reset. Inizializziamo le linee di I/O utilizzando i tre registri, direzione, opzione e dato, disponibili per ognuna delle tre Porte di I/O. La Porta B viene inizializzata come uscita open-drain, mentre la Porta C come uscita con resistore di pull-up. La Porta A viene scomposta in ingressi e uscite, per la precisione PA0, a cui è collegato il relè, deve essere programmato come uscita di tipo push-pull a valore basso, mentre PA1, PA2 e PA3 vanno inizializzati come ingressi con resistore di pull-up.

ST626X_keypad_in_pratica

Leggiamo ora lo stato del dip-switch DS1 e salviamo la configurazione del dip nel bit 2 della cella STATO. Utilizzeremo questo bit di RAM come flag del tipo di funzionamento prescelto: a bit settato associamo il funzionamento bistabile, mentre a bit resettato corrisponde il funzionamento monostabile. Digitiamo le istruzioni relative alla subroutine “MEMO” e alla “LEGEP”. Nella prima subroutine, il micro scrive nella memoria EEPROM i dati inseriti da tastiera, nella seconda il micro legge la EEPROM e trasferisce i dati in celle RAM. Utilizziamo la subroutine “EEPRR” per leggere la EEPROM nella locazione “puntata” dal registro X e trasferiamo il risultato della lettura, contenuto nell’accumulatore, nelle celle da KEY1 a KEY5. Terminata la programmazione e la lettura della EEPROM accendiamo il led verde qualora sia abilitato il funzionamento bistabile; in quest’ultimo caso, infatti, i led rispecchiano lo stato del relè. Digitiamo ora le istruzioni appartenenti al main program e facciamo quindi eseguire al micro i tre test sopra citati. Se gli errori sono uguali a 15 (cioè tre tentativi di codifica errati) o se il tamper è attivo eseguiamo una “CALL” alla subroutine “ALARM”. All’interno di quest’ultima, accendiamo i due led, attendiamo 1 secondo, spegniamo i due led, attendiamo 1 secondo e ricicliamo. Utilizziamo la cella COMODO per ripetere questo loop per 225 volte e la cella COMODO1 per riciclare quattro volte. In questo modo otteniamo una inibizione della tastiera di circa 1800 secondi, ovvero di 30 minuti. Terminati i loop, se il funzionamento bistabile era abilitato, ripristiniamo i led nella condizione in cui si trovavano prima dell’allarme.

Il kit è disponibile da Futura Elettronica

 

 

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 2 utenti e 57 visitatori collegati.

Ultimi Commenti