' ********************************************************************** ' ** Programma: S1DEB9.BAS - Versione : 1.1 - 02 Giugno 1999 ** ' ** Compilatore : BASCOM LT, (IDE V.1.20, LIB V.1.27) ** ' ** Scheda : GPC(r) 552 ** ' ** Ditta: grifo(r) ITALIAN TECHNOLOGY ** ' ** Via Dell' Artigiano 8/6 40016 San Giorgio di Piano (BO) ** ' ** Tel.+39 051 892 052 Fax +39 051 893 661 ** ' ** http://www.grifo.com http://www.grifo.it ** ' ** sales@grifo.it tech@grifo.it grifo@grifo.it ** ' ** ** ' ** Realizzato da: Graziano Gaiba ** ' ********************************************************************** ' ' Questo programma fa scorrere la accensione di un LED da destra verso ' sinistra e di uno da sinistra verso destra. ' Per facilitare la visualizzazione dello stato delle linee è necessario ' collegare con un cavo flat a 20 poli, il connettore CN2 della GPC(r) 552 ' al connettore CN15 della DEB 01. ' '****************** Direttive del compilatore ************************** ' $romstart = &H8050 ' indirizzo di partenza del codice macchina $ramstart = &HD000 ' indirizzo di partenza della area dati $ramsize = &H2800 ' pongo a 10K la area dati $crystal = 22118400 ' frequenza di clock del microcontrollore $baud = 19200 ' velocità di comunicazione RS-232 $large ' indirizzamento a 16 bit ' '****************** Dichiarazione delle costanti *********************** ' Dim Pda As Const &HFFF8 ' registro dati del portA Dim Pdb As Const &HFFF9 ' registro dati del portB Dim Pdc As Const &HFFFA ' registro dati del portC Dim Cnt As Const &HFFFB ' registro di controllo ' '****************** Dichiarazione delle variabili ********************** ' Dim Shifter1 As Byte , Shifter2 As Byte' Fanno muovere i LEDs Dim Dir As Bit ' Indicatore di direzione Waitms 1 ' Ritardo per assestamento dei segnali Out Cnt , &B10000010 ' Predispone il port B in input, ' i port A e C in output ' '************************* Programma main ****************************** ' Print " Programma dimostrativo 9 per la sezione 1 della scheda DEB(r) 01" Print : Print " Muove un LED in una direzione e un altro LED nella direzione opposta." Print : Print " Esecuzione in corso..." Dir = 0 ' Muove per fare incontrare i LEDs Do If Dir = 0 Then ' Se i LEDs si incontrano Shifter1 = 1 ' LED che parte da destra Shifter2 = 128 ' LED che parte da sinistra Else ' Altrimenti Shifter1 = 128 ' LED che parte da sinistra Shifter2 = 1 ' LED che parte da destra End If While Shifter1 <> 0 Shifter1 = Not Shifter1 ' Nega le variabili per pilotare i Shifter2 = Not Shifter2 ' LEDs in logica negata Out Pda , Shifter1 ' Impone lo stato dei LEDs rossi Out Pdc , Shifter2 ' Impone lo stato dei LEDs gialli e verdi Shifter1 = Not Shifter1 ' Ripristina le variabili per Shifter2 = Not Shifter2 ' la rotazione If Dir = 0 Then ' Se i LEDs si incontrano Rotate Shifter1 , Left ' LED rosso verso sinistra Rotate Shifter2 , Right ' LED verde/giallo verso destra Else ' Altrimenti Rotate Shifter1 , Right ' LED rosso verdo destra Rotate Shifter2 , Left ' LED verde/giallo verso sinistra End If Waitms 255 ' Ritardo per avere pochi movimenti al sec. Wend Dir = Not Dir ' Cambia direzione Loop End ' '************************ Fine del programma *************************** '