WEBVTT

00:02.840 --> 00:04.940
Sappiamo che in realtà abbiamo programmato la scelta.

00:04.970 --> 00:11.900
Diamo un'occhiata a tutto ciò che abbiamo fatto perché alcuni di voi probabilmente sono seduti lì

00:11.960 --> 00:14.760
andando Ciò che mai ho fatto.

00:15.560 --> 00:15.980
Lo so.

00:15.980 --> 00:22.430
Flo sappiamo che una Jetpack Academy aveva già bruciato le lezioni e si è detta orgogliosa di sé

00:22.430 --> 00:25.850
per aver programmato e messo in funzione la foto.

00:25.850 --> 00:31.820
E tu dovresti essere il primo passo è molto impegnativo.

00:31.820 --> 00:34.060
Principalmente a causa del laboratorio.

00:34.370 --> 00:39.530
Ma dopo questa prima volta penso che lo troverai davvero molto semplice.

00:39.680 --> 00:45.900
Basta una questione di programmazione o di codice per masterizzare il peg e testare il programma.

00:46.160 --> 00:50.630
MP lab in realtà rende davvero le cose travolgenti in fretta.

00:50.630 --> 00:58.730
Ma come vedrai, in realtà è uno strumento molto potente per costruire progetti e testarli senza

00:58.730 --> 01:00.890
nemmeno programmare un chip.

01:00.890 --> 01:06.220
Quindi dai un'occhiata al tuo codice.

01:06.430 --> 01:07.590
Analizziamolo.

01:07.630 --> 01:18.130
Le prime due righe sono per il compilatore e in realtà non sono le nostre istruzioni.

01:18.190 --> 01:22.720
Il compilatore deve sapere quale microcontrollore stiamo usando.

01:23.050 --> 01:24.460
Hai visto la lista.

01:24.590 --> 01:28.350
Ce ne sono centinaia e ognuno è diverso.

01:28.390 --> 01:35.590
Indirizzi diversi per le porte e registri diversi numeri di porte registri degli encoder e così via.

01:35.750 --> 01:44.020
Quindi queste due linee dicono semplicemente al computer quale Chip stiamo usando e per caricare il file di informazioni per

01:44.110 --> 01:52.240
quel chip che è venuto con un giro vuoto, il file di informazioni è chiamato un file include e

01:52.240 --> 01:54.180
puoi vedere qui l'estensione.

01:54.250 --> 01:56.870
Io vedo per includere.

01:57.070 --> 02:03.290
Noterai anche questi semi-colon e note casuali dopo di loro.

02:03.610 --> 02:07.590
Si noti inoltre che il testo è in verde.

02:07.630 --> 02:16.820
Quando sei in un laboratorio vuoto, i semi-colon segnano ciò che viene dopo di loro come un commento.

02:16.960 --> 02:19.250
I commenti sono i tuoi commenti

02:19.270 --> 02:27.100
Possono essere qualsiasi cosa tu voglia e sono note a se stessi e il compilatore ignora tutto ciò che viene dopo il

02:27.100 --> 02:28.300
punto e virgola.

02:28.360 --> 02:36.100
Quindi quando scrivi il tuo codice è buona norma inserire commenti casuali che spieghino a te stesso cosa

02:36.100 --> 02:37.410
fa ogni linea.

02:37.420 --> 02:42.970
Credimi quando ti capita di entrare in un centinaio di righe di codice o

02:42.970 --> 02:52.210
più sarai grato di averti lasciato notare che le prossime due grandi linee potrebbero avvolgersi e apparire quattro o anche sei righe sullo schermo

02:52.210 --> 02:54.010
perché sono così lunghe.

02:54.010 --> 02:59.240
Queste sono le impostazioni di configurazione e chiamiamo questi fusibili di impostazioni.

02:59.710 --> 03:05.760
Ti ricordi che per l'orologio avevamo diverse opzioni, potevamo usare un orologio esterno come facevamo noi.

03:05.920 --> 03:12.920
Oppure è possibile utilizzare una coppia di condensatori di resistenza sul lato esterno del chip per modificare la velocità di clock.

03:13.030 --> 03:18.280
Oppure potremmo usare un cristallo per bloccare l'orologio ad una velocità esatta.

03:18.280 --> 03:20.590
O potremmo usare l'orologio integrato.

03:20.920 --> 03:25.350
Questa è un'opzione critica ed è impostata da uno di questi comandi.

03:25.360 --> 03:33.680
Nello specifico questo FLC FLC per la frequenza dell'oscillatore.

03:33.680 --> 03:36.490
Ora ti mostro come lavorare con questi fusibili più tardi.

03:36.560 --> 03:39.920
Ma li chiamiamo micce perché è originariamente quello che erano.

03:40.160 --> 03:46.550
Le impostazioni di configurazione erano E-Prime che hai bruciato dal fusibile quando hai programmato il chip

03:46.550 --> 03:54.200
e le impostazioni specifiche di prompt impostano la configurazione del chip come un intero casino delle impostazioni di configurazione in

03:54.200 --> 03:55.780
queste due linee.

03:55.910 --> 03:58.750
Li ignoreremo per ora ma OK.

03:59.300 --> 04:02.560
Questa riga successiva in realtà non ha bisogno di essere lì.

04:03.650 --> 04:06.470
Ma in realtà l'ho messo lì per salvare un po 'di confusione.

04:06.470 --> 04:12.100
Tutto ciò che accadrà è quando andrai a compilare il tuo codice e il laboratorio sputerà un intero casino

04:12.110 --> 04:13.610
di avvertimenti come informazioni.

04:13.730 --> 04:19.970
Le informazioni veramente giuste, ma sono formulate in modo tale da far scattare campanelli d'allarme nella

04:19.970 --> 04:20.750
tua testa.

04:20.780 --> 04:27.140
Implica che il tuo codice assembly è tutto incasinato e non funziona quando in realtà non c'è niente di

04:27.140 --> 04:27.830
sbagliato.

04:28.160 --> 04:33.760
Quindi includendo questa linea il compilatore non sputa questi avvertimenti.

04:33.920 --> 04:36.810
E questo fa solo risparmiare confusione.

04:37.310 --> 04:45.270
Quindi tutto fino a questo punto era la configurazione e l'installazione per il compilatore e il chip stesso.

04:45.470 --> 04:48.670
Ora entriamo nel nostro vero codice assemblatore.

04:50.280 --> 04:52.010
Ecco tutti i mnemonici.

04:52.010 --> 04:55.840
Diamo un'occhiata esattamente a quello che ha fatto esattamente.

04:55.860 --> 05:03.170
La prima riga che ho già spiegato in che modo i mnemonici sono stati spiegati.

05:03.240 --> 05:05.210
Ma non esattamente quello che hanno fatto o perché.

05:05.400 --> 05:12.090
Il primo bank select è necessario per un modo unico di costruire i pic micro.

05:12.090 --> 05:20.100
Ora se apri la tua scheda di prelievo e vai a pagina 30 vedrai la prima di diverse pagine di banche

05:20.100 --> 05:21.240
di registro.

05:21.240 --> 05:30.130
Questi sono elenchi di registri e si vede che sono suddivisi in banche di 128 registri alla volta.

05:30.150 --> 05:36.170
È stato complicato spiegare, ma fondamentalmente il design dell'architettura del film Micro è così

05:36.690 --> 05:42.690
che potrebbero facilmente espandere il chip se volessero aggiungere più registri o RAM.

05:42.750 --> 05:49.620
Hanno semplicemente aggiunto un'altra banca, facendo così le stesse istruzioni potrebbero essere utilizzate su tutti i

05:49.950 --> 05:52.880
chip PIC, indipendentemente dalla loro configurazione.

05:52.880 --> 06:00.110
Il rovescio della medaglia è quello di cambiare qualsiasi registro specifico in cui devi indicare in

06:00.110 --> 06:10.500
particolare la banca su cui vuoi lavorare perché chiamerai quel registro diciamo registro 23 e banca 15 non registro 23 e banca 1.

06:10.670 --> 06:13.370
Sono due registri diversi.

06:13.370 --> 06:20.210
Quindi nella prima riga del codice vedremo che stiamo provando a configurare i trig di registro port tri state.

06:20.210 --> 06:26.080
Vedi sembra cercarlo lì è in banca uno.

06:26.560 --> 06:33.530
Quindi per impostare il registro Trixy devo prima impostare il puntatore banca sul banco 1 nel nostro codice.

06:33.580 --> 06:42.380
Lo faccio con il comando select bag e potrei dargli l'indirizzo specifico del banco 0 1 in esadecimale ma l'ho fatto

06:42.800 --> 06:50.810
in un modo leggermente diverso a causa di quella prima riga di codice in cui ho detto al

06:51.050 --> 06:56.930
compilatore di includere il file di informazione sulla scelta 16 F 14 55.

06:56.930 --> 07:03.950
Una delle cose che contiene il file di informazioni è dove si trovano i registri all'interno del chip,

07:04.010 --> 07:07.040
incluso il banco in cui si trovano.

07:07.040 --> 07:13.370
Quindi, invece di dire al chip in inglese semplice di cambiare banca in banca, quello che

07:13.370 --> 07:21.290
ho detto è stato cambiare la banca in qualsiasi registro di banca Trixy si trova nel compilatore, poi va al file

07:21.800 --> 07:28.700
di informazioni cerca il registro di Trixi scopre che banca è in e compila nel codice della macchina.

07:28.700 --> 07:30.150
Ora, cosa hanno fatto in questo modo.

07:31.500 --> 07:36.870
Il motivo è perché diciamo che ora voglio usare un altro controller di selezione.

07:36.870 --> 07:40.430
Il linguaggio assembly nel mio programma è esattamente lo stesso.

07:40.450 --> 07:47.300
Tuttavia su quella particolare scelta il registro Trixy è in realtà una banca dire tre.

07:47.340 --> 07:54.540
Quindi se avessi inserito una cella bancaria esadecimale 0 o 1 nel mio codice assembly dovrei ora

07:54.540 --> 08:03.720
passare attraverso il mio intero programma e trovare ogni istanza in cui ho selezionato Bank One e cambiare la banca tre facendo riferimento

08:03.720 --> 08:08.820
al registro specifico che voglio indirizzare invece di un effettivo indirizzo bancario.

08:09.120 --> 08:12.310
Il compilatore va e cerca la banca solo per me.

08:12.510 --> 08:19.530
Così ora, quando cambio i chip, l'unica linea che dovrei dover cambiare sono i primi due

08:22.450 --> 08:28.690
o semplicemente dire a quale chip sto usando e boom carica il file include.

08:28.820 --> 08:36.440
Quindi la mia prima istruzione seleziona Bank 1 così posso accedere al registro Trixi che si trova nella

08:36.440 --> 08:38.410
riga successiva del codice.

08:38.600 --> 08:44.240
RF significa cancellare il file e in questo caso voglio cancellare gli alberi vedi registro.

08:44.240 --> 08:52.290
Questo cancella tutti i bit nel registro Taurasi o li imposta tutti a zero sulla porta del controllo registro

08:52.360 --> 08:52.870
Trixi.

08:52.950 --> 08:58.060
Vedi la porta C è collegata a diversi pin all'esterno del chip.

08:58.060 --> 09:04.090
E ognuno di questi pin può essere un input o un'uscita oppure è possibile vedere i pin nel

09:04.090 --> 09:07.220
pinna elencati come RC 0 a RC 5.

09:07.630 --> 09:18.930
Quindi il bit 0 controlla il bit 0 sulla porta c se il bit di controllo nei registri a stato tristato 0 e

09:18.930 --> 09:23.880
la corrispondente porta morsettata C viene attivata come uscita digitale.

09:24.420 --> 09:34.080
Così ora, quando scrivo uno 0 o un 1 per quel bit nella porta C, il pin di output put diventa basso o alto.

09:34.650 --> 09:40.770
Se il bit sul registro Tristate è impostato su 1, il pit sulla porta pin sulla porta

09:40.770 --> 09:43.020
C viene attivato come ingresso digitale.

09:43.020 --> 09:47.560
Quindi ora posso accedere a quel pin e leggere qualsiasi basso più basso su quel pin.

09:47.820 --> 09:54.210
Ma perché è un'elettronica molto diversa sul fatto che io la usi come uscita o

09:54.210 --> 10:00.680
come input, devo impostare lo stato dei pin e lo faccio con il registro di controllo.

10:00.740 --> 10:03.590
Quindi sono andato avanti e ho cancellato il registro di Taurasi.

10:03.590 --> 10:09.430
Ho impostato tutti i bit a zero, il che significa che tutti i pin sono ora impostati come uscite.

10:09.980 --> 10:20.360
I punti della linea successiva sono ad un'altra banca la banca che contiene il registro LA TC o il latch on port vedono il registro C

10:21.200 --> 10:25.860
latch in cui scriviamo il nostro output per la porta C.

10:26.030 --> 10:29.220
Quindi ora scriveremo alla porta del latch.

10:29.450 --> 10:33.640
Quindi selezioniamo semplicemente la banca che si sta preparando a scrivere su di essa.

10:33.650 --> 10:36.230
La riga successiva è ciò che chiamiamo etichetta.

10:36.530 --> 10:40.090
Ora le etichette sono una sorta di etichette di marcatori.

10:40.130 --> 10:46.480
Puoi dargli il nome che vuoi, purché il nome non corrisponda a un registro oa un comando.

10:46.490 --> 10:54.430
Ad esempio, potrei chiamare la mia etichetta Fred o Homebase o qualsiasi combinazione composta a caso di lettere e

10:54.440 --> 10:58.060
numeri, ma non posso etichettare questa grande vendita.

10:58.160 --> 11:04.970
Ad esempio, le banche vendono è un'istruzione un comando e quindi la parola è riservata.

11:04.970 --> 11:10.130
Confonderebbe il compilatore se si provasse a creare un'etichetta chiamata bank in

11:10.130 --> 11:20.390
modo che il compilatore andasse. Hey Casca dice che vuoi che selezioni una banca per te, quindi questa particolare etichetta l'ho fatta in modo loopy,

11:20.390 --> 11:23.480
ma fai attenzione che sia case sensitive.

11:23.480 --> 11:28.880
Se inserisco una seconda etichetta Lupi, ma con una L maiuscola, è

11:33.610 --> 11:38.940
un'etichetta diversa da quella di Lupi con una minuscola L.

11:39.050 --> 11:48.950
Quindi se vai qui sotto poche righe vedrai il comando andare su Lupi basterà che queste linee di codice arrivino

11:49.060 --> 11:50.270
a questo

11:53.080 --> 11:58.930
comando e lo rimandano alla mia etichetta chiamata Lupi per vedere dove

12:02.110 --> 12:04.190
sono andando con questo.

12:04.240 --> 12:12.360
Voglio solo eseguire questa serie di comandi in un ciclo continuo per sempre e sempre.

12:12.460 --> 12:21.270
Nessuna etichetta è l'unica cosa che sarà completamente a sinistra nel nostro codice nella prima colonna.

12:21.340 --> 12:26.610
Persino il comando è addirittura rientrato.

12:26.640 --> 12:34.140
OK, una volta stabilita la nostra etichetta, il nostro marcatore vedremo questo comando che avevo già spiegato in precedenza sposta

12:34.140 --> 12:40.870
LW o sposta un numero letterale in W. Registrare.

12:40.890 --> 12:43.270
Il registro di lavoro.

12:43.850 --> 12:49.620
Quindi se ricordi il registro aritmetico quello che fa tutta la matematica e

12:49.680 --> 12:56.360
ha quell'enorme banco di complicati circuiti digitali collegati nella foto, Micro's It's called the Working register.

12:56.370 --> 13:05.310
Quindi con questo comando gli diciamo di caricare il registro di lavoro con esadecimale f fd h indica che

13:05.310 --> 13:08.580
il numero tra virgolette è esadecimale.

13:08.580 --> 13:16.770
Ora potrei inserire un numero decimale di 255, che è lo stesso numero e ho semplicemente cambiato l'H in

13:16.830 --> 13:17.930
un D.

13:21.040 --> 13:26.410
Oppure potrei inserire un binario 1 1 1 1 al posto

13:30.320 --> 13:31.880
dell'età qualunque cosa

13:37.230 --> 13:46.240
io metta lì dentro, qualunque cosa messa tra virgolette è il numero letterale e metterà quel numero nel registro di

13:46.570 --> 13:52.920
lavoro in modo da poter fare qualunque lavoro tu voglia fare con quel numero.

13:52.960 --> 14:04.080
In questo caso, il lavoro che vogliamo fare è il prossimo comando sposta w f o sposta il registro di lavoro in un file.

14:04.390 --> 14:09.760
Quindi questo comando ora prende qualsiasi numero nel registro di lavoro e lo inserisce in un altro registro

14:09.760 --> 14:10.870
di tua scelta.

14:10.870 --> 14:14.000
In questo caso il registro Latch C.

14:14.570 --> 14:20.650
Quindi se la foto nel nostro registro di Laxey aveva tutti gli zeri in essa, abbiamo caricato il registro di lavoro

14:20.650 --> 14:21.670
con tutti quelli.

14:21.880 --> 14:29.530
E ora mettiamo tutti quelli nel registro C Catch l'ultimo registro C è il supporto di uscita

14:29.530 --> 14:30.310
C.

14:30.610 --> 14:38.380
Quindi abbiamo appena impostato tutti i pin di uscita sulla nostra porta C ad Areli d connesso a Tibbett tre di

14:38.380 --> 14:46.770
Port C tutti i bit di Port C sono appena stati impostati in modo che lo schermo LCD si accenda quando vede un massimo.

14:46.780 --> 14:55.750
Quindi, se avessi caricato il registro di lavoro con il binario 0 0 0 0 1 0 0 0 e poi inviato al latch.

14:55.750 --> 14:59.580
Anche questo si sarebbe acceso presto perché stava attivando il

15:03.730 --> 15:10.860
bit 3 Ricorda che il bit meno significativo è il bit 0 che corrisponde al nostro CS-ROLL sulla porta C ..

15:11.320 --> 15:18.400
Ho appena inserito una F F perché non potevo collegare nulla a nessuno degli altri pin

15:18.400 --> 15:21.190
della porta, quindi non importava.

15:21.190 --> 15:27.820
Attiviamoli e disattivali poiché la nostra porta C è impostata su alto e il display LCD è acceso.

15:27.820 --> 15:34.360
Ora abbiamo bisogno di spegnere l'LCD impostando il bit 3 sulla porta c su 0.

15:34.360 --> 15:43.660
No, posso farlo con il CEL RF che cancella il file o il registro e poi seguito da quale registro vogliamo cancellare e

15:43.660 --> 15:50.530
che sarebbe il lache vedi che ora abbiamo cancellato tutti i bit sulla porta C ..

15:50.590 --> 15:51.870
Impostali su 0.

15:52.060 --> 16:02.540
Quindi la signora ora estingue la riga successiva del nostro codice e ci rimanda a Looby, ora carichiamo il registro di lavoro con

16:02.540 --> 16:10.730
F-F senda per vedere accendere l'LCD e pulire il lucchetto che spegne la televisione e torna indietro e

16:10.730 --> 16:12.660
lo fa di nuovo.

16:14.160 --> 16:20.100
Poiché tutti questi comandi sono guidati dall'orologio, ci basiamo sull'orologio per accendere e spegnere lo

16:20.250 --> 16:21.150
schermo LCD.

16:21.150 --> 16:26.430
Ma ricorda che alcuni comandi richiedono più cicli di clock rispetto ad altri.

16:26.430 --> 16:31.560
Se sei veloce, puoi contare gli impulsi di clock mentre il tuo pick sta eseguendo il programma.

16:31.560 --> 16:37.800
Una volta avviato e inserito nel ciclo, sono necessari 4 cicli di clock per cancellare il latch e

16:37.800 --> 16:43.670
spegnere lo schermo LCD ma sono necessari 16 cicli di clock per tornare all'inizio del loop.

16:43.800 --> 16:51.610
Caricare il registro di lavoro e trasferire il registro di lavoro sul latch accendendo il CD.

16:51.870 --> 16:57.960
Questo è il motivo per cui abbiamo impostato il comando per operare da un orologio incredibilmente lento in modo da

16:58.050 --> 17:03.800
poter effettivamente vedere e contare gli impulsi di clock richiesti per soddisfare i comandi che abbiamo emesso.

17:04.350 --> 17:07.370
Passiamo alla prossima lezione.

17:07.410 --> 17:10.900
Dove controllerà le donne diverse da Port C.
