Parziale 3 Come fare una procedura

push

pop

Orologio (interrupt)

Preparare un PIC (costanti, parole di comando, inizializzazione):

questa è una chiamata a questa procedura: Slide 20 e 19 del pacco “comunicazioni seriali” per vedere come si legge o si scrive su una porta seriale a polling. Slide 21 e 22 per la gestione delle seriali ad interrupt.Seriali: Inizializzare porte seriali: nel main si mette “call init_COM1” ad esempio. esempio interruttori: . Interfaccia in input.

esempio led: Interfaccia seriale:8250 Interfaccia PIC.Interfaccia in output. 8259: (le IR vanno da 0 a 7 con priorità decrescente) .

Vogliamo chiamare la procedura contenuta dentro un certo indirizzo della task table allora dobbiamo fornire l’inizio della tasktable che chiameremo tasktable e un indice che ci dica quale procedura prendere.poiché ogni cella contiene 4 byte. La IVT arriva fino a 3FFH Supponiamo che la tabella dei task(che contiene quindi le procedure si trovi subito dopo la IVT) .Interfaccia verso l’orologio: Come trovare l’interrupt type e cercare cosa contiene: si sceglie con cosa programmare ICW2(che deve essere un multiplo di 8 poiché gli interrupt possibili in ogni PIC sono otto e devono essere tutti configurati con lo stesso ICW2). dentro la cella del valore moltiplicato troviamo un indirizzo in cui è contenuta la procedura. si moltiplica per quattro. bisognerà utilizzare questo codice: Parte software: Come è fatto un intero programma: . quello ti dà l’interrupt type.

.DICHIARAZIONE VARIABILI -----main: .programma vero e proprio --------J mainloop: . Isa dell’MSP430 Istruzione MOV(ce ne sono 7 tipi): cmq possiamo scrivere ad esempio: MOV PIPPO. pezzo principale del programma -------.SISTEMAGGIO DI TUTTA LA ROBA CHE DEV'ESSERE FATTA SOLO UNA VOLTA ALL'ACCENSIONE DEL SISTEMA mainloop: ..DIRETTIVE AL COMPILATORE (DEFINIZIONI EQU E COMPANY) -----.R10 Che non cambia nientre Poi per creare le costanti: MOV #13H.loop infinito.b per un byte Double operand: .INIZIALIZZAZIONE PERIFERICHE .R5 (in binario) queste valgono per una word(2byte) MOV.ripeto all'infinito .R10 sposta pippo il R10 MOV &PIPPO.PROCEDURE PROC pippo1 ----ENDP PROC pippo2 ----ENDP .ROUTINE DI INTERRUPT INT_bo1 ----RFE INT_bo2 ----RFE ecc.INIZIALIZZAZIONE VARIABILI E QUANT'ALTRO .PIPPO MOV #10.la roba che scrivi qui non verrà mai fatta a meno che non fai delle jump strane ma non si fa di solito perchè se passi di qua il programma termina e si blocca e non fa più niente anzi rischi che si impalli mezzo mondo .

Single operand: Jump: Slide 25 e 25 di isa MSP430 per e istruzioni emulate. .

Numero decimale 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Numero binario 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Numero esadecimale 0 1 2 3 4 5 6 7 8 9 A B C D E F 2⁵=32 2⁶=64 2⁷=128 2⁸=256 2⁹=512 2¹⁰=1024= 1KB 2²⁰=1MB 2³⁰=1GB 2³²=4GB .