OK, quindi se lo hai capito, il conteggio sembra erratico.
In effetti se si preme il pulsante molto lentamente diventa davvero irregolare.
Quindi, ecco cosa sta succedendo quando si preme quel pulsante i contatti si uniscono.
E a livello microscopico i contatti si scontrano uno contro l'altro e poi si rimbalzano
letteralmente l'uno dall'altro.
Questi contatti possono rimbalzare più volte a seconda di come si preme il pulsante e le condizioni del
pulsante.
Questo orologio a microprocessore è in realtà molto lento rispetto a me.
Voglio dire, il mio microprocessore per laptop el cheapo è in esecuzione ad un punto otto giga Hertz 1. 8 miliardi di cicli di clock al secondo a 112
volte più veloce di quanto il nostro pick non sia ancora in esecuzione.
L'immagine è così incredibilmente veloce che può letteralmente contare i rimbalzi microscopici del tuo pulsante.
Quindi, se il tuo conteggio binario sembra aumentare di uno solo quando premi il pulsante,
ci sono davvero buone probabilità che contino fino a 17.
Ha letteralmente avvolto il conteggio attorno a 0 e ha contato un numero dopo il punto in cui era stato interrotto
quando si preme il pulsante per indicare la velocità di esecuzione del programma.
Quindi questo è un grosso problema che dovrai affrontare nei microprocessori.
Ora ci sono alcuni modi in cui puoi gestirlo con il tuo programma e uno comune è una serie di passaggi.
Si legge che hai premuto il pulsante su cui conta che hai premuto il pulsante e poi torna indietro e controlla
di nuovo.
Se il pulsante è ancora premuto o chiuso, aggiunge al conteggio se il pulsante è ora rilasciato perché è
stato rimbalzato.
Imposta il conteggio su 0 e torna indietro e controlla ancora per vedere se premi il pulsante che hai.
Quindi ricomincia a contare, ma rimbalza di nuovo e quindi imposta il conteggio a 0 e ricomincia a contare quando
rileva che hai premuto il pulsante.
Ora attenderà fino a quando non sarà tornato, per esempio, a fare 50
cicli consecutivi in cui si teneva premuto il pulsante, quindi conta che premendo un pulsante, si aspetta che tu rilasci il pulsante.
Ma mentre stai rilasciando il pulsante, i contatti possono creare o interrompere più volte.
Quindi continua a contare e non considera di aver rilasciato il pulsante finché non conta 50 cicli di
fila in cui viene rilasciato il pulsante.
Ora può sembrare ridicolo, ma questo ti dà un'idea di quanto siano veloci e potenti anche
i microprocessori.
Questo processo è chiamato De rimbalzi.
E sì, il tuo computer desktop analizza la tua tastiera con una frequenza di un secondo, non solo per
vedere cosa hai premuto, ma per quanto tempo è rimasto premuto.
Puoi anche fare un po 'di bilanciamento profondo con l'hardware.
Un condensatore attraverso il pulsante, per esempio.
Ci vuole tempo per ricaricare.
In teoria ci vuole più tempo per caricarsi di quanto non ci vuole per il tempo necessario
per il rimbalzo.
Quindi stiamo andando a modificare il nostro contatore binario del pulsante e lanciare alcuni loop
e contare quanti cicli viene premuto il pulsante e poi fare lo stesso per il rilascio del pulsante.
Ora stiamo andando a imbrogliare un po 'solo per semplificare le cose per questa lezione e
ci limiteremo a contare fino a 50 volte dove il pulsante è stato letto e mostrato in alto non reimposterà il conteggio a 0 nel mezzo
di contare
Se rileviamo che il pulsante che conoscete è stato rilasciato da noi, per esempio, contiamo
semplicemente fino a 50 Hy in rosso sul pulsante e lo chiameremo premendo un solo pulsante.
Questo è semplicemente supponendo che 50 cicli richiederanno più tempo per eseguirsi di quanto occorra affinché
il rimbalzo si fermi.
Verrai introdotto anche nella RAM all'interno del processore che puoi utilizzare per i tuoi programmi.
Hai 16 byte che sono facilmente accessibili e si trovano all'indirizzo di memoria esadecimale 0 0 7 0 e in realtà è un
indirizzo a 12 bit.
Quindi i primi quattro bit non sono usati.
Non ci sono circuiti lì quindi non importa quello che hai messo lì.
E noterai la scheda tecnica in cui scrivono l'indirizzo a volte come x 0 7 0.
X significa solo che non ha importanza perché non è valido.
Diamo un'occhiata al nostro codice.
Tutto nella configurazione è esattamente lo stesso di prima della porta C come output e Port A.
Come input.
Che cosa è.
E iniziamo il nostro ciclo principale controllando per vedere se il pulsante viene
premuto quando si preme il pulsante.
Veniamo inviati al pulsante press loop.
È qui che
diventa divertente perché questo è ancora un contatore binario, la prima cosa che facciamo è incrementare
il numero di pt. S..
Quindi controlliamo per assicurarsi che non abbia ancora raggiunto il numero 16 e se è stato impostato il conteggio a
0 0 proprio come prima, quindi carichiamo il registro W con un numero decimale di 50.
Ora puoi giocare con questo numero se vuoi.
Questo è il numero di cicli che il processore deve visitare e conteggia il valore massimo del pulsante.
Prima di lasciar proseguire il programma.
Prendiamo quindi quel numero e trasferiamo i commenti del registro al file all'indirizzo hecks 0 0 7 0.
Questa è la nostra memoria RAM generica.
Noterai che non dovevo selezionare la banca prima di aver memorizzato quel numero nella memoria generale.
Ci sono alcuni registri nella foto che sono indirizzati in ogni singola banca e queste posizioni generali
sono alcune di queste.
Ora qui nella scheda tecnica vediamo che contengono i byte inferiori in ogni singola banca.
C'è un sacco di motivi per cui l'hanno fatto in questo modo ma per ora basta seguire il flusso.
Una volta che il nostro numero è stato memorizzato nella RAM, andiamo a questo ciclo di controllo per assicurarci che il
pulsante sia ancora premuto ogni volta che il programma passa attraverso il loop. Decora immensa il numero e registra
l'indirizzo 0 0 7 0.
Conta giù un numero alla volta.
Ma questo comando non danneggia solo il numero nel registro.
Fa anche un rapido controllo se il registro è zero salta il prossimo comando.
Quindi questa intera riga è un file di decremento saltare il comando successivo se 0.
Ora ci sono alcuni comandi come questo con una funzione utile.
È già un potente comando a più passaggi, non solo sottrarre uno da qualsiasi registro a cui
lo dico.
Controlla anche quel registro per vedere se è ancora 0 a zero ancora.
E vedi questa virgola e un 1 dopo.
Ho due opzioni lì.
Se metto uno zero lì, toglie il numero dal registro che gli ho detto di sottrarre 1 e poi
inserisce il numero nel registro di lavoro.
Posso quindi continuare a eseguire un po 'di elaborazione matematica su di esso, se mi piace o
se inserisco un 1 lì come è stato fatto, ma inserisco il numero risultante proprio nel registro da cui proviene.
Quindi questo è un comando molto potente e ce ne sono alcuni che vorrebbe visitare
mentre andiamo qui li puoi vedere tutti nelle istruzioni che hai scaricato o
nel foglio dati Pick sotto le pagine del set di istruzioni.
Quindi, se il programma è passato in rassegna e ha contato 50 volte in cui il pulsante è stato premuto quando lo
ha visitato, salta ora questa riga successiva per andare al conteggio 1 comando.
Ora ricarica la nostra memoria RAM generica con il numero decimale di 50.
Anche in questo caso si trova in questo ciclo in attesa
di rilasciare il pulsante se si preme il pulsante.
Salta questo prossimo comando che è il comando per contare 1 nella nostra memoria.
Salterà il conto alla rovescia per saltare al conteggio per comandare il salto al conteggio 2 e continuare a controllare il
ciclo per vedere che hai rilasciato il pulsante ogni volta che conta il pulsante rilasciato sottraete 1 dal numero
in memoria fino colpisce 0.
Quando raggiunge zero, l'istruzione è di saltare l'istruzione successiva che sta per contare su di essa
salta sopra quella istruzione e vede il comando di ritorno.
Ora torna indietro al comando di chiamata da dove era stato interrotto e ricomincia a ripetere il ciclo cercando la prima
volta che si preme di nuovo il pulsante.
OK.
Spero che non sia stato troppo confuso.
Il circuito è già stato costruito.
Hai solo bisogno di flashare il tuo plettro con questo nuovo programma.
OK, vai a vedere come si comporta.
Puoi cambiare il numero di conteggi come vuoi e vedere come si comporta in particolare se premi i
pulsanti Luli che è il momento in cui ottieni il massimo che sai fare e rompere il contatto nello switch.