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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 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 di processore include "P16F84.INC" Definizioni di registri interni Risultato equ 0x10 Determina la posizione del risultato Vettore di Reset Salva il vettore di interrupt Inizio movlw 0x05 Carica il 1 addo in W addlw 0x07 Somma il 2º addo movwf Risultato Memorizza il risultato Stop nop Metti breakpoint di arresto nop Fine del programma principale

2 ESEMPIO 1.2 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Tre valori A,B e C supponiamo siano stati precedentemente memorizzati. Si desidera risolvere la seguente equazione: (A+B)-C List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Dato_A equ 0x10 Determina la posizione del dato A Dato_B equ 0x11 Determina la posizione del dato B Dato_C equ 0x12 Determina la posizione del dato C Risultato equ 0x13 Determina la posizione del risultato Vettore di Reset Salva il vettore di interrupt Inizio movf Dato_A,W Carica il 1 addo addwf Dato_B,W Somma il 2º addo movwf Risultato Memorizza risultato parziale movf Dato_C,W Carica il sottrao subwf Risultato,F Sottrai dal minuo e memorizza Stop nop Metti breakpoint di arresto nop Fine del programa principale

3 ESEMPIO 1.3 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Sommare due numeri, A e B, di 16 bits ciascuno. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Dato_A_L equ 0x10 Dato_A_H equ 0x11 Dato_B_L equ 0x12 Dato_B_H equ 0x13 Risultato_L equ 0x14 Risultato_H equ 0x15 Determina la posizione del dato A (basso) Determina la posizione del dato A (alto) Determina la posizione del dato B (basso) Determina la posizione del dato B (alto) Determina la posizione del risultato (basso) Determina la posizione del risultato (alto) Vettore di Reset Salva il vettore di interrupt Inizio movf Dato_A_L,W Carica meno peso del dato A addwf Dato_B_L,W Somma meno peso del dato B movwf Risultato_L Memorizza il risultato movf Dato_A_H,W Carica più peso del dato A btfsc STATUS,C C'è stato trasporto anteriore?? addlw 1 Si, aggiungi 1 all'accumulatore addwf Dato_B_H,W Somma più peso del dato B movwf Risultato_H Conserva il risultato Stop nop Metti breakpoint di arresto nop Fine del programma principale

4 ESEMPIO 1.4 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Sottrarre due numeri, A - B, di 16 bits ciascuno. Anche se questo esercizio è simile al precedente, è da notare che, il contenuto dell' accumulatore agisce come sottrao e, l'operando, come minuo. Ugualmente è da notare che il flag CARRY va interpretato in modo opposto a come va fatto con la somma (a "0" c'è trasporto). List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Dato_A_L equ 0x10 Dato_A_H equ 0x11 Dato_B_L equ 0x12 Dato_B_H equ 0x13 Risultato_L equ 0x14 Risultato_H equ 0x15 Determina la posizione del dato A (basso) Determina la posizione del dato A (alto) Determina la posizione del dato B (basso) Determina la posizione del dato B (alto) Determina la posizione del risultato (basso) Determina la posizione del risultato (alto) Vettore di Reset Salva il vettore di interrupt Inizio movf Dato_B_L,W Carica meno peso del dato B (sottrao) subwf Dato_A_L,W Sottrai meno peso del dato A (minuo) movwf Risultato_L Memorizza il risultato movf Dato_B_H,W Carica più peso del dato B (sottrao) btfss STATUS,C C'è stato trasporto(carry = 0) anteriore?? addlw 1 Sì, aggiungi 1 all'accumulatore (sottrao) subwf Dato_A_H,W Sottrai più peso del dato A (minuo) movwf Risultato_H Conserva il risultato Stop nop Metti breakpoint d'arresto nop Fine del programma principale

5 ESEMPIO 1.5 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Memorizzare il modello 33 in 15 posizioni contigue della memoria di dati, iniziando dall'indirizzo 0x10 List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Contatore equ 0x0c Contatore interno Prima equ 0x10 Posizione iniziale Vettore di Reset Salva il vettore di interrupt Inizio movlw.15 movwf Contatore Carica il contatore con 15 (in decimale) movlw Prima movwf FSR Orienta il puntatore con indirizzo iniziale movlw 0x33 Carica modello da memorizzare Loop movwf INDF Memorizza modello in pos. indicata da FSR incf FSR,F Aumenta il puntatore FSR decfsz Contatore,F Diminuisci contatore fino ad arrivare a 0 goto Loop Contatore non è 0 Stop nop Metti breakpoint d'arresto nop Fine del programma principale

6 ESEMPIO 1.6 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Il programma paragona due numeri A e B. Se A=B, il risultato è 0. Se A > B, il risultato è A-B. Se A < B il resultato è A+B Si noti che, non avo istruzioni di paragone, questo è realizzato mediante sottrazioni. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Dato_A equ 0x10 Variabile del dato A Dato_B equ 0x11 Variabile del dato B Risultato equ 0x12 Variabile per il risultato Vettore di Reset Salva il vettore di interrupt Inizio movf Dato_B,W Carica il dato B subwf Dato_A,W Sottrai/paragona a dato A btfsc STATUS,Z Sono uguali (Z=1)?? goto A_uguale_B Sì btfsc STATUS,C No. A maggiore di B (C=0)?? goto A_mayor_B Sì A_minor_B movf Dato_A,W No, A è minore di B addwf Dato_B,W Somma A più B movwf Risultato Conserva il risultato goto Stop A_mayor_B movwf Risultato goto Stop A_uguale_B clrf Risultato Azzera il risultato Stop nop Metti breakpoint d'arresto nop Fine del programma principale

7 ESEMPIO 1.7 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Il programma realizza una temporizzazione di 0.5 secondi. Si presume una frequenza di lavoro del PIC di 4 MHz, per cui il TMR0 cambia ogni 1 us (4Tosc=1uS ). Il TMR0 viene caricato con (il suo complemento, 7) e si seleziona un prescaler di 8. La temporizzazione così ottenuta è di 1990 us. Se questa si ripete 250 volte, si ottiene una temporizzazione totale intorno ai uS List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Contatore equ 0x10 Variabile per il contatore Vettore di Reset Salva il vettore di interrupt Inizio bsf STATUS,RP0 Seleziona banco dati 1 movlw b' ' movwf OPTION_REG Configura prescaler di 8 assegnato al TMR0 bcf STATUS,RP0 Seleziona banco dati 0 movlw.250 movwf Contatore Attiva la variabile contatore Loop1 clrf INTCON Disconnetti flag del TMR0 e interrupt movlw.7 movwf TMR0 Carica il TMR0 con complemento di 250 Loop2 btfss INTCON,T0IF Fine del TMR0 (flag T0IF=1)?? goto Loop2 No, aspettare decfsz Contatore,F Sì. Ripetere tante volte quante ne indica il contatore goto Loop1 Stop nop Metti breakpoint di arresto nop Fine del programma principale

8 ESEMPIO 1.8 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Questo esempio realizza il prodotto di due numeri di 8 bits generando un risultato di 16 bits. Il programma impiega lo stesso meccanismo di realizzazione di un prodotto su carta. Si noti che il programma viene eseguito sempre nello stesso intervallo di tempo, qualunque siano gli operandi. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni cblock 0x10 Inizio di definizione di variabili Moltiplicando Moltiplicatore Risultato_H Risultato_L Estatus_Temp Contatore c Variabile per il moltiplicando Variabile per il moltiplicatore Parte alta del risultato Parte bassa del risultato Reg. di stato temporale Variabile con numero di volte per eseguire operazioni Fine delle definizioni Vettore di Reset Salva il vettore di interrupt Inizio Loop clrf Risultato_H clrf Risultato_L Metti a 0000 il risultato iniziale movlw 0x08 movwf Contatore Avvia il contatore con 8 bcf STATUS,C Cancella il carry movf Moltiplicando,W Carica il moltiplicando btfsc Moltiplicatore,0 E' 1 il bit di minor peso del moltiplicatore?? addwf Risultato_H,F Sì, si somma il moltiplicando rrf Risultato_H,F rrf Risultato_L,F Spostamento a destra del risultato Ruota a destra il moltiplicatore senza che si modifichi il flag Carry Ruota_sen_Carry movf STATUS,W movwf Estatus_Temp Salva provvisoriamente il carry rrf Moltiplicatore,F Sposta a destra il moltiplicatore movf Estatus_Temp,W movwf STATUS Recupera il carry originale decfsz goto Loop Contatore,F Ripeti il loop 8 volte Stop nop Metti breakpoint d'arresto nop Fine del programma principale

9 ESEMPIO 1.9 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Converti il valore binario presente in posizione 0x10 in BCD. Il risultato va depositato nelle variabili Buffer_H e Buffer_L. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Binario equ 0x10 Valore binario iniziale Buffer_H equ 0x11 Parte alta del risultato Buffer_L equ 0x12 Parte bassa del risultato Temp_1 equ 0x13 Registro temporale Vettore di Reset Salva il vettore di interrupt Inizio movf Binario,W Carica il valore binario iniziale clrf Buffer_L clrf Buffer_H Attiva registri di lavoro BIN_BCD_1 addlw 0xf6 Sottrai 10 mediante somma di complemento a 2. btfss STATUS,C C'è Carry? goto BIN_BCD_3 NO. movwf Temp_1 SI.Conservare nel registro temporale. incf Buffer_L,F Aumentare byte basso, conservarlo e inviare... movf Buffer_L,W..copia al ==> W... xorlw b' '..0ah xor W. btfss STATUS,Z Buffer_L è uguale a 10?? goto BIN_BCD_2 NO. clrf Buffer_L SI. Metti Buffer_L a 0 incf Buffer_H,F Incrementare Buffer_H BIN_BCD_2 movf Temp_1,W Recuperare il dato. goto BIN_BCD_1 Continuare l'operazione. BIN_BCD_3 addlw H'0A' TEMPO + 0Ah swapf Buffer_L,F <3:0> <==> <7:4> y ==> Buffer_L iorwf Buffer_L,F W OR Buffer_L ==> Buffer_L Stop nop Metti breakpoint d'arresto nop Fine del programma principale

10 ESEMPIO 1.10 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione Converti il valore binario presente in posizione 0x10, compreso tra 0 e 9, nel suo equivalente in codice GRAY Questo esempio cerca di abituare l'utente all'utilizzo di tabelle List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Bcd equ 0x10 Valore BCD iniziale Gray equ 0x11 Valore ottenuto in codice GRAY Vettore di Reset Salva il vettore di interrupt Tabel addwf PCL,F Calcola spostamento sulla tabella retlw b' ' Codice GRAY della cifra 0 retlw b' ' Codice GRAY della cifra 1 retlw b' ' Codice GRAY della cifra 2 retlw b' ' Codice GRAY della cifra 3 retlw b' ' Codice GRAY della cifra 4 retlw b' ' Codice GRAY della cifra 5 retlw b' ' Codice GRAY della cifra 6 retlw b' ' Codice GRAY della cifra 7 retlw b' ' Codice GRAY della cifra 8 retlw b' ' Codice GRAY della cifra 9 Inizio movf Bcd,W Carica il valore BCD originale call Tabel Converti in GRAY movwf Gray Conserva il risultato Stop nop Metti breakpoint di arresto nop Fine del programma principale

11 ESEMPIO 2.11 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Il Display a 7 segmenti del MicroPIC Trainer Sul display a catodo comune connesso alla porta B, si vuole visualizzare lo stato logico "0" o "1" dell'interruttore RA0. Mediante l'interruttore RA1 si attiva o no il punto decimale. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Vettore di Reset Salva il vettore di interrupt Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata bcf STATUS,RP0 Seleziona banco 0 Loop clrwdt Aggiorna il WDT btfsc PORTA,0 Controlla RA0 goto RA0_es_1 E'livello "1" movlw b' ' movwf PORTB Visualizza la cifra 0 goto Test_RA1 RA0_es_1 movlw b' ' movwf PORTB Visualizza la cifra 1 Test_RA1 btfsc PORTA,1 Controlla RA1 goto RA1_es_1 E' a "1" bcf PORTB,7 Disconnetti punto decimale goto Loop RA1_es_1: bsf PORTB,7 Attiva punto decimale goto Loop Fine del programma principale

12 ESEMPIO 2.12 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Il Display a 7 segmenti del MicroPIC Trainer. Decodificatore hex. a 7 segmenti. Mediante i quattro interruttori RA0-RA3 si introduce un valore esadecimale di 4 bits che deve essere visualizzato sul display del MicroPIC Trainer List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Vettore di Reset Salva il vettore di interrupt ********************************************************************************** Tabella: Questa procedura converte il codice binario presente nei 4 bits di minor peso del reg. W nel suo equivalente a 7 segmenti. Il codice a 7 segmenti ritorna anche nel reg. W Tabella: addwf PCL,F Spostamento sulla tabella retlw b' ' Cifra 0 retlw b' ' Cifra 1 retlw b' ' Cifra 2 retlw b' ' Cifra 3 retlw b' ' Cifra 4 retlw b' ' Cifra 5 retlw b' ' Cifra 6 retlw b' ' Cifra 7 retlw b' ' Cifra 8 retlw b' ' Cifra 9 retlw b' ' Cifra A retlw b' ' Cifra b retlw b' ' Cifra C retlw b' ' Cifra d retlw b' ' Cifra E retlw b' ' Cifra F Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata bcf STATUS,RP0 Seleziona banco 0 Loop clrwdt Aggiornare il WDT movf PORTA,W andlw b' ' Leggi il codice di RA0-RA3 call Tabella Converti in 7 segmenti movwf PORTB Visualizza sul display goto Loop Fine del programma principale

13 ESEMPIO 2.13 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Contatore UP/DOWN binario Sugli 8 leds di uscita connessi alla porta B verrà visualizzato, in binario, il numero di impulsi applicati dall'entrata RA0. RA1 determina se il conto è ascente (a "1") o discente List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Vettore di Reset Salva il vettore di interrupt ******************************************************************************** Delay_20_ms: Questa procedura di temporizzazione ha per oggetto di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se vogliamo tempori- zzare us (20 ms) con un prescaler di 128, il TMR0 dovrà contare 156 eventi (156 * 128). Il valore 156 equivale a 9c hex. e poiché il TMR0 è ascedente bisognerà caricare il suo complemento a 1 (63 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x63 Complemento hex. di 156 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no bcf INTCON,T0IF Adesso sì, rimettere il flag return Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG Prescaler di 128 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 Loop clrwdt Aggiornare il WDT btfss PORTA,0 Aumento del segnale RA0? goto Loop No call Delay_20_ms Elimina rimbalzi Loop_2 clrwdt Aggiornare il WDT btfsc PORTA,0 Diminuzione di RA0 (impulsi)?? goto Loop_2 No call Delay_20_ms C'è stato impulso, eliminare rimbalzi btfss PORTA,1 RA1 = 1 goto Down No, conto discente Up incf PORTB,F Conto ascente

14 goto Loop Down decf PORTB,F Conto discente goto Loop Fine del programma principale

15 ESEMPIO 2.14 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Contatore UP/DOWN decimale di una cifra Sul display a 7 segmenti connessi alla porta B verrà visualizzato il numero di impulsi applicati dall'entrata RA0. RA1 determina se il conto è ascente (a "1") o discente List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Contatore equ 0x0c Variabile del contatore Vettore di Reset Salva il vettore di interrupt ********************************************************************************** Tabella: Questa procedura converte il codice BCD presente nei 4 bits di minore peso del reg. W nel suo equivalente a 7 segmenti. Il codice a 7 segmenti ritorna anche nel reg. W Tabella: addwf PCL,F Spostamento sulla tabella retlw b' ' Cifra 0 retlw b' ' Cifra 1 retlw b' ' Cifra 2 retlw b' ' Cifra 3 retlw b' ' Cifra 4 retlw b' ' Cifra 5 retlw b' ' Cifra 6 retlw b' ' Cifra 7 retlw b' ' Cifra 8 retlw b' ' Cifra 9 ********************************************************************************* Delay_20_ms: Questa procedura di temporizzazione ha per scopo di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se desideriamo tempori- zzare us (20 ms) con un prescaler di 128, il TMR0 dovrà contare 156 eventi (156 * 128). >Il valore 156 equivale a 9c hex. e poiché il TMR0 è ascente bisognerà caricare il suo complemento a 1 (63 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x63 Complemento hex. di 156 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no bcf INTCON,T0IF Adesso sì, rimettere il flag return Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata

16 movlw b' ' movwf OPTION_REG Prescaler di 128 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 clrf Contatore Mettere a 0 del contatore Loop movf Contatore,W call Tabella Converti BCD in 7 segmenti movwf PORTB Visualizza il valore del contatore Wait_0 clrwdt Aggiornare il WDT btfss PORTA,0 Aumento del segnale RA0? goto Wait_0 No call Delay_20_ms Elimina rimbalzi Wait_1 clrwdt Aggiornare il WDT btfsc PORTA,0 Diminuzione di RA0 (impulso)?? goto Wait_1 No call Delay_20_ms C'è stato impulso, eliminare rimbalzi btfss PORTA,1 RA1 = 1 goto Down No, conto discente Up Down incf Contatore,F Aumenta contatore movlw.10 subwf Contatore,W btfss STATUS,Z E' maggiore di 9?? goto Loop No clrf Contatore Sì, mettere a 0 il contatore goto Loop decf Contatore,F Diminuisci il contatore movlw 0xff subwf Contatore,W btfss STATUS,Z E' minore di 0?? goto Loop No movlw 0x09 movwf Contatore Sì, mettere a 9 il contatore goto Loop Fine del programma principale

17 ESEMPIO 2.15 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Generazione di onde quadrate di differenti frequenze variando il valore del TMR0 La linea di uscita RB0 cambierà stato a una frequenza determinata dal valore introdotto mediante i 3 interruttori RA0-RA2: RA2 RA1 RA0 Frequenza Periodo Semiperiodo KHz KHz 1000 us 500 us KHz 500 us 250 us KHz 333 us 166 us KHz 250 us 125 us KHz 200 us 100 us KHz 166 us 83 us KHz 143 us 71 us Nel trattamento di interrupt che provocherà l'overflow del TMR0, si può notare come vengono salvati il W e il registro di stato, per recuperarli posteriormente. E' ciò che si chiama "salvare il contesto" List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Valore equ 0x0c Variabile di frequenza W_Temp equ 0x0d W temporale Status_Temp equ 0x0e Registro di stato temporale org 0x04 goto Interrupt Vettore di Reset Vettore di interrupt ********************************************************************************* Tabella: questa procedura restituisce il valore da caricare nel TMR0 secondo la frequenza selez- ionata. Parto da una frequenza generale di 4 MHz, il TMR0 cambia ogni 1 us. Si seleziona un preescaler di 4. Il valore da caricare in TMR0 si ottiene divido il semiperiodo della frequenza desiderata con il prescaler. Al valore ottenuto si sottrae 2 per motivi di sincronismo interno del PIC, si converte in hex. e si comple- menta. Tabel.: addwf PCL,F Calcola spostamento della tabella retlw 0x00 0 KHz retlw 0x86 1 KHz retlw 0xc5 2 KHz retlw 0xda 3 KHz retlw 0xe4 4 KHz retlw 0xea 5 KHz retlw 0xee 6 KHz retlw 0xf1 7 KHz Interrupt movwf W_Temp swapf STATUS,W Salva il W

18 movwf Status_Temp Salva il registro di stato movf Valore,W movwf TMR0 Ricarica il TMR0 bcf INTCON,T0IF Disattiva il flag TMR0 movlw b' ' xorwf PORTB,F Fai oscillare RB0 swapf Status_Temp,W movwf STATUS Recupera il registro di stato swapf W_Temp,F swapf W_Temp,W Recupera il registro W retfie Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG Prescaler di 4 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 movlw b' ' movwf INTCON Interrupt TMR0 abilitato Loop clrwdt Aggiornare il WDT movf PORTA,W andlw b' ' btfss STATUS,Z RA0-RA2 = 0?? goto Uscita_On No, uscita di frequenza bcf INTCON,GIE Sì, interrupt OFF, frequenza OFF goto Loop Uscita_On call Tabella Determina valore da caricare in TMR0 movwf Valor Carica la variabile bsf INTCON,GIE Interrupt ON goto Loop Fine del programma principale

19 ESEMPIO 2.16 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Generazione di numeri aleatori Ogni volta che si applica un impulso attraverso RA0, si genera un numero binario aleatorio di 8 bits che verrà visualizzato sugli 8 leds connessi nella porta B, per 3 secondi. Tra le differenti tecniche, quella utilizzata per ottenere il numero, consiste nel catturare il valore del TMR0 in un determinato momento. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Numero equ 0x0c Numero aleatorio Delay_Cont equ 0x0d Contatore di intervalli Vettore di Reset Salva vettore di interrupt ********************************************************************************* Delay_20_ms: Questa procedura di temporizzazione ha per scopo di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se vogliamo tempori- zzare us (20 ms) con un prescaler di 256, il TMR0 dovrà contare 78 eventi (78 * 256). Il valore 78 equivale a 0x4e hex. e poiché il TMR0 è ascente bisognerà caricare il suo complemento a 1 (0xb1 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0xb1 Complemento hex. de 78 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no return ********************************************************************************* Delay_var: Questa procedura a scopo generico realizza una temporizzazione variabile tra 50 ms e 12.8". Si impiega un prescaler di 256 e il TMR0 viene caricato con 195. La velocità di lavoro è di 4Mhz e quindi il TMR0 incrementa ogni us. In questo modo, il TMR0 deve contare 195 eventi che, con un preescaler di 128 fa un intervallo totale di us/50 ms (195 * 256). Il valore 195 va espresso in Hex. (c3) e poiché il TMR0 è ascente bisognerà caricare il suo complemento (3C hex.) Tale intervallo di 50 ms si ripete tante volte quante ne indica la variabile "Delay_cont", è per questo che il delay minimo è di 50 ms ("Delay_cont=1) e il massimo di 12.8" (Delay_cont=255). Delay_var: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x3c Complemento hex. de 195 movwf TMR0 carica il TMR0 Intervallo clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0??

20 goto Intervallo Ancora no decfsz Delay_Cont,F Diminusci contatore di intervalli goto Delay_var Ripeti l'intervallo di 50 ms return Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG Prescaler di 256 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 Loop clrwdt Aggiornare il WDT btfss PORTA,0 Attivato RA0?? goto Loop Ancora No movf TMR0,W Adesso sì. movwf Numero Cattura il valore del TMR0 (Nº aleatorio) call Delay_20_ms Elimina rimbalzi RA0_1 clrwdt Aggiorna il WDT btfsc PORTA,0 Disattivato RA0?? goto RA0_1 Ancora no movf Numero,W E' stato prodotto un impulso in RA0, si legge movwf PORTB il valore catturato del TMR0 (Nº aleatorio) e si toglie con i leds della PORTA B movlw d'60' movwf Delay_Cont Introduci variabile di temporizzazione call Delay_var Temporizza 3 secondi clrf PORTB Disconetti le uscite goto Loop Fine del programma principale

21 ESEMPIO 2.17 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Generazione di numeri aleatori. Il dado elettronico Si tratta di generare un numero aleatorio tra 1 e 6. Quando RA0 è a "1", sul display a 7 segmenti connesso alla porta B, si visualizzano in forma sequeziale i numeri dall'1 al 6, con intervalli di 0.05". Quando RA0 passa a livello "0", si visualizza il numero aleatorio ottenuto in un tempo di 3". Poi il display si spegne e la sequenza si ripete. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Numero equ 0x0c Numero aleatorio Delay_Cont equ 0x0d Contatore di intervalli Temporale equ 0x0e Variabile temporale Vettore di Reset Salva vettore di interrupt ********************************************************************************** Tabella: Questa procedura converte il codice binario presente nei 4 bits di minor peso del reg. W nel suo equivalente a 7 segmenti. Il codice a 7 segmenti ritorna anche nel reg. W Tabella: addwf PCL,F Spostamento sulla tabella retlw b' ' Cifra 0 retlw b' ' Cifra 1 retlw b' ' Cifra 2 retlw b' ' Cifra 3 retlw b' ' Cifra 4 retlw b' ' Cifra 5 retlw b' ' Cifra 6 ********************************************************************************* Delay_20_ms: Questa procedura di temporizzazione ha per scopo di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se vogliamo tempori- zzare us (20 ms) con un prescaler di 256, i TMR0 dovrà contare 78 eventi (78 * 256). Il valore 78 equivale a 0x4e hex. e poiché il TMR0 è ascente bisognerà caricare il suo complemento a 1 (0xb1 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0xb1 Complemento hex. de 78 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no return ********************************************************************************* Delay_var: Questa pocedura a scopo generale realizza una temporizzazione variabile tra 50 ms e 12.8". Si impiega un prescaler di 256 e il TMR0 viene caricato con 195. La velocità di lavoro è di 4Mhz e quindi il TMR0 aumenta ogni us. In

22 questo modo, il TMR0 deve contare 195 eventi che, con un preescaler di 128 fa un intervallo totale di us/50 ms (195 * 256). Il valore 195 deve essere espresso in Hex. (c3) e poichè il TMR0 è ascente bisognerà caricare il suo complemento (3C hex.) Tale intervallo di 50 ms si ripete tante volte quante ne indica la variabile "Delay_cont", è per questo che il delay minimo è di 50 ms ("Delay_cont=1) e il massimo di 12.8" (Delay_cont=255). Delay_var: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x3c Complemento hex. de 195 movwf TMR0 carica il TMR0 Intervallo clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Intervallo Ancora no decfsz Delay_Cont,F Diminuisci contatore di intervalli goto Delay_var Ripeti l'intervallo di 50 ms return Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG Prescaler di 256 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 Loop clrwdt Aggiornare il WDT btfss PORTA,0 Attivato RA0?? goto Loop Ancora No movf TMR0,W Adesso sì. movwf Numero Cattura il valore del TMR0 (Nº aleatorio) call Delay_20_ms Elimina rimbalzi Il numero aleatorio viene, mediante sottrazioni consecutive, diviso in 6. In questo modo l'ultimo resto sarà tra 0 e 5 che verrà incrementato di una unità affinché si abbia defini- tivamente un numero tra 1 e 6 Dividi: movlw d'6' subwf Numero,W Sottrai 6 al numero aleatorio movwf Numero conservalo sublw d'5' btfss STATUS,C Guarda se è minore de 5 goto Dividi No incf Numero,F Il numero è tra 1 e 6 Questa procedura di istruzioni ha per scopo di mostrare sul display i numeri dall'1 al 6 a intervalli di 0.05" per dare una sensazione di movimento del dado. Tale movimento viene mantenuto mentre RA0 é a "1". Andando a "0" si presenta il numero aleatorio precedentemente catturato dal TMR0 Dado: movlw d'6' movwf Temporale Avvia il contatore del dado RA0_1 clrwdt Aggiornamento del WDT btfss PORTA,0 Guarda se RA0 è a 1 goto Uscita No, visualizza l'aleatorio movf Temporale,W Numero da visualizzare call Tabella Conversione in BCD movwf PORTB Visualizza sul display movlw d'1'

23 movwf Delay_Cont Variabile di temporizzazione call Delay_var temporizza 0.05" decfsz Temporale,F Numero seguente goto RA0_1 goto Dado call Delay_20_ms Elimina rimbalzi Uscita: movf Numero,W Ripri l'aleatorio call Tabella Lo converte in 7 segmenti movwf PORTB Uscita sul Display movlw d'60' movwf Delay_Cont avvia variabile di temporizzazione call Delay_var Temporizza 3" clrf PORTB Disconnetti l'uscita goto Loop Fine del programma principale

24 ESEMPIO 2.18 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer Il TMR0 come contatore di eventi esterni Un sensore optoelettronico connesso a RA4 genera un impulso ogni volta che un oggetto si iterpone tra l'emissore e il recettore di luce. Il TMR0 si incarica di contarli a seconda del valore del prescaler. Tale valore si aggiusta mediante 3 interruttori (RA0-RA2) connessi alla Porta A, essoci così 8 pre-divisioni: I2 I1 I0 Divisione : : : : : : : :256 Il conteggio è visualizzato in binario sui leds collegato alla Porta B e deve essere moltiplicato per il valore del prescaler selezionato, per determinare il numero totale di impulsi. Il contatore si riassetta metto RA3 a "1". Va tenuto conto del "effetto rimbalzo" che si produce nell'interruttore RA4 del MicroPIC Trainer. List p=16f84 Tipo di processore include "P16F84.INC" Definizioni de registri interni Vettore di Reset Salva vettore di interrupt Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG TMR0 contatore sensibile al discente di RA4 bcf STATUS,RP0 Seleziona banco 0 Loop clrf TMR0 Mettere a 0 il contatore Loop1: clrwdt Aggiorna il WDT btfsc PORTA,3 Controlla se I3 è attivo (RESET) goto Loop Sì Conto arrestato e settaggio a 0 movf PORTA,W No, leggere I2-I0 per formare il nuovo valore andlw b' ' del prescaler bsf STATUS,RP0 Seleziona pagina 1 iorwf OPTION_REG,F Aggiorna il nuovo valore del prescaler bcf STATUS,RP0 Seleziona pagina 0 movf TMR0,W Leggi il valore del contatore movwf PORTB Uscita ai leds goto Loop1 Fine del programma principale

25

26 ESEMPIO 2.19 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer La memoria EEPROM di dati.la macchina "SUO TURNO" Si tratta di simulare il funzionamento delle macchine tipo "SUO TURNO" comuni in molteplici attività. Sul display verrà visualizzato il numero del turno attuale. Questo aumenta a ogni impulso applicato da RA0. Nella memoria EEPROM del PIC16F84 si immagazzina l'ultimo numero visualizzato, in modo che, davanti a una mancanza di alimentazione (p.e.), si ripra il conto dall' ultimo numero. Se si inizia utilizzando il sistema per la prima volta, si visualizza lo 0 List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Contatore equ 0x0c Variabile per il contatore Vettore di Reset Salva vettore di interrupt **************************************************************************************** EE_Write: Registra un byte nella EEPROM di dati. L'indirizzo sarà quello contenuto in EEADR e il dato si suppone sia stato precedentemente messo in EEDATA EE_Write bsf STATUS,RP0 Seleziona banco 1 bsf EECON1,WREN Permesso di scrittura movlw b' ' movwf EECON2 movlw b' ' movwf EECON2 Sequenza stabilita da Microchip bsf EECON1,WR Ordine di scrittura bcf EECON1,WREN Disconnetti permesso di scrittura Wait btfss EECON1,EEIF Controllare flag di fine di scrittura goto Wait bcf EECON1,EEIF Rimettere flag di fine di scrittura bcf STATUS,RP0 Selezione banco 0 return ************************************************************************************** EE_Read: Leggere un byte dalla EEPROM. Il registro EEADR deve essere caricato con l'indiriz- zo da leggere. In EEDATA apparirà il dato letto. EE_Read bsf STATUS,RP0 Selezione di banco 1 bsf EECON1,RD Ordine di lettura bcf STATUS,RP0 Selezione di banco 0 return ********************************************************************************** Tabella: Questa procedura converte il codice BCD presente nei 4 bits di minor peso del reg. W nel suo equivalente a 7 segmenti. Il codice a 7 segmenti ritorna anche nel reg. W

27 Tabella: addwf PCL,F Spostamento sulla tabella retlw b' ' Cifra 0 retlw b' ' Cifra 1 retlw b' ' Cifra 2 retlw b' ' Cifra 3 retlw b' ' Cifra 4 retlw b' ' Cifra 5 retlw b' ' Cifra 6 retlw b' ' Cifra 7 retlw b' ' Cifra 8 retlw b' ' Cifra 9 ********************************************************************************* Delay_20_ms: Questa procedura di temporizzazione ha per scopo di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se vogliamo tempori- zzare us (20 ms) con un prescaler di 128, il TMR0 dovrà contare 156 eventi (156 * 128). Il valore 156 equivale a 9c hex. e poiché il TMR0 è ascente bisognerà caricare il suo complemento a 1 (63 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x63 Complemento hex. de 156 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no bcf INTCON,T0IF Adesso sì, rimettere il flag return Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA Porta A si configura come entrata movlw b' ' movwf OPTION_REG Prescaler di 128 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 Ini_0 Ini_1 clrf EEADR Seleziona indirizzo 00 di EEPROM call EE_Read Leggi byte dalla EEPROM movlw 0x09 subwf EEDATA,W btfsc STATUS,C Maggiore di 9?? goto Ini_0 Sì, mettere a 0 il contatore goto Ini_1 No clrf Contatore Mettere a 0 il contatore goto Loop movf EEDATA,W movwf Contatore Avviare contatore Loop movf Contatore,W call Tabella movwf PORTB Converti contatore a 7 segmenti Visualizza sul display Wait_0 clrwdt Aggiorna il WDT btfss PORTA,0 RA0 è a "1"?? goto Wait_0 No, aspettare call Delay_20_ms Eliminare rimbalzi Wait_1 clrwdt Aggiornare il WDT

28 btfsc PORTA,0 RA0 è a "0"?? goto Wait_1 No, aspettare call Delay_20_ms Eliminare rimbalzi. C'è stata un impulso incf Contatore,F Aumenta contatore movlw.10 subwf Contatore,W btfsc STATUS,Z Contatore maggiore di 9?? clrf Contatore Sì, ritorno a 00 movf Contatore,W movwf EEDATA call EE_Write Registra il nuovo valore del contatore nella EEPROM goto Loop Fine del programma principale

29 ESEMPIO 2.20 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer L'uso dello schermo LCD Questo esempio vuole introdurci all'utilizzo dello schermo LCD, per visualizzare differenti messaggi (p.e. Ciao). Va ricordato che le linee RA0-RA2 agiscono ora come uscita di segnali di controllo verso l'lcd. Esso connesse ai propri interruttori nel MicroPIC Trainer, questi devono essere permanentemente a livello logico "1". List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Lcd_var equ 0x0c Variabili (2) delle procedure di utilizzo dell'lcd Vettore di Reset Salva vettore di interrupt include "LCD_Cxx.inc" Include le procedure di utilizzo dell'lcd Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA RA0-RA2 uscite, RA3-RA4 entrate bcf STATUS,RP0 Seleziona banco 0 call LCD_INI movlw b' ' call LCD_REG Sequenza di inizio dell'lcd Invia istruzione: LCD ON, Cursore ON e blink ON movlw 'C' call LCD_DATO Visualizza C movlw 'i' call LCD_DATO Visualizza i movlw 'a' call LCD_DATO Visualizza a movlw 'o' call LCD_DATO Visualizza o movlw ' ' call LCD_DATO Visualizza bianco Loop sleep Messa in Standby goto Loop Ritorno in standby Fine del programma principale

30 ESEMPIO 2.21 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer L'uso dello schermo LCD Questo esempio vuole introdurci all'utilizzo dello schermo LCD, per visualizzare differenti messaggi. Va ricordato che le linee RA0-RA2 agiscono ora come uscita di segnali di controllo verso l'lcd. Esso connesse ai propri interruttori nel MicroPIC Trainer, questi devono essere permanentemente a livello logico "1". List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Lcd_var equ 0x0c Variabili (2) delle procedure d'uso dell'lcd Delay_Cont equ 0x0e Variabile per la temporizzazione Temporal_1 equ 0x0f Variabile temporale Temporal_2 equ 0x10 Variabile temporale Vettore di Reset Salva vettore di interrupt include "LCD_Cxx.inc" Include le procedure d'uso dell'lcd **************************************************************************************** ** A seconda del valore contenuto nel registro W, si restituisce il carattere da visualizzare Tabella_Messaggi movwf PCL Calcola lo spostamento sulla tabella Mess_0 equ $ Mess_0 punta al primo carattere del messaggio 0 retlw 'C' retlw 'i' retlw 'a' retlw 'o' retlw 0x00 Ultimo carattere del messaggio 0 Mess_1 equ $ Mess_1 punta al primo carattere del messaggio 1 retlw 'H' retlw 'e' retlw 'l' retlw 'l' retlw 'o' retlw 0x00 Ultimo carattere del messaggio 1 ********************************************************************************* Delay_var: Questa procedura a scopo generale realizza una temporizzazione variabile tra 50 ms e 12.8". Si impiega un prescaler di 256 e il TMR0 viene caricato con 195. La velocità di lavoro è di 4Mhz e quindi il TMR0 aumenta ogni us. In questo modo, il TMR0 deve contare 195 eventi che, con un prescaler di 256 fa un intervallo totale di us/50 ms (195 * 256). Il valore 195 deve essere espresso in Hex. (c3) e poiché il TMR0 è ascente bisognerà caricare il suo complemento (3C hex.)

31 Tale intervallo di 50 ms si ripete tante volte quante ne indica la variabile "Delay_cont", è per questo che il delay minimo è di 50 ms ("Delay_cont=1) e il massimo di 12.8" (Delay_cont=255). Delay_var: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x3c Complemento hex. di 195 movwf TMR0 Carica il TMR0 Intervallo clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Intervallo Ancora no decfsz Delay_Cont,F Diminuisci contatore di intervalli goto Delay_var Ripeti l'intervallo di 50 ms return ************************************************************************************* Messaggio: Questa procedura visualizza sull'lcd il messaggio il cui inizio è indicato nell'accumulatore. La fine di un messaggio si determina mediante il codice 0x00 Messagg movwf Temporal_1 Salva posizione della tabella Messagg_1 movf Temporal_1,W Recupera posizione della tabella call Tabella_Messaggi Cerca carattere di uscita movwf Temporal_2 Mantieni il carattere movf Temporal_2,F btfss STATUS,Z Guarda se è l'ultimo goto No_è_ultimo return No_è_ultimo call LCD_DATO Visualizza sull'lcd incf Temporal_1,F Carattere succesivo goto Messagg_1 ********************************************************************************** Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come usicta movlw b' ' movwf TRISA RA0-RA2 uscite, RA3-RA4 entrate movlw b' ' movwf OPTION_REG Prescaler di 256 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 call LCD_INI movlw b' ' call LCD_REG Sequenza di inizio dell'lcd Invia istruzione: LCD ON, Cursore OFF e blink OFF Loop posizione) posizione) movlw b' ' call LCD_REG Cancella LCD e Home (collocare cursore in 1ª movlw Mess_0 call Messagg Visualizza il messaggio 0 movlw.20 movwf Delay_Cont call Delay_var Temporizza 2 secondi movlw b' ' call LCD_REG Cancella LCD e Home (collocare cursore in 1ª movlw Mess_1 call Messagg Visualizza il messaggio 1 movlw.20 movwf Delay_Cont call Delay_var Temporizza 2 secondi goto Loop

32 Fine del programma principale

33 ESEMPIO 2.22 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer L'uso dello schermo LCD, ancora più messaggi. Questo esempio vuole introdurci all'utilizzo dello schermo LCD, per visualizzare differenti messaggi. Va ricordato che le linee RA0-RA2 agiscono ora come uscita di segnali di controllo verso l'lcd. Esso connesse con i propri interruttori nel MicroPIC Trainer, questi devono essere permanentemente a livello logico "1". List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Lcd_var equ 0x0c Variabili (2) delle procedure di utilizzo dell'lcd Delay_Cont equ 0x0e Variabile per la temporizzazione Temporal_1 equ 0x0f Variabile temporale Temporal_2 equ 0x10 Variabile temporale Vettore di Reset Salva vettore di interrupt include "LCD_Cxx.inc" Include le procedure di utilizzo dell'lcd **************************************************************************************** ** Secondo il valore contenuto nel registro W, si restituisce il carattere da visualizzare Tabel_Messaggi movwf PCL Calcola lo spostamento sulla tabella *********************************************************************************** La direttiva dt genera tante istruzioni retlw quanti bytes o caratteri contiene Mess_0 equ $ Mess_0 punta al primo carattere del messaggio 0 dt "Microsystems",0x00 Mess_1 equ $ Mess_1 punta al primo carattere del messaggio 1 dt "Engineering",0x00 Mess_2 equ $ Mess_2 punta al primo carattere del messaggio 2 dt "Gral. Concha 39",0x00 Mess_3 equ $ Mess_3 punta al primo carattere del messaggio 3 dt "48012 Bilbao",0x00 ********************************************************************************* Delay_var: Questa procedura di scopo generale realizza una temporizzazione variabile tra 50 ms e 12.8". Si impiega un prescaler di 256 e il TMR0 viene caricato con 195. La velocità di lavoro è di 4Mhz e quindi il TMR0 aummenta ogni us. In questo modo, il TMR0 deve contare 195 eventi che, con un prescaler di 256 fa un intervallo totale di us/50 ms (195 * 256). Il valore 195 deve essere espresso in Hex. (c3) e poiché il TMR0 è ascente bisognerà caricare il suo complemento (3C hex.) Tale intervallo di 50 ms si ripete tante volte quante ne indica la variabile "Delay_cont", è per questo che il delay minimo è di 0 ms ("Delay_cont=1) e il massimo di 12.8"

34 (Delay_cont=255). Delay_var: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x3c Complemento hex. di 195 movwf TMR0 carica il TMR0 Intervallo clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Intervallo Ancora no decfsz Delay_Cont,F Diminuisci contatore di intervalli goto Delay_var Ripeti l'intervallo di 50 ms return ************************************************************************************* Messaggio: Questa procedura visualizza sull'lcd il messaggio il cui inizio è indicato nell'accumulatore. La fine di un messaggio si determina mediante il codice 0x00 Messagg movwf Temporal_1 Salva posizione della tabella Messagg_1 movf Temporal_1,W Recupera posizione della tabella call Tabel_Messaggi Cerca carattere di uscita movwf Temporal_2 Mantieni il carattere movf Temporal_2,F btfss STATUS,Z Guarda se è l'ultimo goto No_è_ultimo return No_è_ultimo call LCD_DATO Visualizza sull'lcd incf Temporal_1,F Carattere successivo goto Messagg_1 ********************************************************************************** Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA RA0-RA2 uscite, RA3-RA4 entrate movlw b' ' movwf OPTION_REG Prescaler di 256 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 call LCD_INI movlw b' ' call LCD_REG Sequenza di inizio dell'lcd Invia istruzione: LCD ON, Cursore OFF e blink OFF Loop posizione) posizione) movlw b' ' call LCD_REG Cancella LCD e Home (collocare cursore in 1ª movlw Mess_0 call Messagg Visualizza il messaggio 0 movlw b' ' call LCD_REG Colloca cursore in 2ª fila dell'lcd movlw Mess_1 call Messagg Visualizza messaggio 1 movlw.40 movwf Delay_Cont call Delay_var Temporizza 4 secondi movlw b' ' call LCD_REG Cancella LCD e Home (collocare cursore in 1ª movlw Mess_2 call Messagg Visualizza il messaggio 2 movlw b' ' call LCD_REG Colloca cursore in 2ª fila dell'lcd movlw Mess_3

35 call Messagg Visualizza il messaggio 3 movlw.40 movwf Delay_Cont call Delay_var Temporizza 4 secondi goto Loop Fine del programma principale

36 ESEMPIO 2.23 Autore: Mikel Etxebarria (c) Microsystems Engineering (Bilbao) Esempio per simulazione e/o MicroPIC Trainer L'uso dello schermo LCD. Un semplice generatore di messaggi. Questo esempio vuole realizzare un generatore di messaggi per l'lcd. Con RA4 a "1", il sistema è nel modo di programmazione. In questo modo il messaggio è registrato nella EEPROM di dati. Con RA4 a "0" entriamo nel modo di riproduzione. Il messaggio registrato nella EEPROM viene visualizzato sull'lcd. Quando l'interruttore RA3 è a livello "1", nella posizione attuale del cursore appaio- no sequenzialmente i distinti caratteri disponibili. Mettolo a "0" si sele- ziona l'attuale e si registra nella EEPROM. Ritornando di nuovo a "1" si seleziona il se- guente carattere. Va ricordato che le linee RA0-RA2 ora agiscono come uscita di segnali di controllo verso l'lcd. Esso connesse ai propri interruttori nel MicroPIC Trainer, questi devono essere permanentemente a livello logico "1". List p=16f84 Tipo di processore include "P16F84.INC" Definizioni di registri interni Lcd_var equ 0x0c Variabili (2) delle procedure d'uso dell'lcd Delay_Cont equ 0x0e Variabile per la temporizzazione Temporale_1 equ 0x0f Variabile temporale Temporale_2 equ 0x10 Variabile temporale Cur_Pos equ 0x11 Posizione del cursore Vettore di Reset Salva vettore di interrupt include "LCD_Cxx.inc" Include le procedure d'uso dell'lcd ********************************************************************************* Delay_20_ms: Questa procedura di temporizzazione ha per scopo di eliminare l'"effetto rimbalzo" delle periferiche elettromeccaniche. Realizza un delay di 20 ms. Se il PIC lavora a una frequenza di 4MHz, il TMR0 cambia ogni us. Se vogliamo temporiz- zare us (20 ms) con un prescaler di 128, il TMR0 dovrà contare 156 eventi (156 * 128). Il valore 156 equivale a 9c hex. e poiché il TMR0 è ascedente bisognerà caricare il suo complemento a 1 (63 hex.). Delay_20_ms: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x63 Complemento hex. di 156 movwf TMR0 carica il TMR0 Delay_20_ms_1 clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Delay_20_ms_1 Ancora no bcf INTCON,T0IF Adesso sì, rimettere il flag return ********************************************************************************* Delay_var: Questa procedura a scopo generico realizza una temporizzazione variabile tra 50 ms e 12.8". Si impiega un prescaler di 256 e il TMR0 viene caricato con 195. La velocità di lavoro è di 4Mhz e quindi il TMR0 aumenta ogni us. In questo modo, il TMR0 deve contare 195 eventi che, con un prescaler di 256 fa un

37 intervallo totale di us/50 ms (195 * 256). Il valore 195 deve essere espresso in Hex. (c3) e poiché il TMR0 è ascente bisognerà caricare il suo complemento (3C hex.) Tale intervallo di 50 ms si ripete tante volte quante ne indica la variabile "Delay_cont", è per questo che il delay minimo è di 50 ms ("Delay_cont=1) e il massimo di 12.8" (Delay_cont=255). Delay_var: bcf INTCON,T0IF Disconnetti il flag di overflow movlw 0x3c Complemento hex. di 195 movwf TMR0 carica il TMR0 Intervallo clrwdt Aggiornare il WDT btfss INTCON,T0IF Overflow del TMR0?? goto Intervallo Ancora no decfsz Delay_Cont,F Diminuisci contatore di intervalli goto Delay_var Ripeti l'intervallo di 50 ms return **************************************************************************************** EE_Write: Registra un byte nella EEPROM di dati. L'indirizzo sarà quello contenuto in EEADR e il dato si suppone sia stato precedentemente messo in EEDATA EE_Write bsf STATUS,RP0 Seleziona banco 1 bsf EECON1,WREN Permesso di scrittura movlw b' ' movwf EECON2 movlw b' ' movwf EECON2 Sequenza stabilita da Microchip bsf EECON1,WR Ordine di scrittura bcf EECON1,WREN Disconnetti permesso di scrittura Wait btfss EECON1,EEIF Testare flag di fine scrittura goto Wait bcf EECON1,EEIF Rimettere flag di fine scrittura bcf STATUS,RP0 Seleziona banco 0 return ************************************************************************************** EE_Read: Leggere un byte della EEPROM. Si suppone che il registro EEADR sia caricato con l'indiriz- zo da leggere. In EEDATA apparirà il dato letto. EE_Read bsf STATUS,RP0 Selezione di banco 1 bsf EECON1,RD Ordine di lettura bcf STATUS,RP0 Selezione di banco 0 return ********************************************************************************** Inizio clrf PORTB Cancella i latch di uscita bsf STATUS,RP0 Seleziona banco 1 clrf TRISB Porta B si configura come uscita movlw b' ' movwf TRISA RA0-RA2 uscite, RA3-RA4 entrate movlw b' ' movwf OPTION_REG Prescaler di 256 per il TMR0 bcf STATUS,RP0 Seleziona banco 0 movlw 0x80 movwf Cur_Pos Posizione iniziale del cursore call LCD_INI Sequenza di inizio dell'lcd movlw b' ' call LCD_REG Cancella LCD e Home movlw b' '

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

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

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

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

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

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

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

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

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

4. Operazioni aritmetiche con i numeri binari

4. Operazioni aritmetiche con i numeri binari I Numeri Binari 4. Operazioni aritmetiche con i numeri binari Contare con i numeri binari Prima di vedere quali operazioni possiamo effettuare con i numeri binari, iniziamo ad imparare a contare in binario:

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

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

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

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

NOZIONI BASE DI ASSEMBLER PER PIC16C84

NOZIONI BASE DI ASSEMBLER PER PIC16C84 NOZIONI BASE DI ASSEMBLER PER PIC16C84 Aggiornato al 09 settembre 2005 Ermes ZANNONI (ermes@zannoni.to.it) (http://www.zannoni.to.it) Indice : 1. Introduzione 2. Cosa è un PIC 3. Achitettura interna 3.1

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

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

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra

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

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON0... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON...

A/D CON PIC 16F877. Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2 ADCON0... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON... A/D CON PIC 16F877 Sommario INTRODUZIONE... 2 SELEZIONARE I BANCHI... 2... 4 ADCS1, ADCS0... 4 CH2, CH1 E CH0... 5 GO/DONE... 6 ADON... 7 ESEMPIO 1... 7 ADCON1... 8 ADFM... 8 PGF3, PGF1 E PGF0... 9 ESEMPIO

Dettagli

1 Istruzioni Assembler

1 Istruzioni Assembler Codici Assembler 1 Istruzioni Assembler Sono riportate le istruzioni assembler più comuni utilizzate nella programmazione del microcontrollore 16F628A: Caricamento e spostamento dati: MOVLW n W = n MOVWF

Dettagli

Parte 1. Vettori di bit - AA. 2012/13 1.1

Parte 1. Vettori di bit - AA. 2012/13 1.1 1.1 Parte 1 Vettori di bit 1.2 Notazione posizionale Ogni cifra assume un significato diverso a seconda della posizione in cui si trova Rappresentazione di un numero su n cifre in base b: Posizioni a n

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 3 ISC Esercizi per il recupero del debito formativo: Disegnare il diagramma e scrivere la matrice delle transizioni di stato degli automi a stati finiti che rappresentano

Dettagli

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

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

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico 1996-1997 1 RAPPRESENTAZIONE BINARIA DEI NUMERI Andrea Bobbio Anno Accademico 1996-1997 Numeri Binari 2 Sistemi di Numerazione Il valore di un numero può essere espresso con diverse rappresentazioni. non posizionali:

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

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

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica

L Assembler 8086. Istruzioni Aritmetiche. M. Rebaudengo - M. Sonza Reorda. Politecnico di Torino Dip. di Automatica e Informatica L Assembler 8086 M. Rebaudengo - M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica 1 M. Rebaudengo, M. Sonza Reorda Si suddividono in: istruzioni per il calcolo binario istruzioni

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

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

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

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Procedura SMS. Manuale Utente

Procedura SMS. Manuale Utente Procedura SMS Manuale Utente INDICE: 1 ACCESSO... 4 1.1 Messaggio di benvenuto... 4 2 UTENTI...4 2.1 Gestione utenti (utente di Livello 2)... 4 2.1.1 Creazione nuovo utente... 4 2.1.2 Modifica dati utente...

Dettagli

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione Lezione 3 Le operazioni aritmetiche binarie Sommario L aritmetica binaria La somma La sottrazione La moltiplicazione 1 Definizione Si indica con il termine bit più significativo il bit più a sinistra,

Dettagli

Lezione 6 L'hardware dedicato.

Lezione 6 L'hardware dedicato. Lezione 6 Come già anticipato nelle prime lezioni, il PIC16C84 non solo ha la memoria di programma in tecnologia EEPROM, ma possiede anche 64 registri da 8 bit di identica struttura. Questo vuol dire che,

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore

Dettagli

CORSO di AUTOMAZIONE INDUSTRIALE

CORSO di AUTOMAZIONE INDUSTRIALE CORSO di AUTOMAZIONE INDUSTRIALE (cod. 8469-21029) APPELLO del 19 Gennaio 2011 Prof. Andrea Cataldo Soluzioni Esercizio 1 (Domande generali) 1.a) Controllo Logico Dato il linguaggio SFC relativo allo standard

Dettagli

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

Dettagli

Capitolo 5. Realizzazione software

Capitolo 5. Realizzazione software Realizzazione software 5.1 Introduzione ai PIC Elenco istruzioni Sintassi Descrizione Microchip Operazione equivalente ADDLW k Add Literal and W W = W + k ADDWF f,d Add W and f d = W + f (dove d può essere

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

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

Powered by: Relators:

Powered by: Relators: Powered by: Hacking Group Como www.hgcomo.org Relators: Beretta Matteo, matteo@hgcomo.org Pizzagalli Diego Ulisse ulisse@hgcomo.org Atmel AVR Studio 4 integra al suo interno un ambiente di programmazione

Dettagli

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

Assembly PIC16F8X. Dispensa di elettronica sull uso del microcontrollore PIC 16F8X 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

Dettagli

Caratteri e stringhe Esercizi risolti

Caratteri e stringhe Esercizi risolti Esercizi risolti 1 Esercizio: Conta vocali e consonanti Scrivere un programma in linguaggio C che legga una frase introdotta da tastiera. La frase è terminata dall introduzione del carattere di invio.

Dettagli

2.12 Esercizi risolti

2.12 Esercizi risolti Codifica dell'informazione 55 Lo standard IEEE prevede cinque cause di eccezione aritmetica: underflow, overflow, divisione per zero, eccezione per inesattezza, e eccezione di invalidità. Le eccezioni

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici Per ogni lezione, sintetizzare i circuiti combinatori o sequenziali che soddisfino le specifiche date e quindi implementarli e

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

Calcolatori Elettronici A a.a. 2008/2009. RETI SEQUENZIALI: ESERCIZI Massimiliano Giacomin

Calcolatori Elettronici A a.a. 2008/2009. RETI SEQUENZIALI: ESERCIZI Massimiliano Giacomin Calcolatori Elettronici A a.a. 2008/2009 RETI SEQUENZIALI: ESERCIZI Massimiliano Giacomin 1 Esercizio 1: implementazione di contatori Un contatore è un dispositivo sequenziale che aggiorna periodicamente

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Codifica di dati e istruzioni. Anno Accademico 2010/2011 Francesco Tortorella Corso di Fondamenti di Informatica Codifica di dati e istruzioni Anno Accademico 2010/2011 Francesco Tortorella La codifica dei dati e delle istruzioni La più piccola unità di informazione memorizzabile

Dettagli

CONTATORI ASINCRONI. Fig. 1

CONTATORI ASINCRONI. Fig. 1 CONTATORI ASINCRONI Consideriamo di utilizzare tre Flip Flop J K secondo lo schema seguente: VCC Fig. 1 Notiamo subito che tuttigli ingressi J K sono collegati alle Vcc cioe allo stato logico 1, questo

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

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

Struttura del calcolatore

Struttura del calcolatore Struttura del calcolatore Proprietà: Flessibilità: la stessa macchina può essere utilizzata per compiti differenti, nessuno dei quali è predefinito al momento della costruzione Velocità di elaborazione

Dettagli

Introduzione all analisi dei segnali digitali.

Introduzione all analisi dei segnali digitali. Introduzione all analisi dei segnali digitali. Lezioni per il corso di Laboratorio di Fisica IV Isidoro Ferrante A.A. 2001/2002 1 Segnali analogici Si dice segnale la variazione di una qualsiasi grandezza

Dettagli

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC Requisiti del sistema sistema operativo Windows XP o Vista processore Pentium 4 o equivalente RAM 512 Mb Video 1024x768 Porta USB USB 1.1 o 2.0 full speed Scheda

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

APPUNTI DI ELETTRONICA DIGITALE

APPUNTI DI ELETTRONICA DIGITALE APPUNTI DI ELETTRONICA DIGITALE ITIS MARCONI-GORGONZOLA docente :dott.ing. Paolo Beghelli pag.1/24 Indice 1.ELETTRONICA DIGITALE 4 1.1 Generalità 4 1.2 Sistema di numerazione binario 4 1.3 Operazioni con

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Capitolo 3 Operazioni di ingresso e uscita

Capitolo 3 Operazioni di ingresso e uscita Capitolo 3 Operazioni di ingresso e uscita 3.1. Per assicurare che i dati siano letti solo una volta. 3.2. Assumendo i registri dell interfaccia dello schermo in Figura 3.3, si può usare il seguente programma:

Dettagli

LA NOTAZIONE SCIENTIFICA

LA NOTAZIONE SCIENTIFICA LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo

Dettagli

Esempio di moltiplicazione come somma e spostamento

Esempio di moltiplicazione come somma e spostamento Esempio di moltiplicazione come somma e spostamento Implementare una moltiplicazione coinvolge algoritmi di shift e somma Istruzioni di Shift:movimento di bit: ROL Rd ROR Rd LSL Rd LSR ASR Rd Rd 22 x 35

Dettagli

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database Microsoft Access Introduzione alle basi di dati Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale limitato Meccanismi di sicurezza, protezione di dati e gestione

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

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

PROGRAMMA DI SISTEMI TERZA AET 2014/2015

PROGRAMMA DI SISTEMI TERZA AET 2014/2015 PROGRAMMA DI SISTEMI TERZA AET 2014/2015 Docente: Gamerra Giuseppe, Porta Giovanni Testo : manuali originali dello Z80, appunti in classe, dispense sulla intranet, simulatore OSHONSOFT A) Non sono state

Dettagli

Istruzioni per l uso Yealink T20

Istruzioni per l uso Yealink T20 Istruzioni per l uso Yealink T20 1. Note generali... 2 2. Viva voce... 2 2.1. Attivare il viva voce durante la selezione... 2 2.2. Passare al viva voce durante una chiamata... 2 3. Messa in attesa (funzione

Dettagli

Ing. Paolo Domenici PREFAZIONE

Ing. Paolo Domenici PREFAZIONE Ing. Paolo Domenici SISTEMI A MICROPROCESSORE PREFAZIONE Il corso ha lo scopo di fornire i concetti fondamentali dei sistemi a microprocessore in modo semplice e interattivo. È costituito da una parte

Dettagli

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica I componenti di un Sistema di elaborazione. Memoria centrale Memorizza : istruzioni dati In forma BINARIA : 10001010101000110101... È costituita da una serie di CHIP disposti su una scheda elettronica

Dettagli

C. P. U. MEMORIA CENTRALE

C. P. U. MEMORIA CENTRALE C. P. U. INGRESSO MEMORIA CENTRALE USCITA UNITA DI MEMORIA DI MASSA La macchina di Von Neumann Negli anni 40 lo scienziato ungherese Von Neumann realizzò il primo calcolatore digitale con programma memorizzato

Dettagli

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4

ARCHITETTURE MICROPROGRAMMATE. 1. Necessità di un architettura microprogrammata 1. Cos è un architettura microprogrammata? 4 ARCHITETTURE MICROPROGRAMMATE. 1 Necessità di un architettura microprogrammata 1 Cos è un architettura microprogrammata? 4 Struttura di una microistruzione. 5 Esempi di microprogrammi 9 Esempio 1 9 Esempio

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

La somma. Esempio: Il prodotto. Esempio:

La somma. Esempio: Il prodotto. Esempio: La somma L algoritmo della operazione di somma non cambia qualunque sia la base considerata. Naturalmente, le regole da imparare nel caso di una base b sono relative alle sole b 2 posssibili combinazioni

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

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

PROVA INTRACORSO TRACCIA A Pagina 1 di 6 PROVA INTRACORSO DI ELEMENTI DI INFORMATICA MATRICOLA COGNOME E NOME TRACCIA A DOMANDA 1 Calcolare il risultato delle seguenti operazioni binarie tra numeri interi con segno rappresentati in complemento

Dettagli

BARRIERA DI MISURA METRON GESTIONE LINEA SERIALE RS-485 www.reer.it

BARRIERA DI MISURA METRON GESTIONE LINEA SERIALE RS-485 www.reer.it BARRIERA DI MISURA METRON GESTIONE LINEA SERIALE RS-485 www.reer.it 2 8540641 Rev.1-11 Aprile 2008 BARRIERA DI MISURA METRON GESTIONE LINEA SERIALE RS-485 SOMMARIO Gestione linea seriale...5 Modalità linea

Dettagli

Il foglio elettronico: Excel

Il foglio elettronico: Excel Il foglio elettronico: Excel Laboratorio di Informatica Corso di Laurea triennale in Biologia Dott. Fabio Aiolli (aiolli@math.unipd.it) Dott.ssa Elisa Caniato (ecaniato@gmail.com) Anno accademico 2007-2008

Dettagli

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda

Dettagli

Operazioni binarie fondamentali

Operazioni binarie fondamentali Operazioni binarie fondamentali Operazioni fondamentali: operazioni elementari sui bit. Sono definite le operazioni aritmetiche più le operazioni logiche (AND, OR, NOT). Le operazioni possono essere descritte

Dettagli

OSCILLATORI AL QUARZO: CONTASECONDI

OSCILLATORI AL QUARZO: CONTASECONDI ... OSCILLATORI AL QUARZO: CONTASECONDI di Maurizio Del Corso m.delcorso@farelettronica.com Come può un cristallo di quarzo oscillare ad una determinata frequenza? Quale spiegazione fisica c è dietro a

Dettagli

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento

Dettagli

Determinare la grandezza della sottorete

Determinare la grandezza della sottorete Determinare la grandezza della sottorete Ogni rete IP possiede due indirizzi non assegnabili direttamente agli host l indirizzo della rete a cui appartiene e l'indirizzo di broadcast. Quando si creano

Dettagli