Quindi, con un contatore binario costruito, useremo questo per contare effettivamente quante volte premi un pulsante.
So che so che ti stai chiedendo cosa diavolo ci stai facendo.
Juba, lavori solo con me.
OK.
Sto cercando di mostrarti qualcosa.
Utilizzeremo essenzialmente lo stesso circuito dall'ultima lezione.
Tuttavia, ora passeremo a una X da un segnale di clock esterno al clock interno che funziona
a 16 megahertz.
Stiamo andando a mettere un pulsante collegato all'ingresso sono uno zero, che è il nostro output di ingresso digitale sulla
porta A.
Questo è il pin 13 sul chip stesso.
Configureremo il programma in modo che ogni volta che premiamo il pulsante il nostro contatore binario conta 1.
Sembra piuttosto semplice.
C'è un piccolo problema subdolo qui, voglio che tu veda in prima persona così puoi essere stupito quanto me.
Ogni volta che mi occupo di questo.
OK, quindi ancora una volta il codice
è disponibile.
Basta copiare e incollare.
Puoi copiarlo e incollarlo nella finestra dell'assemblatore del progetto di contatore binario se vuoi o ancora puoi praticare
la costruzione di un nuovo progetto da zero.
Vedi se dimentichi qualcosa nel set up e crash tutto quando vai a provare a programmarlo.
Puoi lasciare il 555 sul tabellone se vuoi.
Stiamo impostando il chip per ignorare quell'input, ma non useremo il 555 in nessun altro dei
nostri progetti pick.
Quindi, se vuoi tenerlo lì per il tuo uso personale mentre provi con il plettro, fallo.
Oppure puoi rimuoverlo completamente dal tabellone.
Diamo una rapida occhiata al codice in cui ti verrà presentato un paio di ulteriori istruzioni.
Ora nella sezione
fuzes abbiamo fatto solo un cambiamento ed ecco il registro FOMC che è il registro
che imposta la frequenza dell'oscillatore sull'orologio.
L'abbiamo cambiato da un orologio determinato esternamente all'I UN. OSCE o oscillatore interno.
Quindi l'orologio all'interno del chip è un falso di 16 megahertz anche se è possibile modificare tale frequenza.
E un paio di modi diversi in cui ci arriveremo in una lezione successiva dedicata a queste impostazioni dei fusibili.
La prima riga imposta la banca in cui si trova il registro di stato tri tri C sui pick, di solito ci
sono più porte su questo pick.
Abbiamo una porta a e una porta C e ricordate che molti di questi pin avevano più funzioni.
Hanno tre stati diversi.
Fondamentalmente possono essere un ingresso digitale che legge un segnale alto o basso in arrivo.
Potrebbero essere usati come uscita digitale che emette un segnale alto o basso o alcuni pin potrebbero essere configurati
come ingresso analogico per leggere una tensione molto elevata sul pin.
Quindi ci sono questi registri tri state specifici per ogni porta e si imposta la porta per fare ciò che
si desidera.
Ora la porta C ha solo 6 pin da r c 0 a RC 5.
Quindi il Registro Trixi ha un po 'associato con ogni porta C registra i primi due bit non importa perché non
sono comunque collegati a nulla.
Quindi se invio un numero binario di 0 0 1 0 1 1 0 1 al registro Tristate C allora ogni punto in cui lo
imposto diventa un ingresso digitale e ovunque sia stato impostato a zero diventa un'uscita digitale.
Quindi in questo esempio 0 2 3 e 5 sono stati tutti impostati su ingressi e RC 1 e 4 sono stati impostati come uscite.
Entrerò nelle impostazioni analogiche in una lezione successiva quando useremo gli ingressi analogici.
Quindi, nel nostro programma, per prima cosa ho selezionato la banca corretta.
Molto importante.
Ho barato e gli ho detto di impostare la banca in qualunque banca fosse la banca in cui si trovava il registro Tracy.
E poi l'ho cancellato.
Ho detto tutte le uscite Pinza.
Poi ho cambiato banca con quello che contiene l'albero è un registro.
È interessante notare che non avevo davvero bisogno di farlo qui perché succede che gli alberi vedano e
gli alberi a siano nella stessa banca su questo piccone.
Tuttavia, si ricorda che prima usavamo il file include all'inizio per facilità di
programmazione, ma anche per trasferire questo programma su un altro processore.
Quindi sto solo pensando in anticipo qui.
È una singola riga di codice non molto lavoro da digitare.
Ma se ora trasferisco questo codice su un altro micro pick e il registro si trova in
una banca diversa dal registro Taurasi.
Ho le mie basi coperte.
Inseriamo quindi il haf's haf nel registro di lavoro.
Tutti e otto in alto.
Quindi spostiamo il contenuto del registro di lavoro sugli alberi.
Tutti i pin collegati alla porta sono ora impostati come ingressi.
Ora usando presto uno di questi ingressi è eccessivo, ma è stato semplice.
Impostiamo la banca sul registro di Laxey che è il registro in cui scriviamo effettivamente per scrivere gli arresti C e
i suoi bit corrispondono anche ai bit di porta C.
Ora possiamo scrivere direttamente su porta vedere se vogliamo invece scrivere sul latch ma spiegherò perché
più avanti è tecnico.
Cancelliamo il fermo.
Quindi ora tutti i nostri output sulla porta C sono bassi.
Facciamo la nostra prima etichetta Lupi il nostro primo ciclo scusatemi Lupi e poi selezioniamo la banca per Port A.
Dobbiamo farlo perché la porta si trova in una banca completamente diversa rispetto ai registri Tristate
o ai registri di chiusura.
Quindi verifichiamo nuovamente il controllo del test, solo che questa volta controlliamo l'input sul bit 0 della porta e il pin al
quale è collegato il nostro pulsante.
Se spingiamo il pulsante, leggiamo in alto su quel pin.
Quindi il comando specifico è di testare il bit 0 sulla porta A.
Se è deselezionato è chiaro per vedere che significa che il pulsante non è premuto.
Salteremo il prossimo comando.
Quindi non abbiamo premuto il pulsante.
Salta e arriva al comando per andare a Looby, poi torna indietro ancora e ancora 16 milioni di volte al secondo fino a
quando non si preme il pulsante.
Quando fai il grande test mostra il set più grande tenuto alto.
Quindi non salta il prossimo comando il prossimo comando chiama una subroutine.
C'è il nostro primo comando per chiamare la subroutine.
Ora etichette come Lupi one o button press
possono essere usate come punti di atterraggio per comandi come go to o call.
Ora, se glielo dico, andrà all'etichetta.
Ma se chiamo un'etichetta, ciò che accadrà è che andrà a quell'etichetta.
Eseguirà il codice fino a quando non vedrà il comando restituire il comando lì in basso alla fine della
subroutine della pressione dei pulsanti.
Ora ricorda Dan the Man con lo stack qui è dove entra.
Quindi ricorda dove ti sei interrotto qui.
E memorizza quella linea in questa pila.
Quindi quando emetti il comando di ritorno ti riporterà da qui a destra, dove hai interrotto,
non lo fa.
Vai a andare lì senza alcuna aspettativa di tornare morto.
L'uomo non ricorda da dove sei venuto e non gli importa.
Sei solo tu che sai saltare il programma con il comando vai.
Quindi chiamiamo il sottomarino che salta giù per premere un pulsante.
La prima cosa che succede è che selezioniamo la banca perché vediamo perché dobbiamo lavorare
su quel registro.
Quindi facciamo esattamente come abbiamo fatto nel nostro contatore binario originale che abbiamo controllato per vedere se è già arrivato a 16 nel
conteggio o meno.
Se è stato impostato su zero, avvia nuovamente il conteggio e continua la linea di codice.
Selezioniamo il banco per la porta A e controlliamo che la porta A stia leggendo un valore basso sul bit 0 perché abbiamo rilasciato il pulsante
se stiamo ancora tenendo premuto quel pulsante, quindi salterà sul pulsante dell'etichetta che si trova qui
sopra.
E continuerà a farlo finché non rilasciamo il pulsante, ma il bit zero sulla porta A mostra un valore basso e il bit test dice
di saltare il comando successivo.
E salta al comando di ritorno.
Ora torna a qui.
E continua questo ciclo ancora e ancora in attesa di premere nuovamente il pulsante.
OK.
Spero che abbia senso ora.
Lo schema è nella sezione download e una volta che hai costruito
hai fatto lampeggiare il programma sulla foto provalo.
Il conto alla rovescia ogni
volta che si preme il pulsante, ma si verificherà un malfunzionamento.
Voglio che tu ci giochi per un po 'e vediamo se riesci a capire cosa sta succedendo.
Sai se sei davvero intelligente potresti persino capire perché sta facendo quello che sta facendo.
Nessuna.
Quindi nella prossima lezione parleremo di cosa sta succedendo e cosa fare al riguardo.