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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 i pin di uscita tra i due livelli alto e basso. ; 1.1 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings ;(oscillator type etc.) ;this is where the program starts running ; movlw 0x07 ;assegna al registro W generico (accumulatore) il ;valore 0x07il quale servirà a settare un determinato ;comportamento del comparatore ;CMCON identifica un registro (Comparator Control ;Register) ; Writing a value of 7 (binary ) to ;CMCON turns OFF the comparators ; ;pone a 1 il bit relativo al valore contenuto in RP0 ;nel registro STATUS ;RP0 è un bit che se vero seleziona il banco 1 ;altrimenti il banco 0 ;Banking requires the use of control bits for bank ;selection. ;These control bits are located in the STATUS Register. movlw b' ' ;set PortB all outputs ;pone il valore 0 nel registro W movwf TRISB ;sposta il valore in W (0) nel registro TRISB ;in tal modo setta tutta la porta B come ; uscita movwf TRISA ;set PortA all outputs ;come per la porta B ;NB. PORTA è formata solo da 5 bit ; l istruzione riporta a 0 il bit nel registro STATUS ; Loop movlw 0xff movwf PORTA ;set all bits on

2 movwf PORTB nop nop ;the nop's make up the time taken by the goto ;giving a square wave output movlw 0x00 movwf PORTA movwf PORTB ;set all bits off goto Loop ;go back and do it again Le prime tre righe sono istruzioni per l assemblatore, non sono parte integrante del programma, lasciamole come sono in questi esempi senza farci troppe domande sul perchè ci sono. La Config setta le varie configurazioni possibili del chip, in questo caso viene selezionato l oscillatore interno a 4MHz. La riga successiva org 0x0000 setta l indirizzo iniziale, questo può variare a seconda del PIC usato ma i più moderni utilizzano l indirizzo più basso (zero). Le righe 5 e 6: movlw 0x07 significa MOVe the Literal value 7 into the W register, il registro W è il registro di lavoro principale, movwf CMCON significa MOV the value in W to File CMCON, CMCON è un registro utilizzato per selezionare l uso del comparatore hardware. Pertanto le due righe settano CMCON al valore 7, questo disabilita il comparatore, e re le relative linee di I/O disponibili per uso generale. Le cinque righe successive settano la direzione delle linee di I/O, inizialmente dobbiamo selezionare il bank 1, alcuni registri sono in bank 0 ed altri in bank 1, per selezionare bank 1 abbiamo bisogno di settare il bit RP0 nello STATUS register a 1 il comando bsf (Bit Set File) setta un bit a uno. Il bcf (Bit Clear File) alla fine delle cinque righe, setta RP0 di nuovo a 0 e ritorna al bank 0. Il movlw, come prima, muove un valore nel registro W, questa volta però il valore passato è un valore binario (anzichè esadecimale 0x00), questo è indicato dalla b prima del valore stesso, in questo caso è semplicemente zero, e questo valore è poi trasferito ai due registri TRIS (TRIState) A e B. Questo setta la direzione dei pin, un valore 0 setta un pin come Uscita, mentre un 1 lo setta come Ingresso pertanto il valore b' ' (otto zero) setta tutti i pin come Uscita, b' ' setterà il pin 7 come un ingresso, e tutti gli altri come uscite utilizzando un balore binario risulta semplice vedere quale quali pin soni ingressi (1) e quali uscite (0). Questo completa il set up del chip, adesso discutiamo la vera parte del programma che produrrà delle azioni, si inizia con l etichetta Loop, l ultimo comando goto Loop' fa si che il programma ritorni al punto relativo all etichetta, e esegue un loop infinito. La prima istruzione di questa sezione è movlw 0xff questa muove il numero esadecimale 0xff (255 decimale, binario) nel registro W, la seconda e la terza in seguito trasferiscono questo valore alla PortA e alla PortB di I/O questo prova a settare tutti i 16 pin (approfondiremo in seguito!).

3 Le due istruzioni seguenti sono nop NO Operation, questa istruzione richiede 1uS per essere eseguita e non fa niente, vengono utilizzate solo per mantenere le uscite alte per un extra time di 2uS. Poi abbiamo movlw 0x00 la quale muove 0x00 (0 decimale, binario) nel registro W, poi verrà trasferito alle porte come visto prima, questo setta tutti e 16 le uscite al livello basso. L ultimo goto Loop ritorna all inizio e permette di rieseguire la sezione all infinito, continuerà switchando le porte al valore alto e basso. 1.2 Come avete potuto notare nella prima parte (implementando il codice di cui sopra), i LED's non lampeggiano!. In realtà i LED lampeggiano ma lo fanno troppo velocemente affinchè sia visibile. Il PIC esegue ciascuna istruzione a 4MHz, pertanto impiega 1uS per completare (ad eccezione del jump, che impiega 2uS), questo fa si che i LED lampeggino migliaia di volte al secondo troppo veloce per i nostri occhi!. Questo è un problema comune nella programmazione di microcontrollori che interagiscono con ambienti fisici esterni, girano troppo velocemente rispetto al mondo esterno, spesso abbiamo bisogno di rallentare l esecuzione!. Anche questo secondo esempio cambia lo stato delle porte di uscita da alto a basso e viceversa, ma questa volta utilizziamo un delay fra i due cambi di stato. ; 1.2 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;direttiva del compilatore ;start of general purpose registers count1 counta countb ;fine direttiva ;this is where the program starts running movlw 0x07 movlw b' ' movwf TRISB ;set PortB all outputs movwf TRISA ;set PortA all outputs Loop movlw 0xff movwf PORTA ;set all bits on movwf PORTB nop ;the nop's make up the time taken by the goto nop ;giving a square wave output ; ;viene richiamata la routine di nome Delay movlw 0x00 movwf PORTA movwf PORTB ;set all bits off call Delay ;ritardo

4 goto Loop ;go back and do it again ;acceso wait spento wait acceso wait spento wait... ; ; di seguito abbiamo la routine in grado di contare 250ms Delay movlw d'250' ;delay 250 ms (4 MHz clock) ;nel registro W si inserisce il valore 250 movwf count1 ; tale valore (250) viene passato al registro ;countl d1 movlw 0xC7 ;199 volte movwf counta ;assegna 199 al registro conta movlw 0x05 ;5 volte movwf countb assegna 5 al registo contb Delay_0 decfsz counta, f ;decrementa il registro conta e se zero passa ;alla riga successiva goto $+2 ;passa 2 istruzioni in avanti (ne salta una) decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00 ;ritorno dalla chiamata di subroutine ;inoltre in grado di restituire un valore ;nel registro accumulatore (non interessa) Questo non fa altro che introdurre due righe di codice in più nel main, call Delay, questa è una chiamata ad una subroutine, una parte del programma che esegue e poi ritorna dove è stata chiamata. La routine è richiamata due volte, una dopo che i LED sono diventati accesi, e nuovamente dopo il loro spegnimento. Tutta la routine Delay è tempo perso, cicla continuamente fino a quando non termina. La parte aggiunta all inizio del programma (cblock to ) alloca una coppia di variabili (count1 and count2) a due dei registri general purpose file registers, questi iniziano alla locazione 0x20 la direttiva cblock alloca la prima variabile a 0x20, e seguenti. The cblock directive allows you to define several bytes together. For example: cblock 0x70 temp x, y This bit of assembler defines 3 bytes that will be at locations 0x70 (temp), 0x71 (x), and 0x72 (y). Note that if you put multiple items on the same line, you need a comma between them. La routine Delay realizza un ritardo di 250mS, settato nella sua prima riga (movlw d'250') la d indica che si tratta di un numero decimale, per facilitarne la comprensione pertanto si accenono i LED, si aspettano 250mS, si spengono i LED, si attono altri 250mS, e poi si ripete. Questo fa si che i LED lampeggino 2 volte al secondo, adesso sarà

5 certamente visibile il lampeggiamento. Alterando il valore d'250' si può modificare il flash rate, comunque poichè al massimo disponiamo di 8 bit il valore non potrà essere più di d'255' (0xff esadecimale). Figura 1 Registri speciali Figura 2 Registri Generici Questa routine introduce un nuovo comando decfsz Decrement File and Skip on Zero, questo decrementa il file register specificato (in questo caso count2, o count1) e se il risultato è uguale a zero passa oltre la riga successiva. Pertanto questa prima sezione utilizzando il seguente, d2 decfsz count2,f goto d2 decrementa count2, controlla se è uguale a zero, e altrimenti continua verso il goto d2, il quale risalta indietro e decrementa count2 nuovamente, continua fino a quando count2 è uguale a zero, poi goto d2 viene ignorato e count1 viene decrementato nello stesso modo, questa volta tornando all inizio del loop count2, e così via. Questo è detto nested loop, il ciclo interno impiega 1mS per eseguire, e quello esterno chiama quello interno un numero di volte specificato in count1 così se carichiamo 0x01 in count1 la routine Delay impiegherà 1mS, nell esempio utilizzato noi carichiamo d'250' (hex 0xfa) in count1, così impiegherà 250mS (1/4 di secondo). L altro comando nuovo è retlw RETurn from subroutine with Literal in W, ritorna dove è stata chiamata la subroutine, e restituisce un valore opzionale nel registro W (non è però utilizzato per restituire tale valore in questo esempio, pertanto gli assegnamo 0x00).

6 Dicevamo che le routine al max possono dare un ritardo massimo di 255mS, se volessimo un tempo maggiore dovremmo introdurre un altro ciclo esterno che richiama la routine Delay in numero di volte che ci serve, se vogliamo far lampeggiare i LED una volta al secondo (anziché due) possiamo semplicemente duplicare la riga call Delay, nop ;giving a square wave output call Delay ;second delay call added movlw 0x00 questo dà un ritardo di 500mS, manteno il LED acceso per 1/2 secondo, aggiungo una seconda chiamata call Delay al off time il LED starà spento per 1/2 secondi. Non c è inoltre bisogno di questa simmetria, usando una chiamata call Delay per il on time, e tre per il off time il LED continuerà a lampeggiare una volta al secondo ma sarà acceso per 1/4 del tempo (25/75) utilizzerà solo il 50% dell energia rispetto a un 50/50. Ci sono interessanti vantaggi nell usare subroutine, una routine come quella del ritardi può essere usata in molte parti del codice ripetutamente, quindi salvandola una volta si risparmia spazio. Inoltre modifiche non richiederanno di modificare in più parti il codice ma solo la subroutine, il cambiamento si ripercuoterà a tutte le chiamate alla subroutine. 1.3 I due esempi precedenti accevano semplicemente i LED pono i pin alti o bassi, spesso vogliamo agire su un solo pin, questo è facilmente realizzabile con il comando bcf e bsf, bcf Bit Clear File pone un bit a zero, e bsf Bit Set File pone un bit a 1, il range dei bit va da 0 (LSB) a 7 (MSB). Il seguente esempio fa lampeggiare il bit 7 (RB7) della PortB, mentre gli altri bit resteranno a zero. ; 1.3 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb ;this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf TRISB movwf TRISA ;set PortA all outputs clrf PORTA clrf PORTB ;set all outputs low Loop bsf PORTB, 7 ;turn on RB7 only!

7 bcf PORTB, 7 ;turn off RB7 only!. call Delay goto Loop ;go back and do it again Delay movlw d'3' ;delay 250 ms (4 MHz clock) 250=FA movwf count1 d1 movlw 0x17 ;delay 1mS C7=199 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00 Il movwf PORTA e il movwf PORTB sono state rimpiazzate da una singola riga bsf PORTB, 7 (per accere il LED), e bcf PORTB, 7 (per spegnere il LED). Le righe associate movlw 0xff e movlw 0x00 sono state eliminate, poichè non servono più, i due nop sono stati rimossi, sono superflui non ci interessa aggiungere 2uS ad una routine che dura 250mS. 1.4 Se vogliamo utilizzare un pin diverso rispetto all RB7, basterà cambiare il 7 nelle due righe prima viste. Questo esempio (funzionalmente identico al precedente) assegna due costanti all inizio del programma, LED, e LEDPORT a questi vengono assegnati i valori 7 e PORTB, e questi nomi di costanti sono utilizzati in bsf e bcf. L uso delle costanti facilita così eventuali cambiamenti alle assegnazioni dei pin. ; 1.4 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb LED Equ 7 ;set constant LED = 7 dichiara una costante LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' ;this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf TRISB movwf TRISA ;set PortA all outputs clrf PORTA

8 clrf PORTB ;set all outputs low Loop bsf LEDPORT, LED ;turn on RB7 only! bcf LEDPORT, LED ;turn off RB7 only!. call Delay goto Loop ;go back and do it again Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 ;delay 1mS movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00 Questo lavora esattamente come la versione precedente infatti comparando i relativi file HEX questi risulteranno identici. Esercizi Alterare il numero delle chiamate della Delay in modo tale da produrre lampeggiamenti asimmetrici. Cambiare l assegnamento dei pin. Far lampeggiare più di un LED ma meno di 8 contemporaneamente - TIP: aggiungere extra comandi del tipo bsf e bcf. Aggiungere altri LED lampeggianti utilizzando diversi rate -TIP: far lampeggiare uno on/off, poi un altro on/off, aggiungo diverse chiamate a Delay. Gli esempi successivi usano più LED (LED board)

9 1.5 Usando la LED board si fa girare un LED all interno della riga. ; 1.5 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator ; type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' LEDTRIS Equ TRISB ;set constant for TRIS register : this is where the program starts running movlw 0x07 ;il valore 7 al registro del comparatore ;esclude il comparatore hw movlw b' ' ;set PortB all outputs movwf LEDTRIS clrf LEDPORT ;set all outputs low Loop movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' goto Loop ;go back and do it again

10 Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x Possiamo facilmente modificare la routine sopra in modo tale che il LED rimbalzi da una parte all altre, semplicemente aggiungo altre movlw e movwf più la riga call Delay. ; 1.6 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator ;type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' LEDTRIS Equ TRISB ;set constant for TRIS register ; ;this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf LEDTRIS clrf LEDPORT ;set all outputs low Loop movlw b' ' movlw b' ' movlw b' '

11 movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' movlw b' ' goto Loop ;go back and do it again Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00 1.7

12 Nonostante le due precedenti routine siano funzionanti, sono però rudimentali..5 usa 24 righe all interno del loop, utilizzando un altro comando del PIC si può ridurre il numero di righe di codice. ; 1.7 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' LEDTRIS Equ TRISB ;set constant for TRIS register ; this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf LEDTRIS clrf LEDPORT ;set all outputs low Start movlw b' ' ;set first LED lit Loop bcf STATUS, C ;clear carry bit rrf LEDPORT, f ;ruota il contenuto del registro LEDPORT ;un bit a destra attraverso il riporto ;il valore di f è 1 pertanto il ;risultato viene rimesso nel registro ;se fosse 0 il risultato andrebbe in W btfss STATUS, C ;check if last bit (1 rotated into Carry) ;se il bit del riporto nel registro STATUS ;è 0 allora esegue l istruzione successiva, ;altrimenti la salta e sostituisce con NOP goto Loop ;go back and do it again goto Start Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00

13 Questo esempio introduce il comando 'rrf Rotate Right File, ruota il contenuto del file register verso destra (divide il valore per 2). Poichè il comando rrf ruota passando dal carry bit occorre essere sicuri questo sia svuotato con il comando bcf STATUS, C. Per verificare il raggiungimento della fine utilizziamo la riga btfss STATUS, C per verificare quando il CARRY bit è settato, questo restart la sequenza di bit dal Possiamo applicare questo metodo anche al 1.6, in questo caso aggiungo il comando rlf Rotate Left File, questo shifta il contenuto del registro a sinistra (moltiplicando per 2). ; 1.8 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;start of general purpose registers count1 counta countb LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' LEDTRIS Equ TRISB ;set constant for TRIS register ; this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf LEDTRIS clrf LEDPORT ;set all outputs low Start movlw b' ' ;set first LED lit ; sposta a destra Loop bcf STATUS, C ;clear carry bit rrf LEDPORT, f btfss STATUS, C ;check if last bit (1 rotated into Carry) goto Loop ;go back and do it again movlw b' ' ;set last LED lit ; sposta a sinistra Loop2 bcf STATUS, C ;clear carry bit rlf LEDPORT, f ;ruota verso sinistra btfss STATUS, C ;check if last bit (1 rotated into Carry) goto Loop2 ;go back and do it again goto Start ;finished, back to first loop Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01

14 Delay_0 movwf countb decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x Fino ad ora abbiamo utilizzato due metodi per creare il LED rimbalzante, adesso creiamo un altra versione ancora, utilizzando un lookup table. ; 1.9 LIST p=16f628 ;tell assembler what chip we are using ;sets the configuration settings (oscillator type etc.) cblock 0x20 ;start of general purpose registers count ;used in table read routine count1 counta countb LEDPORT Equ PORTB ;set constant LEDPORT = 'PORTB' LEDTRIS Equ TRISB ;set constant for TRIS register ; this is where the program starts running movlw 0x07 movlw b' ' ;set PortB all outputs movwf LEDTRIS clrf LEDPORT ;set all outputs low Start clrf count ;set counter register count to zero Read movf count, w ;put counter value in W call Table ;chiama la sub Table ;sposta il contenuto di W alla porta B call Delay ;chiama la sub delay incf count, w ;incrementa di 1 il valore del registro count ;e copia il valore in W xorlw d'14' ;check for last (14th) entry ;verifica se W contiene il valore 14 ;se uguali setta il flag Z btfsc STATUS, Z ;se Z è settato andiamo alla riga successiva ;altrimenti saltiamo una riga goto Start ;if start from beginning incf count, f ;else do next incrementa il valore count goto Read

15 Table ADDWF PCL, f ;data table for bit pattern ;aggiunge al program counter il valore ;contenuto in W ;in base al contenuto di W si salta infatti sommando al PC il valore di W ;il PC si sposta a PC+W retlw b' ' ;inserisce il valore in W retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' Delay movlw d'250' ;delay 250 ms (4 MHz clock) movwf count1 d1 movlw 0xC7 movwf counta movlw 0x01 movwf countb Delay_0 decfsz counta, f goto $+2 decfsz countb, f goto Delay_0 decfsz count1,f goto d1 retlw 0x00 Introduce un altro nuovo comando, il 'addwf ADD W to File, è un comando di somma, infatti esso il PIC con architettura RISC ha solo 35 comandi, pertanto alcuni comandi apparentemente semplici come la lettura dei dati di una tabella non sono presenti. Nel 1.2 abbiamo usato il comando retlw, senza usarne il valore restituito, adesso per creare la data table facciamo uso del valore restituito. Alla etichetta Start prima poniamo a zero un contatore che sarà poi utilizzato, il clrf Count, questo verrà poi spostato nel registro W mediante movf Count, w, e la subroutine Table verrà chiamata. La prima riga della subroutine è addwf PCL, f, la quale somma il contenuto di W (che è stato appena settato a zero) con il registro PCL, il PCL è il Program Counter, conta esattamente dove si trova l esecuzione del programma, perciò aggiungovi zero ci si sposta alla riga successiva retlw b ' che restituisce b' ' nel registro W, Questo è poi spostato ai LED. l conteggio viene poi incrementato e il programma cicla richiamando nuovamente la Table, questa volta W contiene il valore 1, poi sommato a PCL il quale fa un salto di una riga e

16 restituisce la seguente riga della Table si continua per il resto della table. Non è però una buona cosa superare la lunghezza della tabella, causando un salto del PCL ad una riga dopo alla tabella, la quale in questo caso è la Delay. Per evitarlo si controlla il valore di count, usando xorlw d14 exclusive Or Literal with W, il quale implementa un exclusive or con il registro W (dove si trova il valore di count) e il valore 14, e setta il flag Z Zero se sono uguali, poi controlliamo il flag Z, e se è settato facciamo un salto indietro all inizio e resettiamo count a zero e così via. Il vantaggio di questo sistema è la possibilità di avere qualsiasi pattern nella tabella e la facilità di modifica della stessa.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MPLAB - IDE. Introduzione. 1. Benvenuti in MPLAB. Introduzione

MPLAB - IDE. Introduzione. 1. Benvenuti in MPLAB. Introduzione MPLAB - IDE Introduzione 1. Benvenuto in MPLAB 2. Creare un progetto 3. Creare un nuovo file assembler 4. Scrivere un programma 5. Toolbar icons 6. Simulatore MPSIM Introduzione MPLAB è un programma che

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

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

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

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

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 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

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

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

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

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

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

DISPLAY LCD HD44780U(LCD-II)

DISPLAY LCD HD44780U(LCD-II) DISPLAY LCD HD44780U(LCD-II) 1. Descrizione 1.1 Introduzione Molti dispositivi a microcontrollore usano un visualizzatore (display) LCD per mostrare delle informazioni, uno dei tipi più usati può mostrare

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

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

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

Esercizio 1. Progettare la PO a partire dal microprogramma eseguibile e successivamente:

Esercizio 1. Progettare la PO a partire dal microprogramma eseguibile e successivamente: Architettura degli Elaboratori Prima prova di verifica intermedia - A.A. 2014-2015 Riportare Nome, Cognome, Numero di matricola e Corso di appartenenza su tutti i fogli consegnati. I risultati saranno

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

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

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

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

Programmazione ROBIPIC in linguaggio C

Programmazione ROBIPIC in linguaggio C Programmazione ROBIPIC in linguaggio C Area di Progetto 2008/2009 Classe 4AT Allievi: Mazzucco Luca, Zambon Mattia, Martini Matteo, Della Libera Riccardo Video del robot presente anche su youtube: http://www.youtube.com/watch?v=dphibvlth2s

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

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

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

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

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

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

Downloading and Installing Software Socio TIS

Downloading and Installing Software Socio TIS Object: Downloading and Installing Software Socio TIS compiler: L.D. Date Revision Note April 17 th 2013 --- For SO XP; Win 7 / Vista step Operation: Image A1 Open RUN by clicking the Start button, and

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

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

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 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo

Dettagli

Istruzioni assembler Istruzione N Registri

Istruzioni assembler Istruzione N Registri Istruzioni assembler Istruzione N Registri Aritmetica add a, b, c a = b+c addi a, b, num a = b + sub a, b, c a = b - c mul a, b, c a = b*c div a, b, c a = b/c utilizzati Descrizione 3 Somma. Somma b e

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

Lezione 13: Il linguaggio assembly di LC-3

Lezione 13: Il linguaggio assembly di LC-3 Lezione 13: Il linguaggio assembly di LC-3 Laboratorio di Elementi di Architettura e Sistemi Operativi 30 Maggio 2012 Abbiamo visto... L ISA di LC-3; Ogni istruzione è identificata da un insieme di 1 e

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

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Laboratorio di metodi di acquisizione dati. Giorgio Maggi

Laboratorio di metodi di acquisizione dati. Giorgio Maggi Laboratorio di metodi di acquisizione dati Giorgio Maggi Sommario La conversione Digitale analogica I vari tipi di ADC L SNR e ENOB Il Time to Digital converter L Input-Output Register Il sistema di acquisizione

Dettagli

1/ 7 STN - DW IT. Titolo : Titolo : Cicli Di Rodaggio E Collaudo Funzionale ( Autotest ) Per Lavastoviglie EVO 3

1/ 7 STN - DW IT. Titolo : Titolo : Cicli Di Rodaggio E Collaudo Funzionale ( Autotest ) Per Lavastoviglie EVO 3 STN - DW - 0311.1 - IT Indesit Company, Service Department Titolo : Prodotti interessati Tutte le lavastoviglie della serie Evo 3 Difettosità riscontrabile Per qualsiasi difetto Causa del difetto Da scoprire

Dettagli

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso di programmazione Arduino DI MALVEZZI DAVIDE Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell

Dettagli

LE TABELLE DI LOOKUP azioniamo un motore

LE TABELLE DI LOOKUP azioniamo un motore LE TABELLE DI LOOKUP azioniamo un motore Nella schedina sperimentale che abbiamo costruito c'è una morsettiera a sette poli facente capo all'integrato ULN2004. Questo altro non è che un driver contenente

Dettagli

2. Algoritmi e Programmi

2. Algoritmi e Programmi 12 2. Algoritmi e Programmi Dato un problema, per arrivare ad un programma che lo risolva dobbiamo: individuare di cosa dispongo: gli input; definire cosa voglio ottenere: gli output; trovare un metodo

Dettagli

Linguaggio Assembly e linguaggio macchina

Linguaggio Assembly e linguaggio macchina Architettura degli Elaboratori e delle Reti Lezione 11 Linguaggio Assembly e linguaggio macchina Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano

Dettagli

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE

Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio caso un L293NE Controllo di velocità e verso di un motore DC con Arduino con L293NE Per controllare un motore DC (funzionante in corrente continua) con Arduino, devi utilizzare il circuito integrato Ponte H (nel mio

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Programmazione Assembly per 8088: Esercizi svolti

Programmazione Assembly per 8088: Esercizi svolti Programmazione Assembly per 8088: Esercizi svolti Marco Di Felice 13 dicembre 2006 1 Esercizio 1 (esercizio 1 del Tanenbaum, Appendice C) TESTO. Dopo l esecuzione dell istruzione MOV AX, 702 qual è il

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

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Lezione 7 Sommatori e Moltiplicatori

Lezione 7 Sommatori e Moltiplicatori Architettura degli Elaboratori e delle Reti Lezione 7 Sommatori e Moltiplicatori Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 /36 Sommario

Dettagli

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010

R. Cusani, F. Cuomo: Telecomunicazioni - DataLinkLayer: Gestione degli errori, Aprile 2010 1 11. Data link layer: codici di rilevazione di errore, gestione degli errori La rilevazione di errore Un codice a rilevazione di errore ha lo scopo di permettere al ricevente di determinare se vi sono

Dettagli

Rappresentazione dell informazione

Rappresentazione dell informazione Rappresentazione dell informazione Problema che coinvolge aspetti filosofici Interessa soprattutto distinguere informazioni diverse Con un solo simbolo è impossibile Pertanto l insieme minimo è costituito

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

Lezione 7 ALU: Moltiplicazione e divisione

Lezione 7 ALU: Moltiplicazione e divisione Architettura degli Elaboratori e delle Reti Lezione 7 ALU: Moltiplicazione e divisione F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 7 1/34 Sommario! Sommatori

Dettagli

FUNZIONI BOOLEANE. Vero Falso

FUNZIONI BOOLEANE. Vero Falso FUNZIONI BOOLEANE Le funzioni booleane prendono il nome da Boole, un matematico che introdusse un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono

Dettagli

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE

DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE DISPOSITIVO PER LA LETTURA DI UN ENCODER INCREMENTALE Si propone l'uso di un microcontrollore pic16f84 della Microchip. Si acquisiscono i segnali di un encoder con due canali in quadratura con la possibilità

Dettagli

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO Strumenti utilizzati Strumento Marca e modello Caratteristiche Alimentatore Scheda ALTERA Fotocamera digitale Topward electronics TPS- 4000 ALTERA Max

Dettagli

Arduino. Laboratorio Arduino Base. HackLab Terni. Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni.

Arduino. Laboratorio Arduino Base. HackLab Terni. Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni. Laboratorio Base HackLab Terni Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni.org Cos'è? è una piattaforma di prototipazione elettronica open-source basata su microcontrollore

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

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

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici RETI SEQUENZIALI : ESERCIZI Massimiliano Giacomin 1 Implementazione di contatori Un contatore è un dispositivo sequenziale che aggiorna periodicamente il suo stato secondo una regola

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

Programmazione strutturata

Programmazione strutturata Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 3. (testo di riferimento: Bellini-Guidi) Ing. Michele Ruta 1di 29 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Laboratorio del 21/10/2010- Numeri binari e conversione

Laboratorio del 21/10/2010- Numeri binari e conversione Laboratorio del 21/10/2010- Numeri binari e conversione 1. Conversione binario decimale a. 1101 2? 10 1 1 2 Base 2 La posizione della cifra all interno del numero indica il peso della cifra stessa, cioè

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

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

Dettagli

Informatica! Appunti dal laboratorio 1!

Informatica! Appunti dal laboratorio 1! Informatica! Appunti dal laboratorio 1! Sistema Operativo! Windows 7, Windows 8, Mac OS X, Linux, Debian, Red Hat, etc etc! Il sistema operativo è un programma che serve a gestire TUTTE le risorse presenti

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL

MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL MINIMANUALE VBA PER CREARE MACRO NEI FOGLI EXCEL ISTRUZIONI PIU COMUNI: Le istruzioni per scrivere del testo dentro una cella sono principalmente due: cells e range L istruzione cells permette di scrivere

Dettagli

Architetture dei Calcolatori

Architetture dei Calcolatori Architetture dei Calcolatori Lezione 11 -- 10/12/2011 Procedure Emiliano Casalicchio emiliano.casalicchio@uniroma2.it Fattoriale: risparmiamo sull uso dei registri q Rispetto alla soluzione precedente

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3). Corso di BASCOM 8051 - (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM 8051. Autore: DAMINO Salvatore. D I S P L A Y L C D (3). GESTIONE DI UNA SEMPLICE CALCOLATRICE. Questo programma

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori circuiti combinatori: ALU slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello 1 ALU ALU (Arithmetic Logic Unit) circuito combinatorio all interno del processore per l esecuzione di istruzioni

Dettagli

Elementi base per la realizzazione dell unità di calcolo

Elementi base per la realizzazione dell unità di calcolo Elementi base per la realizzazione dell unità di calcolo Memoria istruzioni elemento di stato dove le istruzioni vengono memorizzate e recuperate tramite un indirizzo. ind. istruzione Memoria istruzioni

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

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

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole.

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S. 2007 2008. Microcontrollori Microchip PIC 8 bit. namoroso@mrscuole. Corso introduttivo sui microcontrollori A. S. 2007 2008 Microcontrollori Microchip PIC 8 bit Nicola Amoroso namoroso@mrscuole.net NA L2 1 Microcontrollori Microchip PIC 8 bit PIC: Peripheral Interface

Dettagli

Esercitazione del 09/03/ Soluzioni

Esercitazione del 09/03/ Soluzioni Esercitazione del 09/03/2006 - Soluzioni. Conversione binario decimale ( Rappresentazione dell Informazione Conversione in e da un numero binario, slide 0) a. 0 2? 0 2 Base 2 Si cominciano a contare le

Dettagli

Sistemi Elettronici #6. Subroutine

Sistemi Elettronici #6. Subroutine Subroutine Una subroutine è un insieme di istruzioni che si adoperano più volte insieme e nella stessa sequenza. Se usiamo l espressione RJMP per chiamare una subroutine all uscita di essa non ho un ritorno

Dettagli

PRIMI PASSI CON ARDUINO

PRIMI PASSI CON ARDUINO PRIMI PASSI CON ARDUINO 1) Accensione e spegnimento del led presente sulla scheda Arduino. La scheda Arduino presenta, a bordo, alcuni led uno dei quali può essere controllato dal pin digitale 13; quando

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio Appunti di informatica Lezione 3 anno accademico 2015-2016 Mario Verdicchio Numeri binari in memoria In un calcolatore, i numeri binari sono tipicamente memorizzati in sequenze di caselle (note anche come

Dettagli