Assembly PIC16F8X. Dispensa di elettronica sull uso del microcontrollore PIC 16F8X

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Assembly PIC16F8X. Dispensa di elettronica sull uso del microcontrollore PIC 16F8X"

Transcript

1 Dispensa di elettronica sull uso del microcontrollore PIC 16F8X Anno scolastico 2010/2011 Corso di Sistemi, specializzazione elettronica ITIS Galileo Ferraris Prof. Aniello Celentano L obiettivo della presente dispensa è quello di introdurre lo studente allo studio del microcontrollore PIC16F8X, rendendo quanto più agevole l acquisizione delle nozioni di base di tale componente elettronico. In tal senso la dispensa non vuole essere un manuale completo delle specifiche tecniche, né una dispensa esaustiva. Per una più ampia documentazione si rimanda al sito ufficiale della Microchip. La presente dispensa può essere scaricata liberamente dal sito del Prof. Aniello Celentano: Versione mercoledì 2 gennaio 2013 Pagina 1

2 INDICE Caratteristiche generali 4 Piedinatura integrato PIC16F84 5 Schema logico 5 La mappa di memoria RAM 6 La memoria programma 7 Il registro di stato (Status Register) 8 Configurazione delle porte I/O 9 Corrispondenza Stato logico Stato elettrico 10 Il registro delle interruzioni INTCON (Interrupt Configuration) 11 Il Registro delle Opzioni (Option Register) 12 L area di memoria EEPROM 13 Flowchart: Lettura delle EEPROM 14 Flowchart: Scrittura nelle memoria EEPROM 15 Indirizzamento indiretto 16 Il software MPLAB della microchip 17 Direttive del compilatore MPASM 18 Struttura di un file-programma 19 Sommario delle istruzioni assembly 22 Raggruppamento delle istruzioni per tipologia 24 Programmatore porta parallela-micro PIC16F84 44 Esempio File 1 : File di definizione registri 47 Esempio File 2 : Programma per far lampeggiare di un LED. 49 Tabella Operativa di configurazione delle porte Input/Output 51 Condizionamento dei flag nell istruzione SUB 53 Pagina 2

3 INDICE ADDLW 25 IORLW 34 ADDWF 25 IORWF 34 ANDLW 26 MOVF 35 ANDWF 26 MOVLW 35 BCF / BSF 27 MOVWF 36 BTFSC 28 NOP 36 BTFSS 28 RETFIE 37 CALL 29 RETLW 37 CLRF 29 RETURN 38 CLRW 30 RLF 38 CLRWDT 30 RRF 39 COMF 31 SLEEP 39 DECF 31 SUBLW 40 DECFSZ 32 SUBWF 41 GOTO 32 SWAPF 42 INCF 33 XORLW 42 INCFSZ 33 XORWF 43 Pagina 3

4 Caratteristiche generali del PIC16F8X Le principali caratteristiche sono le seguenti. 1) Set di 35 istruzioni tutte lunghe 14 bit. 2) Registri per i dati, i data register, di 8 Bit 3) Frequenza di clock di 10 MHz 4) Ogni istruzione richiede 1 CPU-Cycle di 4 impulsi di clock, ad eccezione dei salti che richiedono 2 CPU-Cycle. 5) 13 linee di I/O, 5 su porta A e 8 su porta B 6) Corrente di source/sink di 25 ma, ossia la massima corrente che può essere prelevata (source) e quella che può assorbita (sink). 7) Package a 18 pin. 8) Memoria stack di 8 livelli. Questo significa che non possono essere fatte più di 8 chiamate in cascata. 9) Area RAM dati di 68 byte per i modelli PIC16F84/PIC16FCR84, di 35 byte per i modelli PIC16F83/PIC16CR84. 10) Area dati EEPROM di 64 byte. Ciò permette la memorizzazione di dati e i loro recupero ad accensioni successive. 11) Area memoria programma di 1024 word per il modello 16F84 e 512 word per il 16F83 12) Code-Protection, ossia rendere protetto il programma memorizzato e non visionabile dopo la memorizzazione (stesura finale). 13) Quattro tipi di interrupt: a) Int. esterno su piedino RB0/INT; b) Int. Timer overflow TMR0; c) Int. su variazione di livello dei pin RB7 a pin RB4; d) Int. su scrittura completa in EEPROM Data. 14) Basso consumo, meno di 10 mw con clock a 4 MHz Pagina 4

5 Piedinatura dell integrato PIC16F84 Schema logico dell integrato PIC16F84 Pagina 5

6 La mappa di memoria RAM (Memory Map) Lo scopo principale di quest area RAM è quello di permettere la lettura, scrittura e la gestione dei dati collegati al funzionamento del micro. La mappa di memoria RAM è riportata qui a lato. Come si vede, è suddivisa in due blocchi indicati come Bank0 e Bank1, ciascun banco è di 128 byte. Per poter accedere ad un registro occorre prima selezionare il banco RAM e, quindi, impostare la posizione del registro (Offset). Gli indirizzi tra i due banchi RAM differiscono di 0x80. La quantità di byte RAM per uso generale varia a secondo dei modelli. Per tutti quest area ha inizio dal byte 0x0C. Per i modelli PIC16F84 e PIC16CR84 quest area di memoria è lunga 68 byte, per tutti gli altri 36 byte. Alcuni registri, tipo il registro STATUS, sono accessibili indifferentemente da ciascun banco RAM, questo per permettere un rapido accesso al registro, tenendo conto della differenza di 0x80 tra i due banchi. Una reale programmazione del micro è possibile solo dopo una chiara comprensione dei registri riportati in tale mappa di memoria e che, pertanto, saranno spiegati nel seguito. Pagina 6

7 La memoria programma (Program Memory Map) Il PIC16F8X ha una memoria programma, cioè l area in cui memorizzare le istruzioni, di 1024 x 14 bit per il modello 16F84 e 16CR84, mentre per il modello 16F83 e 16FCR83 ha 512 x 14 bit. Da ciò si comprende che sono word di 14 bit. Il Program Counter (PC) è un registro a 13 bit, per cui la sua capacità di indirizzamento è 2 13 = 8K = 8192 istruzioni. Si osservi la figura riportata di seguito che illustra la Program Memory Map. Questa deve essere vista come una successione di word lunghe 14 bit che chiameremo genericamente come locazioni. Dalla figura si vede che la prima locazione di 14 bit è riservata al vettore Interrupt di Reset. Ciò significa che in caso di reset il PC viene caricato con questo indirizzo e, quindi, viene eseguita l istruzione presente in tale locazione. Come nel caso del reset, nella locazione 4 vi è la prima istruzione da eseguire se viene generato un interrupt da una qualunque periferica. Da ciò si comprende che nella locazione 0 e 4 conviene riporre un istruzione di GOTO che rimanda l esecuzione all inizio dei programmi specifici. Nella figura si osservi che la locazione 03FF è l ultima programmabile, quindi rappresenta la capacità dell area programma del PIC16F84, ossia 03FF = 1023 che è la 1024-esima locazione programmabile (1K). Pagina 7

8 Il registro di stato (Status register) Il registro di stato è accessibile indifferentemente sia dal banco RAM Bank0 che Bank1, rispettivamente all indirizzo 0x03 e 0x83. Nel registro sono riportate le seguenti informazioni binarie. Bit Flag Descrizione R/W 0 C Flag Carry. Diventa 1 quando il risultato di un operazione matematica eccede la capacità di R 8 bit del registro. 1 DC Flag Digit Carry. Diventa 1 quando il risultato di un operazione matematica eccede la capacità R di un semi-byte, cioè 4 bit. 2 Z Flag Zero. Diventa 1 quando il risultato di un operazione matematica è nullo. R 3 PD 4 TO 5-6 RP1- RP0 7 IRP Flag di Power-Down. Normalmente è 1 dopo il reset o un clear del watch-dog. Diventa 0 quando si attiva l istruzione SLEEP. Flag di Time-Out. Normalmente è 1 dopo il reset, dopo il clear del watch-dog e dopo l attivazione dell istruzione SLEEP. Diventa 0 per time out del watch-dog. Selettore del banco RAM. Per il PIC16F8X: 00 = Bank 0 01 = Bank 1 Registro per l indirizzamento indiretto. Per il micro 16F8X non è usato e deve essere impostato a 0. R R W W Pagina 8

9 Configurazione delle porte di Input/Output La configurazione delle porte avviene tramite i registri TRISA e TRISB, collocati nell area Bank1 all indirizzo 0x85 e 0x86. Il primo registro permette la configurazione della porta A che contiene 5 linee di Input/output; il secondo registro permette di configurare la porta B che ha 8 linee di Input/output. Vediamo come avviene la configurazione delle porte. Osserviamo lo schema che segue. Supponiamo di voler configurare la porta A, che contiene 5 linee di Input/Output. Dallo schema riportato sopra si vede che nel primo riquadro è indicato il tipo di configurazione che sui vuole programmare. La linea RA 0, ad esempio, si vuole configurarla come linea di Input. La linea RA 1 come Output e così via, come si vede dallo schema riportato sopra. Nel Registro TRISA si deve impostare il bit al valore 1 se vogliamo configurare la relativa linea come Input, a 0 se si vuole configurata come Output. I tre bit più significativi del registro A non sono gestiti per cui vengono impostati a zero, indicati in figura con una X. Riportando nel riquadro gli 1 e gli 0, si determina il numero da assegnare al registro TrisA. Nel caso riportato in figura il numero è 0x19. Tale numero può essere trasferito nel registro con le seguenti istruzioni: MovLW 0x19 MovWF 0x85 ; Trasferisce la costante numerica 0x19 nel reg. W ; Trasferisce il contenuto numerico di W nel reg. TrisA La programmazione della configurazione della porta B segue lo stesso identico schema, con l unica differenza che la porta ha 8 linee di Input/Output. Lo schema della figura riportata sopra deve essere presa a modello di schema per una corretta impostazione della programmazione delle porta A e B. Pagina 9

10 Corrispondenza stato logico Stato Elettrico. Dallo schema della piedinatura dell integrato PIC16F8X si vede alcuni pin sono riservati per la porta A(5) e indicati come RA0,RA1,RA2,RA3. Altri pin sono riservati per la porta B(8), chiamati RB0, RB1, ecc. ecc. Questi pin fanno capo ai registri PORTA e PORTB, rispettivamente collocati all indirizzo 0x05 e 0x06 del banco RAM Bank0. A secondo di come vengono configurate le linee delle due porte A e B, i bit dei registri PortA e PortB determinano o sono determinati dal corrispondente stato elettrico del pin dell integrato. Come si può osservare dalla figura che segue, il bit A0, configurato come linea di input, assume il valore logico 1 in quanto il corrispondente pin 17 è posto a livello elettrico +5 Volt. A differenza del bit A3 che assume il livello logico 0. Allo stesso modo, e con logica inversa, impostare il bit A1 (configurato come Output) a livello logico 0 comporta che il corrispondente pin 18 si porti a livello elettrico 0 Volt. Contrariamente al pin 1 che si porta a +5 Volt essendo collegato al bit A2 impostato a livello logico 1. Quanto detto per il registro PORTA vale in egual misura anche per il registro PORTB. Pagina 10

11 Il registro delle interruzioni (interrupt) INTCON Il registro INTCON (Interrupt Configuration) permette di Abilitare/Disabilitare e gestire le interruzioni. E accessibile in modo indifferente sia all indirizzo 0x0B nel banco RAM Bank0 che all indirizzo 0x8B nel banco RAM Bank1. Osservando lo schema riportato di seguito, il bit più significativo è indicato con GIE e permette di abilitare(1)/disabilitare(0) tutte le interruzioni. Bit Nome Descrizione 0 RBIF Segnala un cambio di livello su RB7-RB4 1 INTF Richiesta interrupt su linea RB0/INT 2 TOIF Segnala interrupt su TMR0 3 RBIE Abilita Interrupt su variazione di livello RB7-RB4 4 INTE Abilita interrupt su RB0/INT 5 TOIE Abilita interrupt su TMR0 6 EEIE Interrupt su avvenuta scrittura in EEPROM 7 GIE Abilitazione interrupt globale Pagina 11

12 Il registro delle opzioni (Option register) Il registro delle Opzioni è sia leggibile che scrivibile, cioè R/W, all indirizzo 0x81 dell area Bank1. Vediamo il significato di ciascun bit. BIT Bit Name Valore 7 RBPU 0 = Abilita resistori interni di Pull-Up 1 = Disabilita resistori di Pull-Up 6 INTEDG 0 = Interrupt sul fronte discesa di RB0/INT 1 = Interrupt su fronte di salita di RB0/INT 5 T0CS 0 = Abilita clock interno 1 = Abilita clock esterno su RA4/T0CKI 4 T0SE 0 = Incrementa il clock su fronte H-L 1 = Incrementa il clock su fronte L-H 3 PSA 0 = Prescàler è assegnato al TMR0 1 = Prescàler assegnato al WDT 2-0 PS2:PS0 Divisore del prescaler Bit TMR0 WDT 000 1:2 1: :4 1: :8 1: :16 1: :32 1: :64 1: :128 1: :256 1:28 Pagina 12

13 L area di memoria EEPROM Quest are di memoria, costituita da 64 byte, può essere sia scritta che letta in ogni momento. Permette la memorizzazione e conservazione nel tempo di quei dati che devono essere recuperati in tempi successivi, anche dopo lo spegnimento del micro. Per accedere a quest area di memoria si devono gestire contemporaneamente 4 registri. Registro Indirizzo Operatività EEDATA 08h Il dato da scrivere/leggere nella EEPROM, dato a 8 bit situato nell area Bank0 EEADR 09h L indirizzo del byte all interno della memoria EEPROM. Questo è un registro, nell area Bank0, a 6 bit per cui i bit 7 e 6 devono essere 0. Può assumere valori tra 0 e 63. EECON1 08h E un registro a 5 bit, nell area Bank1, i cui bit più significativi sono letti come 0 e non sono gestiti. RD WR WREN WRERR EEIF Impostando questo bit a 1 si inizia un operazione di lettura. Al termine della lettura dalla memoria EEPROM, il micro imposta questo bit a 0. Come per il precedente bit ma per un ciclo di scrittura. 0 = Inibisce operazioni di write 1 = Abilita operazioni di write 0 = Op. di write conclusa con successo 1 = Op. di write conclusa con errore A conclusione di un ciclo di write è impostato a 1. Il software deve provvedere ad azzerarlo. EECON2 09h Questo registro, nell area Bank1, viene usato nelle operazioni di scrittura in EEPROM. Il dato da scrivere deve essere messo in questo registro, che è solo di scrittura. Una lettura di questo registro ritornerebbe zero. Pagina 13

14 Lettura della EEPROM Start Seleziona Bank0 Imposta EEADR Seleziona Bank1 Imposta bit RD del reg. EECON1 RD=0 no si Seleziona Bank0 Recupera il dato nel reg. EEDATA End Pagina 14

15 Scrittura in EEPROM!! " # " "$ Pagina 15

16 Indirizzamento indiretto Con l indirizzamento indiretto si ha la possibilità di accedere all area dati in modo ricorsivo, senza far uso dei nomi simbolici con cui chiamo i byte che costituiscono l area dati. Due registri sono coinvolti: a) Il registro FSR (file set register) contiene la posizione del byte che vogliamo legge oppure scrivere. In effetti questo non è un vero e proprio registro dati è in effetti un puntatore ad un registro, contiene un indirizzo. Il registro è accessibile sia all indirizzo 0x04 (Bank0) che a 0x84 (Bank1) b) Il registro INDF (indirect file register) è la locazione fisica indirizzata dal registro FSR. Il registro INDF è accessibile sia dal banco di memoria 0 (Bank0, indirizzo 0x00) oppure banco 1 (Bank1, indirizzo 0x80). Vediamo un esempio che illustri l uso dei due registri. Supponiamo che nel registro 30 (RAM) sia contenuto il valore 75. Mettendo il valore 30 (indirizzo) nel registro FSR il micro automaticamente si posiziona sulla locazione 30. Una lettura del registro INDF ritorna il valore 75. Se scriviamo un qualunque numero nel registro INDF, questo verrà scritto nella locazione 30. La figura che segue illustra graficamente l indirizzamento indiretto. ;Carica l'indirizzo di X Movlw X Movwf Reg_FSR ;Recupera il valore contenuto in X movf Reg_INDF, W ;Aggiorna il valore di X MovLw 0xAB Movwf Reg_INDF Pagina 16

17 Il Software MPLAB della Microchip Per poter realizzare un qualunque programma da inserire in un integrato PIC occorre attrezzarsi di appropriati strumenti di lavoro. La Microchip nette a disposizione, scaricabile liberamente, un pacchetto software integrato chiamato MPLAB IDE (acronimo di Microchip Laboratory Integrated Development Environment). Questo pacchetto software una volta installato sul proprio computer permette di scrivere e collaudare un qualunque programma per il PIC. Per poter scaricare l MPLAB IDE bisogna collegarsi al sito ed eseguire una ricerca di DOWNLOAD MPLAB IDE. Il motore di ricerca della microchip presenterà diversi risultati, bisogna scaricare il pacchetto più recente, ad esempio MPLAB_8_53.zip. Quindi provvedere all installazione del pacchetto. Se l installazione avviene correttamente, sul desktop appare il link MPLAB IDE v8.43 che permette di avviare il programma per lo sviluppo software. Il pacchetto ha in sé anche il compilatore MPASM che permette la compilazione del file sorgente. La compilazione permette di realizzare un file con estensione.hex con codici numerici al suo interno e che altro non sono che i codici operativi che bisogna registrare nella memoria EEPROM del PIC. Quest ultima operazione viene eseguita tramite un programmatore di PIC e un software appropriato. In seguito viene proposto uno schema elettrico per realizzare un programmatore di PIC e alcuni siti da cui poter scaricare il software necessario per la gestione del programmatore. Il programma MPLIB IDE lavora per progetto. Ciò significa che la prima cosa da fare quando si esegue l MPLIB è quella di selezionare sotto la voce di menù Project la scelta New... che permetterà di creare un nuovo progetto assegnando sia il nome che la directory di lavoro. Successivamente dalla voce di menù File selezionare Add new file to project... per poter creare un file in cui scrivere il programma per il PIC. Nel seguito viene spiegato la struttura del file sorgente e le principali direttive del compilatore MPASM. Pagina 17

18 Direttive del compilatore MPASM Il compilatore MPASM permette la compilazione dei programmi scritti in assembly del PIC16F8X, è scaricabile dal sito ufficiale Le principali direttive del compilatore MPASM per poter scrivere i programmi in assembly sono riportate nella tabella che segue. La comprensione delle direttive potrà apparire più chiara dopo l analisi dell esempio di programma che viene riportato in seguito. I commenti Title Subtitle I Numeri Radix Constant EQU Include End Il file sorgente deve iniziare sempre con una serie di commenti che illustrino l obiettivo del programma. I commenti possono essere inseriti in un qualunque punto del file semplicemente facendoli iniziare con il punto e virgola, ossia il carattere ;. Questa direttiva permette di introdurre un titolo che verrà riprodotto in ogni pagina del file LIST per la documentazione finale. E come la precedente direttiva Per introdurre dei numeri nel file sorgente si possono usare diverse notazioni, come riportate di seguito. Formato Notazione Esempio Alternativo Binario B n. Bin. B Ottale O n. Ottale O 37 Decimale D n. Dec. D Esadecimale H n. Esad. H 3A 0x3A Ascii Testo A n.caratteri A Prova Prova In grassetto sono evidenziate le notazioni che maggiormente vengono usate nei file sorgenti. Specifica il tipo di formato da usare di default per i numeri indicati senza una chiara notazione di base, tipo 10 che può essere sia binario che esadecimale che decimale o ottale. Se la direttiva è omessa, si intende la notazione esadecimale (Hex). Definisce delle costanti alfanumeriche per tutto il file sorgente. Alcune costanti sono già definite, tipo W (0) e F (1). Definisce e assegna il nome di una variabile ad un indirizzo RAM. Il compilatore MPASM fa differenza tra le variabili scritte in maiuscolo o in minuscolo. Permette di inserire nel file sorgente dei file esterni che in fase di compilazione sostituiscono la direttiva Include e vengono inseriti gli step presenti nel file da includere. Termina il file sorgente Pagina 18

19 Struttura di un file programma Il programma che segue ha come unico scopo quello di illustrare la struttura di un programma in assembly, mostrando l uso delle direttive per il compilatore. ; Questo programma esegue un conteggio numerico ; Autore Prof. Aniello Celentano ; Data Marzo 2009 Title "Programma di conteggio" Subtitle "Micro PIC16F84A" Radix Hex Include DefinizioneRegistri.Def Constant Y = B' ' Contatore equ 0x0C ; L indirizzo 0x0C è la prima locazione RAM libera Temperatura equ 0x0D Org 0 ; Il programma inizia dalla locazione 0 RST: Goto MainStart ; Salta alla prima istruzione da eseguire Nop ; Locazione 1 Nop ; Locazione 2 Nop ; Locazione 3 Goto NoInterrupt ; Vettore inter. periferica NoInterrupt: Retfie MainStart: CLRF Contatore MovLW Y ; Trasferisce Y nell accumulatore W MovWF Contatore NewCount: IncFsz Contatore Goto NewCount Goto MainStart End Si osservi che le direttive non iniziano dalla prima colonna, mentre la direttiva equ deve iniziare sempre dalla prima colonna. Allo stesso modo le label per i salti devono iniziare dalla prima colonna e terminare con i due punti. La direttiva Include viene sostituita dal contenuto del file indicato. La direttiva ORG (origine) avverte il compilatore in quale punto ha inizio il programma. Pagina 19

20 Pagina 20

21 ISTRUZIONI ASSEMBLY PIC16F8X Pagina 21

22 Sommario delle istruzioni L elenco che segue è un sommario di tutte le istruzioni riconosciute dal micro. Con la notazione RegX si intende un generico registro-file. L istruzione indicata come Default è l espressione riconosciuta dal compilatore MPASM, come pure i simboli W (reg. work) e F (reg. file). ADDLW ADDLW 0x3A Addiziona costante numerica a 8 bit, mem. in W ADDWF ADDWF RegX Addiziona, mem. in RegX (Default) ADDWF RegX, F Addiziona, mem. in RegX ADDWF RegX, W Addiziona, mem. nel registro W ANDLW ANDLW 0xA4 AND tra W e costante numerica a 8 bit, mem. in W ANDWF ANDWF RegX AND tra W e RegX, mem. in RegX (Default) ANDWF RegX, F AND tra W e RegX, mem. in RegX ANDWF RegX, W AND tra W e RegX, mem. nel registro W BCF BCF RegX, BitX Bit Clear BSF BSF RegX, BitX Bit Set BTFSC BTFSC RegX, BitX Test bit clear e Skip istruzione BTFSS BTFSS RegX, BitX Test bit set e Skip istruzione CALL Call Subroutine Richiama un sottoprogramma CLRF CLRF RegX Clear Registro-File CLRW CLRW Clear Registro W CLRWDT CLRWDT Clear Watchdog timer COMF COMF RegX Compl. RegX e mem. in RegX (Default) COMF RegX, F Coml. RegX e mem. in RegX CMPF RegX, W Compl. RegX e mem. in reg. W DECF DECF RegX Decrementa e mem. in RegX (Default) DECF RegX, F Decrementa e mem. in RegX DECF RegX, W Decrementa e mem. nel reg. W DECFSZ DECFSZ RegX Decrementa, mem. in RegX, Skip se zero (Default) DECFSZ RegX, F Decrementa, mem. in RegX, Skip se zero DECFSZ RegX, W Decrementa, mem. in reg. W, Skip se zero GOTO GOTO Label Salto incondizionato INCF INCF RegX Incrementa, mem. in RegX (Default) INCF RegX, F Incrementa, mem. in RegX INCF RegX, W Incrementa, mem. nel reg. W INCFSZ INCFSZ RegX Inrementa, mem. in RegX, Skip se zero (Default) INCFSZ RegX, F Incrementa, mem. in RegX, Skip se zero INCFSZ RegX, W Incrementa, mem. nel reg. W, Skip se zero IORLW IORLW 0x2B Costate a 8 bit, mem. Nel reg. W IORWF IORWF RegX OR tar W e RegX, mem. in RegX (Default) IORWF RegX, F OR tra W e RegX,mem. in RegX IORWF RegX, W OR tra W e RegX, mem. nel reg. W Pagina 22

23 MOVF MOVF RegX Move RegX in RegX, aggiorna i flag (Default) MOVF RegX, F Move RegX in RegX, aggoirna i flag MOVF RegX, W Move RegX nel reg. W, aggiorna i flag MOVLW MOVLW 0xF5 Move costante numerica a 8 bit nel reg. W MOVWF MOVWF RegX Move reg. W nel reg. RegX NOP NOP No Operation RETFIE RETFIE Return from interrupt RETLW RETLW 0xB4 Return con costante a 8 bit nel reg. W RETURN RETURN Return from subroutine RLF REL RegX Rotazione a sinistra sul Carry, mem. in RegX (Default) RLF RegX, F Rotazione a sinistra sul Carry, mem. in RegX RLF RegX, W Rotazione a sinistra sul Carry, mem. nel reg. W RRF RRF RegX Rotazione a destra sul Carry, mem. in RegX (Default) RRF RegX, F Rotazione a destra sul Carry, mem. in RegX RRF RegX, W Rotazione a destra sul Carry, mem. nel reg. W SLEEP SLEEP SLEEP Mode SUBLW SUBLW 0xB7 Sottrae alla costante a 8 bit il reg. W, mem. in reg. W SUBWF SUBWF RegX Sottrae W a RegX, il risultato in RegX (Default) SUBWF RegX, F Sottrae W al reg. RegX, il risultato mem. in RegX SUBWF RegX, W Sottrae W al reg. RegX, il risultato mem. nel reg. W SWAPF SWAP RegX Scambia i semi-byte di RegX, mem. in RegX (Default) SWAPF RegX, F Scambia i semi-byte di RegX, mem. in RegX SWAPF RegX, W Scambia i semi-byte di RegX, mem. nel reg. W XORLW XORLW 0x5A XOR tra W e una costante a 8 bit, mem. nel reg. W XORWF XORWF RegX XOR tra W e RegX, mem. in RegX (Dafault) XORWF RegX, F XOR tra W e RegX, mem. in RegX XORWF RegX, W XOR tar W e RegX, mem nel reg. W Pagina 23

24 Raggruppamento delle istruzioni Di seguito viene riportata una tabella riepilogativa delle istruzioni in una forma che ne agevola l assimilazione mnemonica. Le istruzioni sono state raggruppate in cinque aree, come si può osservare. Funzioni logiche Funzioni matematiche Funzioni sui bit Funzioni di spostamento Funzioni varie ANDLW ANDWF XORLW XORWF IORLW IORWF ADDLW ADDWF SUBLW SUBWF DECF INCF DECSZ INCSZ BCF BSF RLF RRF BTFSC BTFSS COMF CALL GOTO RETURN RETLW RETFIE MOVF MOVLW MOVWF CLRF CLRW CLRWDT SWAP SLEEP NOP Si notino le parti messe in grassetto nelle istruzioni al fine di poterle meglio ricordarle. La parte in grassetto ricorda l azione che compie l istruzione. Per alcune istruzioni non è possibile individuare una radice mnemonica in quanto l istruzione stessa induce l azione che compie, ad esempio NOP, oppure RETURN. Pagina 24

25 ADDLW Add Literal and W Syntax: [label] ADDLW k Operands: 0 k 255 Operation: (W) + k (W) Status Affected: C, DC, Z Encoding: x kkkk kkkk Description: Cycles: 1 The contents of the W register are added to the eight bit literal k and the result is placed in the W register. Example: ADDLW 0x15 Before Instruction: After Instruction: W = 0x10 W = 0x25 ADDWF Add W and f Syntax: [label] ADDWF f,d Operands: 0 f 127 d [0,1] Operation: (W) + (f) (destination) Status Affected: C, DC, Z Encoding: dfff ffff Description: Add the contents of the W register with register f. If d is 0 the result is stored in the W register. If d is 1 the result is stored back in register f. Cycles: 1 Example: ADDWF FSR, 0 Before Instruction After Instruction W = 0x17 FSR = 0xC2 W = 0xD9 FSR = 0xC2 Pagina 25

26 ANDLW AND Literal with W Syntax: [label] ANDLW k Operands: 0 k 255 Operation: (W).AND. (k) (W) Status Affected: Z Encoding: kkkk kkkk Description: Cycles: 1 The contents of W register are AND ed with the eight bit literal 'k'. The result is placed in the W register. Example ANDLW 0x5F Before Instruction: After Instruction: W = 0xA3 W = 0x03 ANDWF AND W with f Syntax: [label] ANDWF f,d Operands: 0 f 127 d [0,1] Operation: (W).AND. (f) (destination) Status Affected: Z Encoding: Description: Cycles: dfff ffff AND the W register with register 'f'. If 'd'is 0 the result is Stored in the W register. If 'd'is 1 the result is stored back in register 'f'. Example ANDWF FSR, 1 Before Instruction: After Instruction: W = 0x17 FSR = 0xC2 W = 0x17 FSR = 0x02 Pagina 26

27 BCF Bit Clear f Syntax: [label] BCF f,b Operands: 0 f b 7 Operation: 0 (f<b>) Status Affected: None Encoding: 01 00bb bfff ffff Description: Bit b in register f is cleared. Cycles: 1 Example BCF FLAG_REG, 7 Before Instruction: After Instruction: FLAG_REG = 0xC7 FLAG_REG = 0x47 BSF Bit Set f Syntax: [label] BSF f,b Operands: 0 f b 7 Operation: 1 (f<b>) Status Affected: None Encoding: 01 01bb bfff ffff Description: Bit b in register f is set. Cycles: 1 Example BSF FLAG_REG, 7 Before Instruction: After Instruction: FLAG_REG = 0x0A FLAG_REG = 0x8A Pagina 27

28 BTFSC Bit Test, Skip if Clear Syntax: [label] BTFSC f,b Operands: 0 f b 7 Operation: skip if (f<b>) = 0 Status Affected: None Encoding: Description: Cycles: 1(2) 01 10bb bfff ffff If bit b in register f is 1 then the next instruction is executed. If bit b, in register f, is 0 then the next instruction is discarded, and a NOP is executed instead, making this a 2TCY instruction. Example HERE BTFSC FLAG, 1 FALSE GOTO PROCESS_CODE BTFSS Bit Test f, Skip if Set Syntax: [label] BTFSS f,b Operands: 0 f b < 7 Operation: skip if (f<b>) = 1 Status Affected: None Encoding: Description: Cycles: 1(2) 01 11bb bfff ffff If bit b in register f is 0 then the next instruction is executed. If bit b is 1, then the next instruction is discarded and a NOP is Executed instead, making this a 2TCY instruction. Example HERE BTFSC FLAG,1 FALSE GOTO PROCESS_CODE Pagina 28

29 CALL Call Subroutine Syntax: [ label ] CALL k Operands: 0 k 2047 Operation: (PC)+ 1 TOS, k PC<10:0>, (PCLATH<4:3>) PC<12:11> Status Affected: None Encoding: 10 0kkk kkkk kkkk Description: Cycles: 2 Call Subroutine. First, return address (PC+1) is pushed onto the stack. The eleven bit immediate address is loaded into PC bits <10:0>. The upper bits of the PC are loaded from PCLATH. CALL is a two cycle instruction. Example HERE CALL THERE Before Instruction PC = Address HERE After Instruction PC = Address THERE TOS = Address HERE+1 CLRF Clear f Syntax: [label] CLRF f Operands: 0 f 127 Operation: 00h (f) 1 Z Status Affected: Z Encoding: fff ffff Description: The contents of register f are cleared and the Z bit is set. Cycles: 1 Example CLRF FLAG_REG Before Instruction After Instruction FLAG_REG = 0x5A FLAG_REG = 0x00 Z = 1 Pagina 29

30 CLRW Clear W Syntax: [ label ] CLRW Operands: None Operation: 00h (W) 1 Z Status Affected: Z Encoding: xxx xxxx Description: W register is cleared. Zero bit (Z) is set. Cycles: 1 Example CLRW Before Instruction After Instruction W = 0x5A W = 0x00 Z = 1 CLRWDT Clear Watchdog Timer Syntax: [ label ] CLRWDT Operands: None Operation: 00h WDT, 0 WDT prescaler, 1 TO, 1 PD Status Affected: TO, PD Encoding: Description: CLRWDT instruction resets the Watchdog Timer. It also resets the Prescaler of the WDT. Status bits TO and PD are set. Cycles: 1 Example CLRWDT Before Instruction WDT counter =? After Instruction WDT counter = 0x00 WDT prescaler= 0 TO = 1, PD = 1 Pagina 30

31 COMF Complement f Syntax: [ label ] COMF f,d Operands: 0 f 127 d [0,1] Operation: (f) (destination) Status Affected: Z Encoding: dfff ffff Description: Cycles: 1 The contents of register f are complemented. If d is 0 the result is stored in W. If d is 1 the result is stored back in register f. Example COMF REG1,0 Before Instruction After Instruction REG1 = 0x13 REG1 = 0x13 W = 0xEC DECF Decrement f Syntax: [label] DECF f,d Operands: 0 f 127 d [0,1] Operation: (f) - 1 (destination) Status Affected: Z Encoding: dfff ffff Description: Cycles: 1 Decrement register f. If d is 0 the result is stored in the W register. If d is 1 the result is stored back in register f. Example DECF CNT, 1 Before Instruction CNT = 0x01, Z = 0 After Instruction CNT = 0x00, Z = 1 Pagina 31

32 DECFSZ Decrement f, Skip if 0 Syntax: [ label ] DECFSZ f,d Operands: 0 f 127 d [0,1] Operation: (f) - 1 (destination); skip if result = 0 Status Affected: None Encoding: dfff ffff Description: Cycles: 1(2) The contents of register f are decremented. If d is 0 the result is placed in the W register. If d is 1 the result is placed back in register f. If the result is 1, the next instruction, is executed. If the result is 0, then a NOP is executed instead making it a 2TCY instruction. Example DECFSZ CNT, 1 GOTO LOOP GOTO Unconditional Branch Syntax: [ label ] GOTO k Operands: 0 k 2047 Operation: k PC<10:0> PCLATH<4:3> PC<12:11> Status Affected: None Encoding: 10 1kkk kkkk kkkk Description: Cycles: 2 GOTO is an unconditional branch. The eleven bit immediate value is loaded into PC bits <10:0>. The upper bits of PC are loaded from PCLATH<4:3>. GOTO is a two cycle instruction. Example GOTO THERE Pagina 32

33 INCF Increment f Syntax: [ label ] INCF f,d Operands: 0 f 127 d [0,1] Operation: (f) + 1 (destination) Status Affected: Z Encoding: dfff ffff Description: Cycles: 1 The contents of register f are incremented. If d is 0 the result is placed in the W register. If d is 1 the result is placed back in register f. Example INCF CNT, 1 Before Instruction CNT = 0xFF, Z = 0 After Instruction CNT = 0x00, Z = 1 INCFSZ Increment f, Skip if 0 Syntax: [ label ] INCFSZ f,d Operands: 0 f 127 d [0,1] Operation: (f) + 1 (destination), skip if result = 0 Status Affected: None Encoding: dfff ffff Description: Cycles: 1(2) The contents of register f are incremented. If d is 0 the result is placed in the W register. If d is 1 the result is placed back in register f. If the result is 1, the next instruction is executed. If the result is 0, a NOP is executed instead making it a 2TCY instruction. Example INCFSZ CNT, 1 GOTO LOOP Pagina 33

34 IORLW Inclusive OR Literal with W Syntax: [ label ] IORLW k Operands: 0 k 255 Operation: (W).OR. k (W) Status Affected: Z Encoding: kkkk kkkk Description: Cycles: 1 The contents of the W register is OR ed with the eight bit literal 'k'. The result is placed in the W register. Example IORLW 0x35 Before Instruction After Instruction W = 0x9A W = 0xBF Z = 1 IORWF Inclusive OR W with f Syntax: [ label ] IORWF f,d Operands: 0 f 127 d [0,1] Operation: (W).OR. (f) (destination) Status Affected: Z Encoding: dfff ffff Description: Cycles: 1 Inclusive OR the W register with register f. If d is 0 the result is placed in the W register. If d is 1 the result is placed back in register f. Example IORWF RESULT, 0 Before Instruction After Instruction RESULT = 0x13, W = 0x91 RESULT = 0x13, W = 0x93 Z = 1 Pagina 34

35 MOVF Move f Syntax: [ label ] MOVF f,d Operands: 0 f 127 d [0,1] Operation: (f) (destination) Status Affected: Z Encoding: Description: Cycles: 1 Example MOVF FSR, dfff ffff The contents of register f is moved to a destination dependant upon the status of d. If d = 0, destination is W register. If d = 1, the destination is file register f itself. d = 1 is useful to test a file register since status flag Z is affected. MOVLW Move Literal to W Syntax: [ label ] MOVLW k Operands: 0 k 255 Operation: k (W) Status Affected: None Encoding: 11 00xx kkkk kkkk Description: Cycles: 1 The eight bit literal k is loaded into W register. The don t cares will assemble as 0 s. Example MOVLW 0x5A Pagina 35

36 MOVWF Move W to f Syntax: [ label ] MOVWF f Operands: 0 f 127 Operation: (W) (f) Status Affected: None Encoding: fff ffff Description: Move data from W register to register 'f'. Cycles: 1 Example MOVWF OPTION_REG Before Instruction After Instruction OPTION = 0xFF, W = 0x4F OPTION = 0x4F, W = 0x4F NOP No Operation Syntax: [ label ] NOP Operands: None Operation: No operation Status Affected: None Encoding: xx Description: No operation. Cycles: 1 Example NOP Pagina 36

37 RETFIE Return from Interrupt Syntax: [ label ] RETFIE Operands: None Operation: TOS PC, 1 GIE Status Affected: None Encoding: Description: Cycles: 2 Return from Interrupt. Stack is POPed and Top of Stack (TOS) is loaded in the PC. Interrupts are enabled by setting Global Interrupt Enable bit, GIE (INTCON<7>). This is a two cycle instruction. Example RETFIE RETLW Return with Literal in W Syntax: [ label ] RETLW k Operands: 0 k 255 Operation: k (W); TOS PC Status Affected: None Encoding: 11 01xx kkkk kkkk Description: Cycles: 2 The W register is loaded with the eight bit literal k. The program counter is loaded from the top of the stack (the return address). This is a two cycle instruction. Example CALL TABLE TABLE ADDWF PC RETLW k1 RETLW k2 RETLW kn ;W = offset ;Begin table ; End of table Pagina 37

38 RETURN Return from Subroutine Syntax: [ label ] RETURN Operands: None Operation: TOS PC Status Affected: None Encoding: Description: Cycles: 2 Return from subroutine. The stack is POPed and the top of the stack (TOS) is loaded into the program counter. This is a two cycle instruction. Example RETURN RLF Rotate Left f through Carry Syntax: [ label ] RLF f,d Operands: 0 f 127 d [0,1] Operation: See description below Status Affected: C Encoding: dfff ffff Description: The contents of register f are rotated one bit to the left through the Carry Flag. If d is 0 the result is placed in the W register. If d is 1 the result is stored back in register f. Cycles: 1 Example RLF REG1,0 Pagina 38

39 RRF Rotate Right f through Carry Syntax: [ label ] RRF f,d Operands: 0 f 127 d [0,1] Operation: See description below Status Affected: C Encoding: dfff ffff Description: The contents of register f are rotated one bit to the right through the Carry Flag. If d is 0 the result is placed in the W register. If d is 1 the result is placed back in register f. Cycles: 1 Example RRF REG1,0 SLEEP Syntax: [ label ] SLEEP Operands: None Operation: 00h WDT, 0 WDT prescaler, 1 TO, 0 PD Status Affected: TO, PD Encoding: Description: Cycles: 1 The power-down status bit, PD is cleared. Time-out status bit, TO Is set. Watchdog Timer and its prescaler are cleared. The processor is put into SLEEP mode with the oscillator stopped. Example: SLEEP Pagina 39

40 SUBLW Subtract W from Literal Syntax: [ label ] SUBLW k Operands: 0 k 255 Operation: k - (W) (W) ( Status Affected: C, DC, Z Encoding: x kkkk kkkk Description: The W register is subtracted (2 s complement method) from the eight bit literal 'k'. The result is placed in the W register. Cycles: 1 Example 1: SUBLW 0x02 Before Instruction W = 1, C =?, Z =? After Instruction W = 1 C = 1; result is positive Z = 0 Example 2: Before Instruction W = 2, C =?, Z =? After Instruction W = 0 C = 1; result is zero Z = 1 Example 3: Before Instruction W = 3, C =?, Z =? After Instruction W = 0xFF C = 0; result is negative Z = 0 Pagina 40

41 SUBWF Subtract W from f Syntax: [ label ] SUBWF f,d Operands: 0 f 127 d [0,1] Operation: (f) - (W) (destination) ( Status Affected: C, DC, Z Encoding: dfff ffff Description: Subtract (2 s complement method) W register from register 'f'. If 'd'is 0 the result is stored in the W register. If 'd'is 1 the result is stored back in register 'f'. Cycles: 1 Example 1: SUBWF REG1,1 Before Instruction REG1 = 3, W = 2 C =?, Z =? After Instruction REG1 = 1, W = 2 C = 1; result is positive Z = 0 Example 2: Before Instruction REG1 = 2, W = 2 C =?, Z =? After Instruction REG1 = 0, W = 2 C = 1; result is zero Z = 1 Example 3: Before Instruction REG1 = 1, W = 2 C =?, Z =? After Instruction REG1 = 0xFF, W = 2 C = 0; result is negative Z = 0 Pagina 41

42 SWAPF Swap Nibbles in f Syntax: [ label ] SWAPF f,d Operands: 0 f 127 d [0,1] Operation: (f<3:0>) (destination<7:4>), (f<7:4>) (destination<3:0>) Status Affected: None Encoding: dfff ffff Description: Cycles: 1 The upper and lower nibbles of register 'f'are exchanged. If 'd'is 0 the result is placed in W register. If 'd'is 1 the result is placed in register 'f'. Example SWAPF REG, 0 Before Instruction After Instruction REG1 = 0xA5 REG1 = 0xA5 W = 0x5A XORLW Exclusive OR Literal with W Syntax: [label] XORLW k Operands: 0 k 255 Operation: (W).XOR. k (W) Status Affected: Z Encoding: kkkk kkkk Description: Cycles: 1 The contents of the W register are XOR ed with the eight bit literal 'k'. The result is placed in the W register. Example: XORLW 0xAF Before Instruction After Instruction W = 0xB5 W = 0x1A Pagina 42

43 XORWF Exclusive OR W with f Syntax: [label] XORWF f,d Operands: 0 f 127 d [0,1] Operation: (W).XOR. (f) (destination) Status Affected: Z Encoding: dfff ffff Description: Cycles: 1 Exclusive OR the contents of the W register with register 'f'. If 'd'is 0 the result is stored in the W register. If 'd'is 1 the result is stored back in register 'f'. Example XORWF REG 1 Before Instruction After Instruction REG = 0xAF W = 0xB5 REG = 0x1A W = 0xB5 Pagina 43

44 Schema elettrico del programmatore di PIC16F8X Lo schema elettrico che segue rappresenta lo schema di un programmatore di PIC16F8X. Diversi programmi possono gestire questo programmatore, quasi tutti scaricabili liberamente da internet. Sia il programma WinPic800 che Ic-Prog si sono rivelati degli ottimi programmi di gestione. Questi programmi possono essere scaricati dai siti: Pagina 44

45 Per i due programmi menzionati, si riporta di seguito la scheda di impostazione dell hardware. L impostazione per il programma IC-Prog è la seguente. Per il programma WinPic800 l impostazione è la seguente. Pagina 45

46 Collegamento dei pin con il programmatore Pagina 46

47 ; FILE: PIC16F84.DEF ; ; REGISTER FILE MAP PIC16F84 ; (Gennaio 2010) ; ; ; *** ATTENZIONE *** ; 1) La direttiva 'EQU'con cui si definisce una variabile di sistema deve iniziare dalla prima ; colonna. In numero usato in questa direttiva è l'indirizzo RAM della variabile. ; 2) La direttiva 'CONSTANT'con cui vengono definite le costanti di sistema NON DEVONO ; iniziare dalla prima colonna. Il numero usato in questa direttiva è il VALORE che assume ; la costante all'interno del programma che si sta realizzando. ; ; Register Bank 0 ; =========== ; Reg_Tmr0 EQU 0x01 Reg_Pcl EQU 0x02 Reg_Status EQU 0x03 Reg_Fsr EQU 0x04 Reg_PortA EQU 0x05 Reg_PortB EQU 0x06 Reg_PortC EQU 0x07 Reg_Eedata EQU 0x08 Reg_Eeadr EQU 0x09 Reg_Pclath EQU 0x0A Reg_Intcon EQU 0x0B ; ; Register Bank 1 ; =========== ; Reg_Option EQU 0x81 Reg_Pcl2 EQU 0x82 Reg_Status2 EQU 0x83 Reg_Fsr2 EQU 0x84 Reg_TrisA EQU 0x85 Reg_TrisB EQU 0x86 Reg_TrisC EQU 0x87 Reg_Eecon1 EQU 0x88 Reg_Eecon2 EQU 0x89 Reg_Pclath2 EQU 0x8A Reg_Intcon2 EQU 0x8B Pagina 47

48 ; Costanti generali ; =========== Constant Bit_0 = 0 Constant Bit_1 = 1 Constant Bit_2 = 2 Constant Bit_3 = 3 Constant Bit_4 = 4 Constant Bit_5 = 5 Constant Bit_6 = 6 Constant Bit_7 = 7 Constant Flag_C = 0 Constant Flag_DC = 1 Constant Flag_Z = 2 Pagina 48

49 ; Programma per far lampeggiare un LED ; Data Marzo 2009 ; ; Specifiche ; Sull'ingresso Ao è posto un interruttore N.O. ; Sull'uscita Bo è posto un LED con relativa resistenza ;Si richiede: fintanto che il pulsante è premuto il LED Lampeggi ; ; Title "Led Lampeggiante" SubTitle "Lampeggia Led su pressione" Radix hex ; Definizione delle variabili di sistema Include "PIC16F84.DEF" ; Definizione variabili locali X equ 0x0C Y equ 0x0D Z equ 0x0E Org 0 Start: Nop MainStart: BCF Reg_Status, Bit_6 ; commuta l'area dati in Bank1 BSF Reg_Status, Bit_5 MovLW 1 ; Ao è Input, tutte le altre linee Output MovWF Reg_TrisA Nop MovLW 0 MovWF Reg_TrisB Nop BCF Reg_Status, Bit_6 BCF Reg_Status, Bit_5 bcf Reg_PortB, Bit_1 call Pausa bsf Reg_PortB, Bit_1 call Pausa ; Le linee di B sono tutte come Output ;Ripristina l'area registri Bank0 ; lampeggia un LED sull'uscita B1 bcf Reg_PortB, Bit_1 bcf Reg_PortB, Bit_0 Test: BTFSS Reg_PortA, Bit_0 ; Se l'ingresso Ao è posto a +5 volt ; l'istruzione succ. viene saltata Goto Test ; Avviene il salto se su Ao c è 0 volt Pagina 49

50 ; ;Sottoprogramma PAUSA per rallentare l esecuzione del programma ; Pausa: Pausa2: End Movlw 0xff Movwf X Decfsz X Goto Pausa2 Return Pagina 50

51 Tabella operative Per poter determinare i valori numerici da attribuire ai registri TrisA e TrisB e, quindi, configurare correttamente le porta A e B, dobbiamo far uso della tabella operativa riportata di seguito. Come si può osservare, la tabella è divisa in due zone: la zona riservata alla porta A e quella riservata alla porta B. In ciascun riquadro sono riportate le linee che compongono la porta A (A0,A1,A2,A3,A4) e la porta B (B0,B1,B2,B3,B4,B5,B6,B7), come si vede dalla colonna Linea. La colonna Pin riporta il numero del pin dell integrato associato alla linea indicata. Nella colonna Inp/Out si deve indicare un 1 se vogliamo configurare la linea come Input e uno 0 se vogliamo configurare la linea come Output. In questo modo la colonna indicata con Bit è l espressione del numero in binario che dobbiamo porre nel registro TrisA e TrisB, leggendo i bit dal basso verso l alto, cioè dal bit più significativo a quello meno significativo. La colonna Descrizione deve essere usata come promemoria della linea configurata. Pagina 51

52 Tabella Operativa µc PIC 16F84 Porta Linea Pin Inp/Out Bit Valore Tris Descrizione A A 0 A 1 A A 3 2 B A 4 B 0 B 1 B 2 B B 4 10 Pagina 52 B 5 B 6 B

53 Tabella dei condizionamenti dei flag nella sottrazione Dalla tabella si possono ricavare le seguenti regole: 1) Se il CARRY è 1 il risultato è >= 0 2) Se il CARRY è 0 il risultato è < 0 3) Se ZERO è 1 il risultato è 0 Pagina 53

54 NOTE Pagina 54

55 NOTE Pagina 55

PIC Set istruzioni. Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS

PIC Set istruzioni. Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS PIC Set istruzioni Questo è il set completo delle istruzioni dei Microchip PIC: Sintassi Descrizione Microchip Operazione equivalente Effetto su STATUS ADDLW k Add Literal and W W = W + k C, DC, Z ADDWF

Dettagli

MICROCONTROLLORE PIC16F84A

MICROCONTROLLORE PIC16F84A MICROCONTROLLORE PIC16F84A Il microcontrollore pic16f84a, a differenza di un computer normale e' dotato in un unico integrato di tutti gli elementi fondamentali di un computer, che sono la Cpu, unita'

Dettagli

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware

Lezione 1 Caratteristiche principali del PIC16C84 L'hardware Lezione 1 Nella prima lezione del corso, cercheremo di comprendere come sia fatto internamente il controller più conosciuto di Microchip, ovvero il PIC16C84 poi evoluto nel PIC16F84. Sebbene i microcontroller

Dettagli

Programmazione del microcontrollore PIC 16F84

Programmazione del microcontrollore PIC 16F84 Programmazione del microcontrollore PIC 16F84 2 Indice Capitolo 1: Set di istruzioni del PIC 16F84 1.1 Descrizione sintetica 1.2 Simbologia adottata 1.3 Sintassi 1.4 Descrizione completa Capitolo 2: Variabili,

Dettagli

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino

Introduzione. Corso di Informatica Applicata. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Introduzione Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.:

Dettagli

Esercizi di verifica del debito formativo:

Esercizi di verifica del debito formativo: Esercizi di verifica del debito formativo: Disegnare il diagramma e scrivere la tabella delle transizioni di stato degli automi sequenziali a stati finiti che rappresentano il comportamento dei seguenti

Dettagli

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC.

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S La programmazione dei PIC. Corso introduttivo sui microcontrollori A. S. 2007 2008 La programmazione dei PIC Nicola Amoroso namoroso@mrscuole.net NA L3 1 Il software per il PIC Come per qualsiasi sistema a microprocessore, anche

Dettagli

Lezione 8. Figura 1. Configurazione del registro INTCON

Lezione 8. Figura 1. Configurazione del registro INTCON Lezione 8 In questa puntata, ci dedicheremo all'impiego dei cosiddetti "interrupt", che tanto incutono temore ai più inesperti. Ma che cosa sono questi interrupt? Come abbiamo già visto, un programma non

Dettagli

Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM

Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM Microcontrollori PIC Teoria, Esperimenti, Esercizi HARDWARE DEL PIC SOFTWARE DEL PIC MPLAB MEMORIA PORTE-IO TIMER DISPLAY AUDIO ADC INTERRUPT EEPROM HARDWARE DEL PIC Il PIC6F684 (PIC=Peripheral Interface

Dettagli

Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84

Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84 Microcontrollore PIC 16F84 1 1. Generalità Capitolo X del Testo Ettore Panella Giuseppe Spalierno Corso di Elettronica 3 Edizioni Cupido MICROCONTROLLORE PIC 16F84 I microcontrollori sono dei circuiti

Dettagli

Microcontrollori. L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876.

Microcontrollori. L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876. 111 Microcontrollori L ultima parte del corso prevede un approfondimento sui microprocessori, in particolare sul PIC 16F876. In elettronica digitale il microcontrollore è un dispositivo elettronico integrato

Dettagli

ESERCIZI SUI SISTEMI DI NUMERAZIONE

ESERCIZI SUI SISTEMI DI NUMERAZIONE ESERCIZI SUI SISTEMI DI NUMERAZIONE 1 ) Convertire in base 10 i seguenti numeri rappresentati nelle basi indicate: (1000101) 2 [R. 69] (477) 8 [R. 319] (40F) 16 [R. 1039] (5778) 9 [R. 4283] (126) 9 [R.

Dettagli

PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET

PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET Canzian Sara Liberali Marco 5AT A.S.2007/2008 PUNTATORE LASER AUTOMATICO CON COMANDO VIA ETHERNET Questo sistema permette di posizionare una luce laser in una determinata posizione data dalle coordinate

Dettagli

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche:

I microcontrollori. In sostanza i pic hanno le seguenti caratteristiche: I microcontrollori Con il termine di microcontrollori si intende un sistema integrato simile ad un microprocessore ma contente su un unico chip oltre la CPU, anche la memoria RAM, memoria dati, memoria

Dettagli

Gestione Degli INTERRUPT

Gestione Degli INTERRUPT Gestione Degli INTERRUPT Il PIC 16F876 possiede vari tipi di Interrupt. Si parla di 14 differenti sorgenti di interrupt, ma molto facilmente nella programmazione se ne terranno in considerazione ben pochi:

Dettagli

APPUNTI DI ASM PER PIC

APPUNTI DI ASM PER PIC APPUNTI DI ASM PER PIC Prefazione: questi sono gli appunti di un profano che ha iniziato a studiarsi l asm per pic senza avere nessuno o quasi conoscenza pregressa, mi scuso pertanto di eventuali imprecisioni

Dettagli

Lanciare MPLAB IDE (Start->Programmi->Mirochip->MPLAB IDE v7.22->mplab IDE):

Lanciare MPLAB IDE (Start->Programmi->Mirochip->MPLAB IDE v7.22->mplab IDE): Lanciare MPLAB IDE (Start->Programmi->Mirochip->MPLAB IDE v7.22->mplab IDE): Creare un nuovo progetto (Project->Project Wizard): Selezionare il dispositivo (PIC16F876A): Selezionare il linguaggio (MPASM

Dettagli

SISTEMA DI SVILUPPO MC-16

SISTEMA DI SVILUPPO MC-16 SISTEMA DI SVILUPPO MC-16 per microcontrollori PIC16F84 - PIC16F876 o MANUALE DI PROGRAMMAZIONE 2 Il sistema MC-16 contiene: Scheda di sviluppo a microcontrollore con PIC16F84 e PIC16F876. Unità di programmazione

Dettagli

List p=16f84 ;Tipo di processore include "P16F84.INC" ;Definizioni di registri interni. goto Inizio

List p=16f84 ;Tipo di processore include P16F84.INC ;Definizioni di registri interni. goto Inizio ESEMPIO 1.1 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Sommare due valori immediati (p.e. 5+7) il risultato va depositato nella posizione 0x10 List p=16f84 Tipo

Dettagli

Applicazioni dei microcontrollori PIC

Applicazioni dei microcontrollori PIC Applicazioni dei microcontrollori PIC In questa unità vengono esposte le modalità di realizzazione di un circuito hardware con il microcontroller PIC16C84 (o PIC16F84), per la prova dei programmi presentati

Dettagli

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti

Lezione 4. Figura 1. Schema di una tastiera a matrice di 4x4 tasti Lezione 4 Uno degli scogli maggiori per chi inizia a lavorare con i microcontroller, è l'interfacciamento con tastiere a matrice. La cosa potrebbe a prima vista sembrare complessa, ma in realtà è implementabile

Dettagli

CIRCUITO DI TEST E SOFTWARE UTILIZZATI

CIRCUITO DI TEST E SOFTWARE UTILIZZATI CIRCUITO DI TEST E SOFTWARE UTILIZZATI Circuito di Test Nello schema elettrico di figura A è rappresentato un circuito, realizzabile anche senza l ausilio di un circuito stampato, che consente di testare

Dettagli

PROGRAMMAZIONE ASSEMBLER

PROGRAMMAZIONE ASSEMBLER PROGRAMMAZIONE ASSEMBLER Esempio di semplice lampeggiatore a LED 072805 Sistemi Elettronici Dicembre 2006 Ultimo aggiornamento: 11 dicembre 2006 1 OBBIETTIVI 1 Discutere delle metodologie di progetto e

Dettagli

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC [LABEL:] CODICE OP1[,OP2][COMMENTO] MNEM LD E,0H PIO EQU 0CH ORG 100H LD E,0 ciclo: IN A,(PIO) LD B,A IN A,(PIO) LD C,A LD A,E ADD A,B SUB C CP 8CH JRZ (ciclo) LD A,1 OUT (PIO),A HALT END Il precedente

Dettagli

Il µcontrollore PIC 16F84

Il µcontrollore PIC 16F84 Il µcontrollore PIC 16F84 Microchip Tecnology D. Ch. 1 Il grande successo dei microcontrollori ha indotto tutte le grandi case costrutrici di semiconduttori come la Intel, la Philips Semiconductors, la

Dettagli

Pilotare un motore passo-passo, in questo caso il modello della Sanyo le cui caratteristiche principali sono quelle di figura1.

Pilotare un motore passo-passo, in questo caso il modello della Sanyo le cui caratteristiche principali sono quelle di figura1. 10. Pilotaggio unipolare di un motore passo-passo Scopo della prova Pilotare un motore passo-passo, in questo caso il modello 103-547-52500 della Sanyo le cui caratteristiche principali sono quelle di

Dettagli

GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876

GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876 GESTIONE DEI TEMPI CON IL TIMER1 DEL PIC16F876 6.0 TIMER1 MODULE The Timer1 module is a 16-bit timer/counter consisting of two 8-bit registers (TMR1H and TMR1L), which are readable and writable. The TMR1

Dettagli

APPUNTI SUL PIC16F84

APPUNTI SUL PIC16F84 APPUNTI SUL PIC16F84 Gianluca 'gurutech' Mascolo v0.1 04/04/2004 mailto: gurutech_at_gurutech.it Hackit04 Il PIC16F84 è un microcontrollore a 8-bit dotato di due porte di I/O digitali, una da 5 bit e una

Dettagli

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI

INTRODUZIONE alla PROGRAMMAZIONE di MICROCONTROLLORI LUCIDI LEZIONI SISTEMI ELETTRONICI INDUSTRIALI www.dismi.unimo.it (People Associated Pavan ) www.microchip.com com (Datasheet PIC - DS30292) (Mid Range Family Manual DS33023) Università degli Studi di

Dettagli

PIC Esempi - LED. Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED.

PIC Esempi - LED. Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED. PIC Esempi - LED Per i primi esempi viene utilizzato soltanto un LED sulla porta B (PortB), successivamente si utilizzano più LED. 1.1 Questo semplice programma esegue uno switch ripetutamente su tutti

Dettagli

Lezione 2. Figura 1. Schema del circuito necessario per le prove

Lezione 2. Figura 1. Schema del circuito necessario per le prove Lezione 2 Inizializzazione porte Il primo argomento che tratteremo è la prima operazione da effettuare quando si programma un microcontrollore ovvero settare correttamente le porte ed inizializzare i registri

Dettagli

DEC PDP8, III Generazione, '65-'75

DEC PDP8, III Generazione, '65-'75 Parte I DEC PDP8, III Generazione, '65-'75 PDP8 Architettura (Livello Registri) 12 bit Program Counter PC 12 bit Memory Address Register MAR Random Access Memory RAM 4096 x 16 1 bit I 3 bit Operation Code

Dettagli

PROCESSOR 16F84A. ;configurazione FUSES: oscillatore XT, WDT disabilitato PWRT abilitato, CP disabilitato config 0x3FF1

PROCESSOR 16F84A. ;configurazione FUSES: oscillatore XT, WDT disabilitato PWRT abilitato, CP disabilitato config 0x3FF1 ---- ; Programma per ROBOT MDB3F2004-05 Evolution ; Autore: MICCI Antonello copyright 2005 ---- ------------------------- ;Piedino RA0 ingresso fotocellula dx livello basso rilevazione ostacolo ;Piedino

Dettagli

Davide Gennaretti, Matteo Nicolini

Davide Gennaretti, Matteo Nicolini Seminario sui Microcontrollori Davide Gennaretti, Matteo Nicolini AA 2003-04 II Facoltà di Ingegneria Elettronica Cesena Cosa sono i microcontrollori? Piccoli computer concentrati in un chip Un Datapath

Dettagli

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 7. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 7 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

Struttura di programmi MAL Elementi lessicali

Struttura di programmi MAL Elementi lessicali Elementi lessicali Ogni microistruzione è definita su una linea di programma Le linee vuote vengono ignorate Le linee con solo commenti vengono ignorate Il carattere di fine linea (RETURN ENTER INVIO)

Dettagli

CORSO di AUTOMAZIONE INDUSTRIALE

CORSO di AUTOMAZIONE INDUSTRIALE CORSO di AUTOMAZIONE INDUSTRIALE (cod. 8469-21029) APPELLO del 22 Giugno 2011 Prof. Andrea Cataldo Soluzioni Esercizio 1 (Domande generali) 1.a) Controllo Logico Dire se il seguente programma SFC è sintatticamente

Dettagli

Maurizio Del Corso Tiziano Galizia. Conoscere ed usare. Progettare con i microcontrollori PIC in modo facile e veloce

Maurizio Del Corso Tiziano Galizia. Conoscere ed usare. Progettare con i microcontrollori PIC in modo facile e veloce Maurizio Del Corso Tiziano Galizia Conoscere ed usare PICmicro Progettare con i microcontrollori PIC in modo facile e veloce Titolo: Conoscere ed usare PICmicro Prima Edizione - Marzo 2005 ISBN 88-901665-0-9

Dettagli

Esercitazione n. 3. Dott. Salvatore Pontarelli

Esercitazione n. 3. Dott. Salvatore Pontarelli Esercitazione n. 3 Dott. Salvatore Pontarelli Struttura di un modulo Assembly Assembly è il linguaggio che l ARM assembler (armasm) legge per produrre il codice oggetto. può essere: ARM assembly language

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

Dettagli

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC

Il precedente programma è scritto in linguaggio Assembly per Z80. Il programma indicato sopra deve essere tradotto in codice Assembly per PIC [LABEL:] CODICE OP1[,OP2][COMMENTO] MNEM LD E,0H PIO EQU 0CH ORG 100H LD E,0 ciclo: IN A,(PIO) LD B,A IN A,(PIO) LD C,A LD A,E ADD A,B SUB C CP 8CH JRZ (ciclo) LD A,1 OUT (PIO),A HALT END Il precedente

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register

Strutture di controllo del flusso di esecuzione in assembler. MC68000: Status Register Corso di Calcolatori Elettronici I A.A. 2010-2011 Strutture di controllo del flusso di esecuzione in assembler Lezione 25 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di

Dettagli

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div MIPS load/store word, con indirizzamento al byte aritmetica solo su registri Istruzioni Significato add $t1, $t2, $t3 $t1 = $t2 + $t3 sub $t1, $t2, $t3 $t1 = $t2 - $t3 mult $t1, $t2 Hi,Lo = $t1*$t2 div

Dettagli

Università degli studi di Roma La Sapienza. Laboratorio di Automatica

Università degli studi di Roma La Sapienza. Laboratorio di Automatica Università degli studi di Roma La Sapienza DIS Dipartimento di Informatica e Sistemistica Laboratorio di Automatica Implementazione di un controllore PID digitale per il controllo di posizione di un motore

Dettagli

Assembly. Modello x86

Assembly. Modello x86 Assembly Modello x86 1 Il microprocessore Un MICROPROCESSORE è un circuito integrato dotato di una struttura circuitale in grado di attuare un prefissato SET di ISTRUZIONI 2 Caratteristiche del microprocessore

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly Introduzione al linguaggio macchina Indice Che cos è l assembly Elementi del linguaggio Memoria di programma Registri interni e di I/O Registri particolari Rappresentazione dell

Dettagli

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microprocessori - Microcontrollori. namoroso@mrscuole.net

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microprocessori - Microcontrollori. namoroso@mrscuole.net Corso introduttivo sui microcontrollori A. S. 2007 2008 Microprocessori - Microcontrollori Nicola Amoroso namoroso@mrscuole.net NA L1 1 Cosa e un microcontrollore? > Un piccolo computer, contenente al

Dettagli

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU:

Struttura CPU. Struttura e Funzione del Processore. Capitolo 12. Compiti CPU: Struttura e Funzione del Processore Capitolo 12 Struttura CPU Compiti CPU: Prelevare istruzioni Interpretare istruzioni Prelevare dati Elaborare dati Scrivere (memorizzare) dati 1 CPU con bus di sistema

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

Manuale per la programmazione del PIC 16F84

Manuale per la programmazione del PIC 16F84 Manuale per la programmazione del PIC 16F84 Principi basi per la programmazione Introduzione alla programmazione Strutture basi di programmazione Descrizione del microcontrollore 16F84 Descrizione tecnica

Dettagli

Programmazione dei PLC in linguaggio Ladder

Programmazione dei PLC in linguaggio Ladder Programmazione dei PLC in linguaggio Ladder Prima Parte ITI Alessandro Volta - Sassuolo Anno Scolastico 2009/2010 Linguaggio LADDER (linguaggio a contatti ) Introduzione e concetti fondamentali Il LADDER

Dettagli

Introduzione al PICmicro 16F877 PIC16F877

Introduzione al PICmicro 16F877 PIC16F877 Introduzione al PICmicro 16F877 I PICmicro (o più brevemente PIC) sono circuiti integrati prodotti dalla Microchip Technology Inc. che implementano microcontrollori (µc), cioè dei componenti che integrano

Dettagli

Architettura Harvard: il PIC possiede memorie separate per i dati e le istruzioni.

Architettura Harvard: il PIC possiede memorie separate per i dati e le istruzioni. Il PIC 16F84 Introduzione Il 16F84 è un microcontrollore RISC a 8 bit della Microchip estremamente versatile e semplice da utilizzare. E' possibile controllare led, rele', motori e attuatori in genere

Dettagli

I PIC Partendo da Zero By link_89

I PIC Partendo da Zero By link_89 I PIC Partendo da Zero By link_89 Indice: 1. Introduzione 2. Che cosa serve 3. I più usati 4. I registri 5. Il Primo progetto Introduzione Con questa guida non pretendo di insegnarvi a usare perfettamente

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Istruzioni di trasferimento dati

Istruzioni di trasferimento dati Istruzioni di trasferimento dati Leggere dalla memoria su registro: lw (load word) Scrivere da registro alla memoria: sw (store word) Esempio: Codice C: A[8] += h A è un array di numeri interi Codice Assembler:

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Caratteristiche principali dell architettura del processore MIPS Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini E un architettura RISC

Dettagli

I MICROCONTROLLORI PIC (Microchip) PARTE I

I MICROCONTROLLORI PIC (Microchip) PARTE I I MICROCONTROLLORI PIC (Microchip) PARTE I Prof. Angelo Monfroglio Questa dispensa, ad uso degli studenti degli indirizzi Elettronica e Informatica e di tutti i progettisti e studiosi interessati, fornisce

Dettagli

Corso introduttivo sui microcontrollori A. S La programmazione dei PIC Esempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms

Corso introduttivo sui microcontrollori A. S La programmazione dei PIC Esempio: 2 led blinking [alternate ON-OFF ] con ritardo di 500 ms Corso introduttivo sui microcontrollori A. S. 2007 2008 Nicola Amoroso namoroso@mrscuole.net NA L5 1 Semplici esempi in assembler Vediamo ora dei semplici esempi di programmazione dei PIC in assembler,

Dettagli

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero

Dettagli

Linguaggio macchina e linguaggio assembly

Linguaggio macchina e linguaggio assembly FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Università degli Studi di Udine Linguaggio macchina e linguaggio assembly Formato delle istruzioni 15 8 7 0 gruppo modo di indirizzamento codice dell

Dettagli

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento

Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Architetture degli Elaboratori e delle Reti Lezione 17 Linguaggio macchina: utilizzo di costanti, metodi di indirizzamento Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic.

Corso introduttivo sui microcontrollori. Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic. Corso introduttivo sui microcontrollori Un sistema tastierino a matrice 4x4 da collegare alla nostra demoboard AnxaPic Nicola Amoroso namoroso@mrscuole.net na_16f88_key4x4 1 Colleghiamo un tastierino a

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Capitolo 5 Struttura di base del processore

Capitolo 5 Struttura di base del processore Capitolo 5 Struttura di base del processore 5.1. Il periodo di clock deve ospitare tutti i ritardi di propagazione più il tempo di impostazione per i registri. a. Minimo periodo di clock = 70 + 600 + 50

Dettagli

Introduzione ai PICmicro

Introduzione ai PICmicro www.tanzilli.com Introduzione ai PICmicro I PICmicro sono dei circuiti integrati prodotti dalla Microchip Technology Inc., che appartengono alla categoria dei microcontroller, ovvero quei componenti che

Dettagli

L'architettura del processore MIPS

L'architettura del processore MIPS L'architettura del processore MIPS Piano della lezione Ripasso di formati istruzione e registri MIPS Passi di esecuzione delle istruzioni: Formato R (istruzioni aritmetico-logiche) Istruzioni di caricamento

Dettagli

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini

Il set istruzioni di MIPS Modalità di indirizzamento. Proff. A. Borghese, F. Pedersini Architettura degli Elaboratori e delle Reti Il set istruzioni di MIPS Modalità di indirizzamento Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE

ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE ARCHITETTURA DI UN SISTEMA DI ELABORAZIONE Il computer o elaboratore è una macchina altamente organizzata capace di immagazzinare, elaborare e trasmettere dati con notevole precisione e rapidità. Schematicamente

Dettagli

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO

Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO Set di istruzioni Z80 (quarta parte) Pagina 1 di 9 ISTRUZIONI DI SALTO JP pq E un istruzione di salto assoluto incondizionato. Per salto assoluto si intende il fatto che grazie a quest istruzione, il contenuto

Dettagli

Sottosistemi ed Architetture Memorie

Sottosistemi ed Architetture Memorie Sottosistemi ed Architetture Memorie CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II La memoria centrale Memoria centrale: array di

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini

Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock. Prof. Andrea Sterbini Architettura degli Elaboratori Lez. 8 CPU MIPS a 1 colpo di clock Prof. Andrea Sterbini sterbini@di.uniroma1.it Argomenti Progetto della CPU MIPS a 1 colpo di clock - Istruzioni da implementare - Unità

Dettagli

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 1^ parte Cosa è Arduino? Arduino è una piattaforma di sviluppo open-source basata su una semplice scheda

Dettagli

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio.

Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Lampeggio di 8 led Vogliamo far lampeggiare i led collegati come in figura ai bit della porta D del PIC 18F8722 presente sulla demo board in dotazione al laboratorio. Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1

Dettagli

Il processore: unità di elaborazione

Il processore: unità di elaborazione Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero

Dettagli

Richiami sull architettura del processore MIPS a 32 bit

Richiami sull architettura del processore MIPS a 32 bit Richiami sull architettura del processore MIPS a 32 bit Architetture Avanzate dei Calcolatori Valeria Cardellini Caratteristiche principali dell architettura del processore MIPS E un architettura RISC

Dettagli

Assembly (3): le procedure

Assembly (3): le procedure Architettura degli Elaboratori e delle Reti Lezione 13 Assembly (3): le procedure Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 13 1/23 Chiamata

Dettagli

ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84

ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84 ESERCIZI NEL LINGUAGGIO ASSEMBLATIVO DEL MICROCONTROLLORE PIC 16F84 1 ) Calcolare in binario e convertire in decimale il contenuto del registro W dopo l esecuzione delle seguenti istruzioni: MOVLW 150

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

Ripetizioni Materie Scientifiche

Ripetizioni Materie Scientifiche INTRODUZIONE Questo testo vuole fornire alcune nozioni base riguardo alla programmazione in linguaggio macchina dei PIC, i piccoli ed economici microcontrollori prodotti dalla Microchip. Intanto va fatta

Dettagli

Pseudo-operatori. Lo pseudo-operatore ORG

Pseudo-operatori. Lo pseudo-operatore ORG Pseudo-operatori Viene usato per inizializzare il Program Location Counter (PLC) Sintassi: ORG $HEXADDR Lo pseudo-operatore END Viene usato per terminare il processo di assemblaggio e saltare all entry

Dettagli

Marcia e Arresto di un Motore elettrico

Marcia e Arresto di un Motore elettrico Marcia e Arresto di un Motore elettrico Si vuole realizzare un circuito elettronico gestito da un microcontrollore PIC16F876 che sia in grado di pilotare un motore elettrico AC 220 volt utilizzando i classici

Dettagli

Architettura dei Calcolatori elettronici

Architettura dei Calcolatori elettronici Architettura dei Calcolatori elettronici CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I) DIS - Università degli Studi di Napoli Federico II Dal punto di vista architetturale un calcolatore

Dettagli

Il linguaggio macchina

Il linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 16 Il linguaggio macchina Proff. A. Borghese, F. Pedeini Dipaimento di Scienze dell Informazione Univeità degli Studi di Milano L 16 1/33 Linguaggio

Dettagli

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65

Indice. Introduzione 15. L hardware 24. Il software 43. Introduzione al linguaggio di Arduino 60. Basi del linguaggio di Arduino 65 Indice Introduzione 15 1.1 - Un po di storia 15 1.2 - Le vecchie schede 18 1.3 - La filosofia open 23 L hardware 24 2.1 - La scheda Arduino UNO 24 2.1.1 - Avvertenze sull uso della scheda 27 2.2 - Il microcontrollore

Dettagli

PLC Sistemi a Logica Programmabile Il linguaggio AWL istruzioni di base

PLC Sistemi a Logica Programmabile Il linguaggio AWL istruzioni di base PLC Sistemi a Logica Programmabile Il linguaggio AWL istruzioni di base Prof. Nicola Ingrosso Guida di riferimento all applicazione applicazione dei Microcontrollori Programmabili IPSIA G.Ferraris Brindisi

Dettagli

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo

Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo Corso di Calcolatori Elettronici I Istruzioni macchina ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Istruzioni del processore Abbiamo visto in precedenza alcuni esempi di istruzioni

Dettagli

CALCOLATORI ELETTRONICI II

CALCOLATORI ELETTRONICI II CALCOLATORI ELETTRONICI II L INTERFACCIA PARALLELA Argomenti della lezione Le interfacce parallele Il dispositivo Intel 855 Architettura Funzionamento Le interfacce parallele Esempio Le interfacce parallele

Dettagli

Programmi per la macchina di Mano addizione di due numeri

Programmi per la macchina di Mano addizione di due numeri Programmi per la macchina di Mano addizione di due numeri Indi Codici simbolici esadecimale binario rizzo 000 LDA 004 2004 0010 0000 0000 0100 001 ADD 005 1005 0001 0000 0000 0101 002 STA 006 3006 0011

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be

A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be Docenti Disciplina Cinzia Brunetto, Antonino Cacopardo SAE Sistemi Automatici Elettronici Competenze disciplinari di riferimento Il percorso formativo

Dettagli

CONTATORE/TIMER PROGRAMMABILE CTC Z80 1. Piedinatura 2. Struttura interna 4. Modo timer 5. Modo Counter 8. Programmazione del CTC 13

CONTATORE/TIMER PROGRAMMABILE CTC Z80 1. Piedinatura 2. Struttura interna 4. Modo timer 5. Modo Counter 8. Programmazione del CTC 13 CONTATORE/TIMER PROGRAMMABILE CTC Z80 1 Piedinatura 2 Struttura interna 4 Modo timer 5 Modo Counter 8 Programmazione del CTC 13 Gerarchia di priorità delle interruzioni 17 Interfacciamento 17 Contatore/Timer

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

09-05-07. Introduzione ai microcontrollori PIC

09-05-07. Introduzione ai microcontrollori PIC 09-05-07 Introduzione ai microcontrollori PIC Daniele Beninato: Nicola Trivellin: beninato@dei.unipd.it trive1@tin.it Che cosa è un microcontrollore? Un microcontrollore è un sistema a microprocessore

Dettagli

Architettura del PIC 18F452

Architettura del PIC 18F452 Controllo Digitale a.a. 2005-2006 Architettura del PIC 18F452 Ing. Federica Pascucci PIC 18F452 Caratteristiche Frequenza operativa: 40 MHz Memorie: Program FLASH memory: 32 KBytes, 16 K-istruzioni memorizzabili

Dettagli

Università degli studi di Bologna Anno Accademico 2000/2001 Corso di Architettura degli elaboratori

Università degli studi di Bologna Anno Accademico 2000/2001 Corso di Architettura degli elaboratori Università degli studi di Bologna Anno Accademico 2000/2001 Corso di Architettura degli elaboratori Esercitazione di Reti Logiche Realizzazione completa di un'architettura di processore attraverso strumenti

Dettagli