Sappiamo che in realtà abbiamo programmato la scelta.
Diamo un'occhiata a tutto ciò che abbiamo fatto perché alcuni di voi probabilmente sono seduti lì
andando Ciò che mai ho fatto.
Lo so.
Flo sappiamo che una Jetpack Academy aveva già bruciato le lezioni e si è detta orgogliosa di sé
per aver programmato e messo in funzione la foto.
E tu dovresti essere il primo passo è molto impegnativo.
Principalmente a causa del laboratorio.
Ma dopo questa prima volta penso che lo troverai davvero molto semplice.
Basta una questione di programmazione o di codice per masterizzare il peg e testare il programma.
MP lab in realtà rende davvero le cose travolgenti in fretta.
Ma come vedrai, in realtà è uno strumento molto potente per costruire progetti e testarli senza
nemmeno programmare un chip.
Quindi dai un'occhiata al tuo codice.
Analizziamolo.
Le prime due righe sono per il compilatore e in realtà non sono le nostre istruzioni.
Il compilatore deve sapere quale microcontrollore stiamo usando.
Hai visto la lista.
Ce ne sono centinaia e ognuno è diverso.
Indirizzi diversi per le porte e registri diversi numeri di porte registri degli encoder e così via.
Quindi queste due linee dicono semplicemente al computer quale Chip stiamo usando e per caricare il file di informazioni per
quel chip che è venuto con un giro vuoto, il file di informazioni è chiamato un file include e
puoi vedere qui l'estensione.
Io vedo per includere.
Noterai anche questi semi-colon e note casuali dopo di loro.
Si noti inoltre che il testo è in verde.
Quando sei in un laboratorio vuoto, i semi-colon segnano ciò che viene dopo di loro come un commento.
I commenti sono i tuoi commenti
Possono essere qualsiasi cosa tu voglia e sono note a se stessi e il compilatore ignora tutto ciò che viene dopo il
punto e virgola.
Quindi quando scrivi il tuo codice è buona norma inserire commenti casuali che spieghino a te stesso cosa
fa ogni linea.
Credimi quando ti capita di entrare in un centinaio di righe di codice o
più sarai grato di averti lasciato notare che le prossime due grandi linee potrebbero avvolgersi e apparire quattro o anche sei righe sullo schermo
perché sono così lunghe.
Queste sono le impostazioni di configurazione e chiamiamo questi fusibili di impostazioni.
Ti ricordi che per l'orologio avevamo diverse opzioni, potevamo usare un orologio esterno come facevamo noi.
Oppure è possibile utilizzare una coppia di condensatori di resistenza sul lato esterno del chip per modificare la velocità di clock.
Oppure potremmo usare un cristallo per bloccare l'orologio ad una velocità esatta.
O potremmo usare l'orologio integrato.
Questa è un'opzione critica ed è impostata da uno di questi comandi.
Nello specifico questo FLC FLC per la frequenza dell'oscillatore.
Ora ti mostro come lavorare con questi fusibili più tardi.
Ma li chiamiamo micce perché è originariamente quello che erano.
Le impostazioni di configurazione erano E-Prime che hai bruciato dal fusibile quando hai programmato il chip
e le impostazioni specifiche di prompt impostano la configurazione del chip come un intero casino delle impostazioni di configurazione in
queste due linee.
Li ignoreremo per ora ma OK.
Questa riga successiva in realtà non ha bisogno di essere lì.
Ma in realtà l'ho messo lì per salvare un po 'di confusione.
Tutto ciò che accadrà è quando andrai a compilare il tuo codice e il laboratorio sputerà un intero casino
di avvertimenti come informazioni.
Le informazioni veramente giuste, ma sono formulate in modo tale da far scattare campanelli d'allarme nella
tua testa.
Implica che il tuo codice assembly è tutto incasinato e non funziona quando in realtà non c'è niente di
sbagliato.
Quindi includendo questa linea il compilatore non sputa questi avvertimenti.
E questo fa solo risparmiare confusione.
Quindi tutto fino a questo punto era la configurazione e l'installazione per il compilatore e il chip stesso.
Ora entriamo nel nostro vero codice assemblatore.
Ecco tutti i mnemonici.
Diamo un'occhiata esattamente a quello che ha fatto esattamente.
La prima riga che ho già spiegato in che modo i mnemonici sono stati spiegati.
Ma non esattamente quello che hanno fatto o perché.
Il primo bank select è necessario per un modo unico di costruire i pic micro.
Ora se apri la tua scheda di prelievo e vai a pagina 30 vedrai la prima di diverse pagine di banche
di registro.
Questi sono elenchi di registri e si vede che sono suddivisi in banche di 128 registri alla volta.
È stato complicato spiegare, ma fondamentalmente il design dell'architettura del film Micro è così
che potrebbero facilmente espandere il chip se volessero aggiungere più registri o RAM.
Hanno semplicemente aggiunto un'altra banca, facendo così le stesse istruzioni potrebbero essere utilizzate su tutti i
chip PIC, indipendentemente dalla loro configurazione.
Il rovescio della medaglia è quello di cambiare qualsiasi registro specifico in cui devi indicare in
particolare la banca su cui vuoi lavorare perché chiamerai quel registro diciamo registro 23 e banca 15 non registro 23 e banca 1.
Sono due registri diversi.
Quindi nella prima riga del codice vedremo che stiamo provando a configurare i trig di registro port tri state.
Vedi sembra cercarlo lì è in banca uno.
Quindi per impostare il registro Trixy devo prima impostare il puntatore banca sul banco 1 nel nostro codice.
Lo faccio con il comando select bag e potrei dargli l'indirizzo specifico del banco 0 1 in esadecimale ma l'ho fatto
in un modo leggermente diverso a causa di quella prima riga di codice in cui ho detto al
compilatore di includere il file di informazione sulla scelta 16 F 14 55.
Una delle cose che contiene il file di informazioni è dove si trovano i registri all'interno del chip,
incluso il banco in cui si trovano.
Quindi, invece di dire al chip in inglese semplice di cambiare banca in banca, quello che
ho detto è stato cambiare la banca in qualsiasi registro di banca Trixy si trova nel compilatore, poi va al file
di informazioni cerca il registro di Trixi scopre che banca è in e compila nel codice della macchina.
Ora, cosa hanno fatto in questo modo.
Il motivo è perché diciamo che ora voglio usare un altro controller di selezione.
Il linguaggio assembly nel mio programma è esattamente lo stesso.
Tuttavia su quella particolare scelta il registro Trixy è in realtà una banca dire tre.
Quindi se avessi inserito una cella bancaria esadecimale 0 o 1 nel mio codice assembly dovrei ora
passare attraverso il mio intero programma e trovare ogni istanza in cui ho selezionato Bank One e cambiare la banca tre facendo riferimento
al registro specifico che voglio indirizzare invece di un effettivo indirizzo bancario.
Il compilatore va e cerca la banca solo per me.
Così ora, quando cambio i chip, l'unica linea che dovrei dover cambiare sono i primi due
o semplicemente dire a quale chip sto usando e boom carica il file include.
Quindi la mia prima istruzione seleziona Bank 1 così posso accedere al registro Trixi che si trova nella
riga successiva del codice.
RF significa cancellare il file e in questo caso voglio cancellare gli alberi vedi registro.
Questo cancella tutti i bit nel registro Taurasi o li imposta tutti a zero sulla porta del controllo registro
Trixi.
Vedi la porta C è collegata a diversi pin all'esterno del chip.
E ognuno di questi pin può essere un input o un'uscita oppure è possibile vedere i pin nel
pinna elencati come RC 0 a RC 5.
Quindi il bit 0 controlla il bit 0 sulla porta c se il bit di controllo nei registri a stato tristato 0 e
la corrispondente porta morsettata C viene attivata come uscita digitale.
Così ora, quando scrivo uno 0 o un 1 per quel bit nella porta C, il pin di output put diventa basso o alto.
Se il bit sul registro Tristate è impostato su 1, il pit sulla porta pin sulla porta
C viene attivato come ingresso digitale.
Quindi ora posso accedere a quel pin e leggere qualsiasi basso più basso su quel pin.
Ma perché è un'elettronica molto diversa sul fatto che io la usi come uscita o
come input, devo impostare lo stato dei pin e lo faccio con il registro di controllo.
Quindi sono andato avanti e ho cancellato il registro di Taurasi.
Ho impostato tutti i bit a zero, il che significa che tutti i pin sono ora impostati come uscite.
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
latch in cui scriviamo il nostro output per la porta C.
Quindi ora scriveremo alla porta del latch.
Quindi selezioniamo semplicemente la banca che si sta preparando a scrivere su di essa.
La riga successiva è ciò che chiamiamo etichetta.
Ora le etichette sono una sorta di etichette di marcatori.
Puoi dargli il nome che vuoi, purché il nome non corrisponda a un registro oa un comando.
Ad esempio, potrei chiamare la mia etichetta Fred o Homebase o qualsiasi combinazione composta a caso di lettere e
numeri, ma non posso etichettare questa grande vendita.
Ad esempio, le banche vendono è un'istruzione un comando e quindi la parola è riservata.
Confonderebbe il compilatore se si provasse a creare un'etichetta chiamata bank in
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,
ma fai attenzione che sia case sensitive.
Se inserisco una seconda etichetta Lupi, ma con una L maiuscola, è
un'etichetta diversa da quella di Lupi con una minuscola L.
Quindi se vai qui sotto poche righe vedrai il comando andare su Lupi basterà che queste linee di codice arrivino
a questo
comando e lo rimandano alla mia etichetta chiamata Lupi per vedere dove
sono andando con questo.
Voglio solo eseguire questa serie di comandi in un ciclo continuo per sempre e sempre.
Nessuna etichetta è l'unica cosa che sarà completamente a sinistra nel nostro codice nella prima colonna.
Persino il comando è addirittura rientrato.
OK, una volta stabilita la nostra etichetta, il nostro marcatore vedremo questo comando che avevo già spiegato in precedenza sposta
LW o sposta un numero letterale in W. Registrare.
Il registro di lavoro.
Quindi se ricordi il registro aritmetico quello che fa tutta la matematica e
ha quell'enorme banco di complicati circuiti digitali collegati nella foto, Micro's It's called the Working register.
Quindi con questo comando gli diciamo di caricare il registro di lavoro con esadecimale f fd h indica che
il numero tra virgolette è esadecimale.
Ora potrei inserire un numero decimale di 255, che è lo stesso numero e ho semplicemente cambiato l'H in
un D.
Oppure potrei inserire un binario 1 1 1 1 al posto
dell'età qualunque cosa
io metta lì dentro, qualunque cosa messa tra virgolette è il numero letterale e metterà quel numero nel registro di
lavoro in modo da poter fare qualunque lavoro tu voglia fare con quel numero.
In questo caso, il lavoro che vogliamo fare è il prossimo comando sposta w f o sposta il registro di lavoro in un file.
Quindi questo comando ora prende qualsiasi numero nel registro di lavoro e lo inserisce in un altro registro
di tua scelta.
In questo caso il registro Latch C.
Quindi se la foto nel nostro registro di Laxey aveva tutti gli zeri in essa, abbiamo caricato il registro di lavoro
con tutti quelli.
E ora mettiamo tutti quelli nel registro C Catch l'ultimo registro C è il supporto di uscita
C.
Quindi abbiamo appena impostato tutti i pin di uscita sulla nostra porta C ad Areli d connesso a Tibbett tre di
Port C tutti i bit di Port C sono appena stati impostati in modo che lo schermo LCD si accenda quando vede un massimo.
Quindi, se avessi caricato il registro di lavoro con il binario 0 0 0 0 1 0 0 0 e poi inviato al latch.
Anche questo si sarebbe acceso presto perché stava attivando il
bit 3 Ricorda che il bit meno significativo è il bit 0 che corrisponde al nostro CS-ROLL sulla porta C ..
Ho appena inserito una F F perché non potevo collegare nulla a nessuno degli altri pin
della porta, quindi non importava.
Attiviamoli e disattivali poiché la nostra porta C è impostata su alto e il display LCD è acceso.
Ora abbiamo bisogno di spegnere l'LCD impostando il bit 3 sulla porta c su 0.
No, posso farlo con il CEL RF che cancella il file o il registro e poi seguito da quale registro vogliamo cancellare e
che sarebbe il lache vedi che ora abbiamo cancellato tutti i bit sulla porta C ..
Impostali su 0.
Quindi la signora ora estingue la riga successiva del nostro codice e ci rimanda a Looby, ora carichiamo il registro di lavoro con
F-F senda per vedere accendere l'LCD e pulire il lucchetto che spegne la televisione e torna indietro e
lo fa di nuovo.
Poiché tutti questi comandi sono guidati dall'orologio, ci basiamo sull'orologio per accendere e spegnere lo
schermo LCD.
Ma ricorda che alcuni comandi richiedono più cicli di clock rispetto ad altri.
Se sei veloce, puoi contare gli impulsi di clock mentre il tuo pick sta eseguendo il programma.
Una volta avviato e inserito nel ciclo, sono necessari 4 cicli di clock per cancellare il latch e
spegnere lo schermo LCD ma sono necessari 16 cicli di clock per tornare all'inizio del loop.
Caricare il registro di lavoro e trasferire il registro di lavoro sul latch accendendo il CD.
Questo è il motivo per cui abbiamo impostato il comando per operare da un orologio incredibilmente lento in modo da
poter effettivamente vedere e contare gli impulsi di clock richiesti per soddisfare i comandi che abbiamo emesso.
Passiamo alla prossima lezione.
Dove controllerà le donne diverse da Port C.