' ********************************************************************** ' * File: Corso_BASCOMAVR_034.BAS * ' * Versione: 1.1 * ' * Data: 24.09.09 * ' * Ambiente sviluppo: Bascom-AVR Demo Ver. 1.11.9.1 + * ' * + AVR bootloader grifo(r) Ver. 1.2 * ' * Schede: GMM AM08 + GMM TST3 * ' * Sviluppato da: GRIFO(r) Italian Technology * ' * via Dell'Artigiano 8/6 * ' * 40016 S. Giorgio di Piano (BO) * ' * Tel. +39 051 892052 Fax. +39 051 893661 * ' * http://www.grifo.com http://www.grifo.it * ' * Autore: Gianluca Angelini * ' ********************************************************************** ' Programma di esempio 034 del corso BASCOM AVR. ' Il programma effettua uno shift alternativo di un LED acceso con effetto ' goccia su 15 dei 16 LEDs presenti sulla scheda TIO 16 a sua volta collegata ' ai connettori di I/O della GMM TST3. In altre parole viene spostato un LED ' acceso con una scia che lo segue, prima da sinistra verso destra e poi da ' destra verso sinistra, in modo ciclico (effetto scanner di SUPERCAR). ' Il programma si presenta su una console seriale dotata di monitor e tastiera, ' con un protocollo fisico costante a 19200 Baud, 8 Bit x chr, 1 Stop bit, ' Nessuna parità. ' Questa console può coincidere con un sistema in grado di gestire una ' comunicazione seriale in RS 232. Al fine di semplificarne l'uso si può ' usare un PC dotato di una linea COMx, che esegue un programma di emulazione ' terminale come HYPERTERMINAL o l'omonima modalità offerta dal BASCOM AVR ' (vedere Configurazioni IDE). ' Il programma funziona solo se la GMM AM08 è montata sullo zoccolo Z2 della ' GMM TST3!! ' Nel programma i nomi che identificano i segnali usati sono riferiti allo ' schema elettrico ed al manuale tecnico della GMM TST3!! ' ' Aggiunte: Nessuna. ' ' 24/09/09: Corso_BASCOMAVR_034.BAS - Ver 1.1 - By G.A. ' Prima versione. ' ' '*************************** Configurazioni IDE ******************************** ' NOTE: per usare correttamente questo programma demo, eseguire i seguenti ' punti: ' 1) Controllare la presenza del file M8DEF.DAT nella directory di ' installazione del BASCOM-AVR e se non disponibile copiarlo e dopo ' rilanciare l'IDE. ' 2) Nella finestra "Options | Compiler | Chip" impostare: ' Chip: m8def.dat ' XRAM: None ' HW Stack: 64 ' Soft Stack: 32 ' Framesize: 64 ' XRAM waitstate: disattivo ' External Access Enable: disattivo ' 3) Nella finestra "Options | Communication" settare: ' COM port = la linea del PC collegata alla GMM AM08, tramite la GMM TST3 ' Baudrate = 19200 ' Parity = None ' Databits = 8 ' Stopbit = 1 ' Handshake = None ' Emulation = TTY ' Font = Terminal, Normale, 12 punti, colore bianco ' Backcolor = Navy ' 4) Al termine della compilazione, della programmazione del codice nella ' GMM AM08, aprire la finestra di emulazione terminale del BASCOM AVR con ' l'opzione: Tools | Terminal emulator (Ctrl+T) ed a questo punto resettare ' o riaccendere il Mini Modulo. '********************** Direttive del compilatore ****************************** $regfile "M8DEF.DAT" ' File di definizione microcontrollore usato $romstart = &H0 ' Indirizzo inizio codice in FLASH $crystal = 7372800 ' Frequenza quarzo del microcontrollore $hwstack = 64 ' Spazio per stack hardware $swstack = 32 ' Spazio per stack software $framesize = 64 ' Spazio per frame $map ' Genera informazioni di debug $baud = 19200 ' Velocità comunicazione seriale: 19200 Baud ' Altri parametri sono fissi a: 8 bit x chr ' 1 Stop bit ' No parity '******************************* Definizioni *********************************** ' Le risorse usate dal programma sono collegate come illustrato nella seguenti ' tabelle: ' !!! N.B. Sulla GMM TST3 i jumper devono essere posizionati come segue: ' J1 in 2-3 ; J2 in 1-2 ; J3 in 1-2 ; J5 in 2-3 ; J7 in 2-3 ; J8 in 2-3 ' J9 in 2-3 !!! ' ' LED Risorsa pin Z2 pin Segnale Segnale uP ' TIO 16 GMM TST3 GMM TST3 GMM AM08 GMM AM08 usato ' LD1 CN4.2 33 27 ADC7 ADC7 ' LD2 CN4.1 32 26 PCO ADC0 PC0 ' LD3 CN4.4 31 25 PC1 ADC1 PC1 ' LD4 CN4.3 30 24 PB1 OC1A PB1 ' LD5 CN4.6 29 23 PB0 ICP PB0 ' LD6 CN4.5 28 22 PB2 OC1B /SS PB2 ' LD7 CN4.8 27 21 PD6 AIN0 PD6 ' LD8 CN4.7 26 20 PD7 AIN1 PD7 ' LD9 CN4.15 25 19 PD2 INT0 PD2 ' LD10 CN4.16 24 18 PD3 INT1 PD3 ' LD11 CN4.13 23 17 PD4 T0 XCK PD4 ' LD12 CN4.14 22 16 PD5 T1 PD5 ' LD13 CN4.11 21 15 PC2 ADC2 PC2 ' LD14 CN4.12 19 13 PC3 ADC3 PC3 ' LD15 CN4.9 14 8 PB3 MOSI OC2 PB3 ' LD16 CN4.10 15 9 PB4 MISO PB4 ' ' Segnale pin COMx pin CN5 pin Z1 pin Segnale Segnale ' PC DB9 GMM TST3 GMM TST3 GMM AM08 GMM AM08 uP ' TX 3 3 9 3 RxD RS232 PD0 ' RX 2 2 10 4 TxD RS232 PD1 ' GND 5 5 20 14 GND - ' Da questa tabella si ricava che il cavo di collegamento tra la COM del PC ed ' il CN5 della GMM TST3 è un normale cavo dritto o prolunga. Volendolo ' richiedere alla grifo(r) si deve specificare il codice CCR 9+9E. Pinrx Alias Ddrd.0 ' Bit con direzione segnale collegato a RxD GMM AM08 Pintx Alias Ddrd.1 ' Bit con direzione segnale collegato a TxD GMM AM08 '************************ Dichiarazioni costanti ******************************* Const Dtshift = 2900 ' Tempo di mantenimento settaggi LEDs in cicli '************************ Dichiarazioni variabili ****************************** Dim Dirio As Byte ' Variabile con direzione I/O digitali Dim Iod As Byte ' Variabile con stato I/O digitali Dim Nset As Byte ' Variabile per indice settaggio gestito Dim Nled As Byte ' Variabile per indice LED Dim Modcnt As Byte ' Variabile per contatore modulazione LEDs Dim Modled(16) As Byte ' Vettore per settaggi=modulazione LEDs Dim Delshift As Word ' Contatore per tempo mantenimento settaggi LEDs '************************ Dichiarazioni procedure ****************************** Declare Sub Ini_pa(byval Dirio As Byte) ' Inizializza Port A GMM TST3 Declare Sub Ini_pc(byval Dirio As Byte) ' Inizializza Port C GMM TST3 Declare Sub Ini_modled() ' Inizializza timer per generazione interrupt periodico '************************** Programma principale ******************************* Main: Pinrx = 0 ' Inizializza segnali per comunicazione seriale Pintx = 0 ' come ingressi digitali Call Ini_pa(&Hff) ' Inizializza linee collegate a port A in output Call Ini_pc(&Hff) ' Inizializza linee collegate a port C in output Call Ini_modled() ' Inizializza timer per modulazione LED Print ' Separa da precedenti indicazioni, andando su nuova riga Print Print " Shift alternato di un LED della TIO 16 con effetto goccia" Print "Montare Mini Modulo su Z2 della GMM TST3 e collegare TIO 16 a CN4." Print "Shift in corso.."; Do ' Inizio ciclo infinito Restore Leds_settings ' Punta ad inizio tabella con settaggi LEDs For Nset = 1 To 34 ' Ciclo che sposta LED tramite i 34 settaggi della tabella For Nled = 1 To 16 ' Ciclo che preleva attuale settaggio dei LEDs Read Modled(nled) ' Salva settaggi=modulazioni in apposito vettore Next Nled Delshift = 0 ' Azzera contatore tempo mantenimento settaggi LEDs Do ' I LEDs della TIO 16 sono impostati direttamente con gli stati derivati ' dai settaggi in tabella, relazionati al tempo trascorso, scandito dal ' contatore d'interrupts periodici avvenuti Modcnt. L'impostazione diretta ' sui pin del microcontrollore ottimizza i tempi di esecuzione che devono ' essere ridotti al minimo, in modo da ridurre il tremolio degli stessi LEDs. If Modcnt > Modled(2) Then ' Determina stato LD2 in base a suo stato e tempo trascorso Portc.0 = 0 Else Portc.0 = 1 End If If Modcnt > Modled(3) Then ' Determina stato LD3 in base a suo stato e tempo trascorso Portc.1 = 0 Else Portc.1 = 1 End If If Modcnt > Modled(4) Then ' Determina stato LD4 in base a suo stato e tempo trascorso Portb.1 = 0 Else Portb.1 = 1 End If If Modcnt > Modled(5) Then ' Determina stato LD5 in base a suo stato e tempo trascorso Portb.0 = 0 Else Portb.0 = 1 End If If Modcnt > Modled(6) Then ' Determina stato LD6 in base a suo stato e tempo trascorso Portb.2 = 0 Else Portb.2 = 1 End If If Modcnt > Modled(7) Then ' Determina stato LD7 in base a suo stato e tempo trascorso Portd.6 = 0 Else Portd.6 = 1 End If If Modcnt > Modled(8) Then ' Determina stato LD8 in base a suo stato e tempo trascorso Portd.7 = 0 Else Portd.7 = 1 End If If Modcnt > Modled(9) Then ' Determina stato LD9 in base a suo stato e tempo trascorso Portd.2 = 0 Else Portd.2 = 1 End If If Modcnt > Modled(10) Then ' Determina stato LD10 in base a suo stato e tempo trascorso Portd.3 = 0 Else Portd.3 = 1 End If If Modcnt > Modled(11) Then ' Determina stato LD11 in base a suo stato e tempo trascorso Portd.4 = 0 Else Portd.4 = 1 End If If Modcnt > Modled(12) Then ' Determina stato LD12 in base a suo stato e tempo trascorso Portd.5 = 0 Else Portd.5 = 1 End If If Modcnt > Modled(13) Then ' Determina stato LD13 in base a suo stato e tempo trascorso Portc.2 = 0 Else Portc.2 = 1 End If If Modcnt > Modled(14) Then ' Determina stato LD14 in base a suo stato e tempo trascorso Portc.3 = 0 Else Portc.3 = 1 End If If Modcnt > Modled(15) Then ' Determina stato LD15 in base a suo stato e tempo trascorso Portb.3 = 0 Else Portb.3 = 1 End If If Modcnt > Modled(16) Then ' Determina stato LD16 in base a suo stato e tempo trascorso Portb.4 = 0 Else Portb.4 = 1 End If Incr Delshift ' Incrementa contatore tempo mantenimento settaggi LEDs Loop Until Delshift = Dtshift ' Ripete fino a tempo mantenimento LEDs trascorso Next Nset Loop ' Fine ciclo infinito Stop Timer0 ' Ferma TIMER0 e funzioni associate End '************************ Fine programma principale **************************** '****************** Inizio procedure usate dal programma *********************** ' Inizializza gli 8 pin del uP collegati al port A su CN4 della GMM TST3: ' PA.0 -> ADC7 PA.1 -> PC0 PA.2 -> PC1 PA.3 -> PB1 ' PA.4 -> PB0 PA.5 -> PB2 PA.6 -> PD6 PA.7 -> PD7 ' nella modalita` di I/O passata nel parametro dirio (bit a 1=uscita a livello ' alto; bit a 0=ingresso), lasciando inalterato lo stato di tutte le altre linee. ' N.B. Con la GMM AM08 nel Port A possono essere programmate in ingresso tutte ' le 8 linee, mentre in uscita solo 7 linee. Sub Ini_pa(byval Dirio As Byte) ' Inizializza linea collegata a segnale analogico del microcontrollore, ' gestita tramita la corrispondente sezione A/D converter, in ingresso Config Adc = Single , Prescaler = Auto , Reference = Avcc ' Inizializza sezione A/D con conversione su richieta, Start Adc ' miglior prescaler, Vref=5 V e la abilita ' Inizializza rimanenti 7 linee del port A collegate a segnali digitali del ' microcontrollore Portc.0 = 1 ' Setta stato iniziale alto per PA.1->PC0 in uscita Ddrc.0 = Dirio.1 ' Imposta direzione per PA.1->PC0 Portc.1 = 1 ' Setta stato iniziale alto per PA.2->PC1 in uscita Ddrc.1 = Dirio.2 ' Imposta direzione per PA.2->PC1 Portb.1 = 1 ' Setta stato iniziale alto per PA.3->PB1 in uscita Ddrb.1 = Dirio.3 ' Imposta direzione per PA.3->PB1 Portb.0 = 1 ' Setta stato iniziale alto per PA.4->PB0 in uscita Ddrb.0 = Dirio.4 ' Imposta direzione per PA.4->PB0 Portb.2 = 1 ' Setta stato iniziale alto per PA.5->PB2 in uscita Ddrb.2 = Dirio.5 ' Imposta direzione per PA.5->PB2 Portd.6 = 1 ' Setta stato iniziale alto per PA.6->PD6 in uscita Ddrd.6 = Dirio.6 ' Imposta direzione per PA.6->PD6 Portd.7 = 1 ' Setta stato iniziale alto per PA.7->PD7 in uscita Ddrd.7 = Dirio.7 ' Imposta direzione per PA.7->PD7 End Sub ' Inizializza gli 8 pin del uP collegati al port C su CN4 della GMM TST3: ' PC.0 -> PD2 PC.1 -> PD3 PC.2 -> PD4 PC.3 -> PD5 ' PC.4 -> PC2 PC.5 -> PC3 PC.6 -> PB3 PC.7 -> PB4 ' nella modalita` di I/O passata nel parametro dirio (bit a 1=uscita a livello ' alto; bit a 0=ingresso), lasciando inalterato lo stato di tutte le altre linee. Sub Ini_pc(byval Dirio As Byte) ' Inizializza 8 linee del port A, tutte collegate a segnali digitali del ' microcontrollore Portd.2 = 1 ' Setta stato iniziale alto per PC.0->PD2 in uscita Ddrd.2 = Dirio.0 ' Imposta direzione per PC.0->PD2 Portd.3 = 1 ' Setta stato iniziale alto per PC.1->PD3 in uscita Ddrd.3 = Dirio.1 ' Imposta direzione per PC.1->PD3 Portd.4 = 1 ' Setta stato iniziale alto per PC.2->PD4 in uscita Ddrd.4 = Dirio.2 ' Imposta direzione per PC.2->PD4 Portd.5 = 1 ' Setta stato iniziale alto per PC.3->PD5 in uscita Ddrd.5 = Dirio.3 ' Imposta direzione per PC.3->PD5 Portc.2 = 1 ' Setta stato iniziale alto per PC.4->PC2 in uscita Ddrc.2 = Dirio.4 ' Imposta direzione per PC.4->PC2 Portc.3 = 1 ' Setta stato iniziale alto per PC.5->PC3 in uscita Ddrc.3 = Dirio.5 ' Imposta direzione per PC.5->PC3 Portb.3 = 1 ' Setta stato iniziale alto per PC.6->PB3 in uscita Ddrb.3 = Dirio.6 ' Imposta direzione per PC.6->PB3 Portb.4 = 1 ' Setta stato iniziale alto per PC.7->PB4 in uscita Ddrb.4 = Dirio.7 ' Imposta direzione per PC.7->PB4 End Sub ' Inizializza generazione interrupt periodico tramite TIMER0 del microcontrollore ' usato per tutte le gestioni temporali del programma. I commenti di questa ' procedura indicano concisamente le operazioni svolte ma informazioni ' dettagliate sono disponibili nel data sheet del microcontrollore e nell'aiuto ' in linea del BASCOM. ' Il tempo di 39 usec è stato scelto in modo da ottenere un periodo di ' modulazione LEDs, di circa 10 msec ad 8 bits: 10 msec/256=39 usec. Sub Ini_modled() Modcnt = 0 ' Azzera contatore per modulazione LEDs Config Timer0 = Timer , Prescale = 8 ' TIMER0 come 8 bit timer con auto reload ed attivazione interna On Ovf0 Timer0_irq ' Definisce procedura risposta interrupt di overflow del TIMER0 Load Timer0 , 36 ' Carica costante di tempo per 39 usec Enable Timer0 ' Abilita interrupt da TIMER0 Enable Interrupts ' Abilitazione generale interrupts Start Timer0 ' Attiva TIMER0 End Sub ' Procedura di risposta all'interrupt periodico associato al TIMER0. ' Incrementa contatore di interrupt avvenuti per fornire una base temporale ' di circa 39 usec al programma. ' La procedura di risposta anche se minimale usa 3 registri del microprocessore ' e non può essere dichiarata con la direttiva Nosave. Timer0_irq: Load Timer0 , 36 ' Carica costante di tempo per 39 usec Incr Modcnt ' Incrementta contatore per modulazione LEDs Return '******************* Fine procedure usate dal programma ************************ '******************** Inizio dati usati dal programma ************************** ' Lo spostamento del LED acceso con scia è ottenuto con diversi settaggi dei ' LEDs sulla TIO 16. I dati che seguono riportano tali settaggi, con la seguente ' organizzazione: ' - ogni settaggio corrisponde ad un diverso stato dei LEDs che una volta ' attuati in sequenza provocano lo spostamento con scia, in entrambi i sensi; ' - la scia è composta da 4 LEDs attivati rispettivamente al 100%, 50%, 25% e ' 12%; ' - le percentuali di attivazione sono espresse come bits più significativi a 1 ' sugli 8 del periodo di modulazione, in esadecimale: ' 100%->00000000=000=00H; ' 50%->10000000=128=80H; ' 25%->11000000=192=C0H; ' 12%->11100000=224=E0H; ' 0%->11111111=255=FFH; ' - ogni settaggio è composto dallo stato dei 16 LEDs di cui solo 15 (da LD2 ad ' LD16) sono gestibili, espresso con i valori di attivazione appena descritti; ' - nella tabella sono previsti i settaggi di 16 LEDs anche se con il GMM AM08 ' se ne possono pilotare solo 15, per ragioni di trasportabilita` e ' compatibilita` con altri Mini Moduli. Leds_settings: ' LD1 LD2 LD3 LD4 LD5 LD6 LD7 LD8 LD9 LD10 LD11 LD12 LD13 LD14 LD15 LD16 Data &HFF , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H80 , &H00 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &HC0 , &H00 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HE0 , &H00 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &H00 , &H80 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &H00 , &HC0 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF Data &HFF , &H00 , &HE0 , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF , &HFF '********************* Fine dati usati dal programma ***************************