WEBVTT

00:01.190 --> 00:08.840
Per il nostro prossimo trucco, faremo del giocoleria di codice per rendere le cose un po 'più facili per noi

00:08.900 --> 00:11.340
nell'invio di più messaggi sul display.

00:11.690 --> 00:19.670
Scriveremo letteralmente il nostro messaggio nel programma e permettiamo al compilatore di capire i codici ASCII

00:19.670 --> 00:25.360
per noi e quindi bloccare e caricare i caratteri sul display.

00:25.400 --> 00:32.180
È lo stesso circuito dell'ultima lezione e infatti l'intero codice disponibile nella sezione

00:32.270 --> 00:35.070
download è identico fino a

00:37.690 --> 00:39.370
quando iniziamo

00:42.100 --> 00:44.830
a scrivere caratteri sullo schermo.

00:45.510 --> 00:52.170
Quindi costruiremo una tabella di caratteri che andremo a cercare, quindi trasferiremo quei caratteri

00:52.170 --> 00:54.760
uno alla volta sul display.

00:55.140 --> 01:02.130
Marceremo la fine del nostro messaggio con un codice di esadecimale 0 0 per passare attraverso il nostro tavolo

01:02.130 --> 01:04.440
e faremo alcuni trucchi subdoli.

01:04.590 --> 01:07.040
Per prima cosa prepareremo una chitarra.

01:07.200 --> 01:11.860
Useremo quello all'indirizzo hecks 0 7 5.

01:12.420 --> 01:14.190
Inizieremo cancellando.

01:14.190 --> 01:16.880
Questo sta mettendo a zero.

01:17.010 --> 01:22.330
E ogni volta che leggiamo un personaggio dal tavolo, conteremo 1 su quel segnalino.

01:22.770 --> 01:33.210
Quindi ecco la nostra routine per guardare il tavolo e scriverlo sul display.

01:33.290 --> 01:38.400
Abbiamo caricato il nostro contatore nel W. registrati perché lo useremo in questo

01:38.400 --> 01:40.720
sottomarino, che chiamiamo subito.

01:41.070 --> 01:44.510
Qui è il sottomarino chiamato Elenco Messaggi 1.

01:44.550 --> 01:53.310
Quindi saltiamo qui sotto alla lista di Messud quando arriviamo qui abbiamo il contenuto della sua auto che stiamo usando è

01:53.310 --> 01:58.350
un contatore caricato nei registri W così sai che l'abbiamo appena iniziato.

01:58.350 --> 02:00.940
Quindi adesso il nostro account è a zero.

02:01.230 --> 02:02.890
Ecco il nostro primo trucco furtivo.

02:04.240 --> 02:10.890
Ti ricordi che il contatore del programma era un registro come qualsiasi altro registro a destra.

02:10.990 --> 02:12.640
Potremmo leggerlo.

02:12.640 --> 02:14.320
Potremmo persino scriverci sopra.

02:14.320 --> 02:17.290
Diamine, possiamo persino eseguire funzioni matematiche su di esso.

02:17.680 --> 02:24.970
Quindi adesso, quando arriviamo qui, il nostro contatore del programma punta proprio qui nel programma.

02:24.970 --> 02:30.250
Questa è l'istruzione a cui punta il contatore del programma.

02:30.250 --> 02:35.290
Questa istruzione dice in realtà al processore di eseguire una funzione matematica.

02:35.360 --> 02:43.560
Stiamo andando ad aggiungere il contenuto del W. registrati a un file aggiungi w f.

02:43.960 --> 02:45.980
Quindi il file che vogliamo aggiungere.

02:46.240 --> 02:52.810
E infine c'è l'opzione di destinazione che abbiamo messo a uno che significa che

02:52.810 --> 03:05.130
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

03:05.130 --> 03:13.050
punta a questa riga un'istruzione che aggiunge tutto ciò che si trova nel registro W al contatore

03:13.050 --> 03:14.100
del programma.

03:14.160 --> 03:16.120
In questo momento il registro W è 0.

03:16.170 --> 03:18.790
Quindi aggiunge 0 al contatore del programma.

03:18.900 --> 03:25.410
Ovviamente il contatore del programma non cambia ma il prossimo ciclo di clock ovviamente cambia

03:25.410 --> 03:32.580
il contatore del programma in modo che conti 1 che ora punta a questa linea nel codice.

03:32.670 --> 03:40.300
Questa istruzione è un ritorno con un letterale nel registro W.

03:40.650 --> 03:43.630
Quindi questo è un ritorno da un comando di subroutine.

03:43.650 --> 03:51.930
Ma quando ritorna, ritorna dalla routine della metropolitana con un valore di qualche tipo nel registro W.

03:51.930 --> 03:55.710
Quindi ho bisogno di dirgli quali sono i contenuti letterali.

03:56.070 --> 04:01.590
E potrei inserire un numero lì o, in questo caso, far funzionare il compilatore.

04:01.860 --> 04:06.130
Ho messo una B maiuscola tra virgolette.

04:06.300 --> 04:08.340
Molto importante quindi è nelle quotazioni.

04:08.340 --> 04:15.360
Se un valore è in virgolette, dice al compilatore che qualunque cosa si trovi in quelle virgolette è

04:15.510 --> 04:17.460
ciò che chiamiamo una stringa.

04:17.470 --> 04:22.380
Ora ricordi che i microprocessori si occupano solo di numeri solo numeri.

04:22.480 --> 04:27.180
In effetti un accordo con lettere dell'alfabeto inglese o qualsiasi alfabeto per quella materia.

04:27.370 --> 04:31.750
Doveva tirare acrobazie come usare un set di caratteri ASCII.

04:31.750 --> 04:36.880
Quindi non ha idea di cosa sia una lettera perché è solo il numero della stagione.

04:37.180 --> 04:39.130
Questo è tutto ciò che importa.

04:39.250 --> 04:46.510
Quando metto B in virgolette come questa, il compilatore va e guarda il proprio

04:46.510 --> 05:00.760
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

05:00.940 --> 05:06.720
in binario e mette quel numero nel registro die die.

05:06.790 --> 05:17.620
Ritorna quindi alla subroutine principale dove è rimasto con il numero binario ASCII ASCII per una B

05:17.620 --> 05:22.800
maiuscola seduta nel W. registrati dove lo useremo momentaneamente.

05:23.050 --> 05:25.300
Ma voglio mostrarti come funziona questo tavolo.

05:25.300 --> 05:27.900
Prima di tornare alla routine principale.

05:28.240 --> 05:30.820
Ora diciamo che abbiamo passato la routine quattro volte.

05:30.820 --> 05:40.600
Ora ogni volta che abbiamo chiamato questo elenco di messaggi una subroutine ne abbiamo contata una sul nostro contatore GPS.

05:40.690 --> 05:43.660
Quindi ora il nostro conteggio è alle 4.

05:43.900 --> 05:50.920
Quel contatore viene caricato nel W. registrati appena prima di chiamare questa subroutine quando arriviamo

05:50.920 --> 05:52.080
in periferia.

05:52.350 --> 05:59.590
Il nostro contatore del programma punta a questa linea proprio qui che è l'istruzione per aggiungere la W al

05:59.590 --> 06:01.100
contatore del programma.

06:01.420 --> 06:06.130
Al momento W ha un valore di 4, quindi il contatore del programma ne aggiunge quattro.

06:06.250 --> 06:06.980
Whoa.

06:07.210 --> 06:08.950
Cosa è appena successo.

06:08.950 --> 06:12.700
Il nostro contatore di programmi ha appena superato quattro righe nel programma.

06:12.700 --> 06:15.520
Uno due tre quattro.

06:16.580 --> 06:23.150
Ha saltato tutte queste righe nel codice e il programma e il contatore del programma ora punta a questa

06:23.150 --> 06:24.540
riga nel codice.

06:24.650 --> 06:29.810
Ma il prossimo impulso di clock salta il contatore verso l'alto 1.

06:29.900 --> 06:31.270
Come sempre.

06:31.280 --> 06:34.490
Quindi il contatore del programma punta ora a questa linea.

06:34.820 --> 06:43.160
Quando viene recuperata la prossima istruzione dal programma, ora carichiamo la lettera O come un numero binario ASCII

06:43.160 --> 06:50.930
nel registro Dubee e la rimandiamo alla routine principale che la invierà al display LCD.

06:51.230 --> 06:57.530
Ne verrà conteggiato uno in più sul nostro conteggio e quando tornerà di nuovo ne aggiungerà cinque al

06:57.530 --> 06:58.880
contatore del programma.

06:58.880 --> 07:06.050
Saltando avanti fino a qui sul programma, l'orologio incrementa ancora una volta come prima e

07:06.200 --> 07:12.810
carica il punto esclamativo nel registro e lo rimanda alla routine principale.

07:13.220 --> 07:19.580
E così continuerà ad aggiungere al contatore del programma che lo sposta avanti di una riga alla volta

07:19.580 --> 07:22.130
recuperando la lettera successiva nella tabella.

07:22.130 --> 07:27.380
La fine della nostra tabella è contrassegnata dal caricamento di uno 0 nel registro W.

07:27.380 --> 07:31.400
Si noti che lo zero non è in virgolette.

07:31.400 --> 07:33.710
Spiegherò perché dopo corro.

07:33.770 --> 07:42.430
Quindi questo sta caricando un valore effettivo di 0 0 esadecimale nel W. Registrare.

07:42.440 --> 07:43.950
Spero che abbia senso.
