Per il nostro prossimo trucco, faremo del giocoleria di codice per rendere le cose un po 'più facili per noi
nell'invio di più messaggi sul display.
Scriveremo letteralmente il nostro messaggio nel programma e permettiamo al compilatore di capire i codici ASCII
per noi e quindi bloccare e caricare i caratteri sul display.
È lo stesso circuito dell'ultima lezione e infatti l'intero codice disponibile nella sezione
download è identico fino a
quando iniziamo
a scrivere caratteri sullo schermo.
Quindi costruiremo una tabella di caratteri che andremo a cercare, quindi trasferiremo quei caratteri
uno alla volta sul display.
Marceremo la fine del nostro messaggio con un codice di esadecimale 0 0 per passare attraverso il nostro tavolo
e faremo alcuni trucchi subdoli.
Per prima cosa prepareremo una chitarra.
Useremo quello all'indirizzo hecks 0 7 5.
Inizieremo cancellando.
Questo sta mettendo a zero.
E ogni volta che leggiamo un personaggio dal tavolo, conteremo 1 su quel segnalino.
Quindi ecco la nostra routine per guardare il tavolo e scriverlo sul display.
Abbiamo caricato il nostro contatore nel W. registrati perché lo useremo in questo
sottomarino, che chiamiamo subito.
Qui è il sottomarino chiamato Elenco Messaggi 1.
Quindi saltiamo qui sotto alla lista di Messud quando arriviamo qui abbiamo il contenuto della sua auto che stiamo usando è
un contatore caricato nei registri W così sai che l'abbiamo appena iniziato.
Quindi adesso il nostro account è a zero.
Ecco il nostro primo trucco furtivo.
Ti ricordi che il contatore del programma era un registro come qualsiasi altro registro a destra.
Potremmo leggerlo.
Potremmo persino scriverci sopra.
Diamine, possiamo persino eseguire funzioni matematiche su di esso.
Quindi adesso, quando arriviamo qui, il nostro contatore del programma punta proprio qui nel programma.
Questa è l'istruzione a cui punta il contatore del programma.
Questa istruzione dice in realtà al processore di eseguire una funzione matematica.
Stiamo andando ad aggiungere il contenuto del W. registrati a un file aggiungi w f.
Quindi il file che vogliamo aggiungere.
E infine c'è l'opzione di destinazione che abbiamo messo a uno che significa che
il risultato sarà memorizzato nel file non il registro W il file che abbiamo scelto è il contatore del programma PCL Quindi adesso il contatore del programma
punta a questa riga un'istruzione che aggiunge tutto ciò che si trova nel registro W al contatore
del programma.
In questo momento il registro W è 0.
Quindi aggiunge 0 al contatore del programma.
Ovviamente il contatore del programma non cambia ma il prossimo ciclo di clock ovviamente cambia
il contatore del programma in modo che conti 1 che ora punta a questa linea nel codice.
Questa istruzione è un ritorno con un letterale nel registro W.
Quindi questo è un ritorno da un comando di subroutine.
Ma quando ritorna, ritorna dalla routine della metropolitana con un valore di qualche tipo nel registro W.
Quindi ho bisogno di dirgli quali sono i contenuti letterali.
E potrei inserire un numero lì o, in questo caso, far funzionare il compilatore.
Ho messo una B maiuscola tra virgolette.
Molto importante quindi è nelle quotazioni.
Se un valore è in virgolette, dice al compilatore che qualunque cosa si trovi in quelle virgolette è
ciò che chiamiamo una stringa.
Ora ricordi che i microprocessori si occupano solo di numeri solo numeri.
In effetti un accordo con lettere dell'alfabeto inglese o qualsiasi alfabeto per quella materia.
Doveva tirare acrobazie come usare un set di caratteri ASCII.
Quindi non ha idea di cosa sia una lettera perché è solo il numero della stagione.
Questo è tutto ciò che importa.
Quando metto B in virgolette come questa, il compilatore va e guarda il proprio
grafico ASCII che ha costruito in esso cerca la B maiuscola perché si scopre che la B maiuscola è 0 1 0 0 0 0 1 0
in binario e mette quel numero nel registro die die.
Ritorna quindi alla subroutine principale dove è rimasto con il numero binario ASCII ASCII per una B
maiuscola seduta nel W. registrati dove lo useremo momentaneamente.
Ma voglio mostrarti come funziona questo tavolo.
Prima di tornare alla routine principale.
Ora diciamo che abbiamo passato la routine quattro volte.
Ora ogni volta che abbiamo chiamato questo elenco di messaggi una subroutine ne abbiamo contata una sul nostro contatore GPS.
Quindi ora il nostro conteggio è alle 4.
Quel contatore viene caricato nel W. registrati appena prima di chiamare questa subroutine quando arriviamo
in periferia.
Il nostro contatore del programma punta a questa linea proprio qui che è l'istruzione per aggiungere la W al
contatore del programma.
Al momento W ha un valore di 4, quindi il contatore del programma ne aggiunge quattro.
Whoa.
Cosa è appena successo.
Il nostro contatore di programmi ha appena superato quattro righe nel programma.
Uno due tre quattro.
Ha saltato tutte queste righe nel codice e il programma e il contatore del programma ora punta a questa
riga nel codice.
Ma il prossimo impulso di clock salta il contatore verso l'alto 1.
Come sempre.
Quindi il contatore del programma punta ora a questa linea.
Quando viene recuperata la prossima istruzione dal programma, ora carichiamo la lettera O come un numero binario ASCII
nel registro Dubee e la rimandiamo alla routine principale che la invierà al display LCD.
Ne verrà conteggiato uno in più sul nostro conteggio e quando tornerà di nuovo ne aggiungerà cinque al
contatore del programma.
Saltando avanti fino a qui sul programma, l'orologio incrementa ancora una volta come prima e
carica il punto esclamativo nel registro e lo rimanda alla routine principale.
E così continuerà ad aggiungere al contatore del programma che lo sposta avanti di una riga alla volta
recuperando la lettera successiva nella tabella.
La fine della nostra tabella è contrassegnata dal caricamento di uno 0 nel registro W.
Si noti che lo zero non è in virgolette.
Spiegherò perché dopo corro.
Quindi questo sta caricando un valore effettivo di 0 0 esadecimale nel W. Registrare.
Spero che abbia senso.