' ********************************************************************** ' ** Programma: DEMO_PPI.BAS - Versione : 1.1 - 29 Gennaio 1999 ** ' ** Compilatore : BASCOM LT, (IDE V.1.20, LIB V.1.27) ** ' ** Scheda : GPC(r) F2 ** ' ** 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: Adriano Pedrielli ** ' ********************************************************************** ' ' Questo programma permette di gestire le linee digitali TTL per un ' totale di 24, della periferica PPI 82c55, contemporaneamente avviene ' una segnalazione acustica durante il pilotaggio delle uscite. ' Per facilitare la visualizzazione dello stato delle linee è necessario ' collegare con un cavo flat a 20 poli, il connettore CN2, della GPC(r)F2, ' con il connettore CN1 della TIO 16, oppure 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 = 11059200 ' frequenza di clock del microcontrollore $baud = 9600 ' velocità di comunicazione RS-232 $large ' indirizzamento a 16 bit ' '****************** Dichiarazione delle costanti *********************** ' Dim Cnt As Const &HFA03 ' registro di controllo e comando del 82c55 Dim Pda As Const &HFA00 ' registro dati del portA Dim Pdb As Const &HFA01 ' registro dati del portB Dim Pdc As Const &HFA02 ' registro dati del portC Buzzer Alias P1.2 ' rinomino un pin del processore ' '****************** Dichiarazione delle procedure ********************** ' Declare Sub Vis_byte(v8bit As Byte) ' visulizza ogni bit di un byte Declare Sub Lettura_dip1 ' acquisisce dip switch DIP1 ' '****************** Dichiarazione delle variabili ********************** ' Dim V8bit As Byte ' variabile per la procedura Vis_byte a 8 bit Dim V1bit As Bit ' variabile per uso generico a 1 bit Dim X As Byte , X1 As Byte ' variabile per uso generico a 8 bit Dim X8bit As Byte , D8bit As Byte ' variabile per uso generico a 8 bit ' '************************* Programma main ****************************** ' Main: Waitms 1 ' ritardo per assestamento segnali Out Cnt , 130 ' programmo modo 0, portA e portC in output, mentre ' il portB in input, perchè connesso a DIP1 Out Pda , 255 ' pongo le 8 linee del portA a livello 1 Out Pdc , 255 ' pongo le 8 linee del portC a livello 1 Print Print " Programma demo per la periferica PPI 82c55 v.1.1 per la GPC(r) F2." Print Print "E' in corso l'attivazione sequenziale delle linee digitali del portA e portC," Print "contemporaneamente viene visualizzato il portB che indica lo stato del DIP1." Print "Per ogni attivazione dei due port, avviene una segnalazione acustica." Print Print Print " Dip-switch DIP1" Print Print " 1 2 3 4 5 6 7 8" Do D8bit = 1 ' preparazione primo bit da attivare For X1 = 1 To 8 ' eseguo i comandi seguenti per 8 volte X8bit = Not D8bit ' nego il valore dell variabile Out Pda , X8bit ' comando le uscite del portA Rotate D8bit , Left ' sposto a sinistra di una posizione i bit del byte Lettura_dip1 ' visualizzo lo stato del DIP1 e genera suono Next X1 ' attendo 8 volte la sequenza Out Pda , 255 ' pongo le 8 linee del portA a livello 1 D8bit = 1 ' preparazione primo bit da attivare For X1 = 1 To 8 ' eseguo i comandi seguenti per 8 volte X8bit = Not D8bit ' nego il valore dell variabile Out Pdc , X8bit ' comando le uscite del portC Rotate D8bit , Left ' sposto a sinistra di una posizione i bit del byte Lettura_dip1 ' visualizzo lo stato del DIP1 e genera suono Next X1 ' attendo 8 volte la sequenza Out Pdc , 255 ' pongo le 8 linee del portC a livello 1 Loop ' eseguo il programma all'infinito End ' '************************ Fine del programma *************************** ' ' '**************************** Procedure ******************************** ' ' Procedura che visulizza lo stato del DIP-switch DIP1 ' parametri d'ingresso: nessuno ' parametri d'uscita: nessuno Sub Lettura_dip1 V8bit = Inp(pdb ) ' lettura del portB Vis_byte (v8bit) ' visualizzo tutti gli 8 bit Print Chr(13); ' metto il cursore a capo della riga Waitms 255 ' ritardo di 255ms Sound Buzzer , 200 , 100 ' emetto una frequenza di 2KHz per 100ms Buzzer = 1 ' pongo a 1 la linea del buzzer End Sub ' ' Procedura che visualizza lo stato di ogni bit che compongono un byte ' parametri d'ingresso: v8bit = byte = valore da rappresentare come stato dei bit ' parametri d'uscita: nessuno Sub Vis_byte (v8bit As Byte ) For X = 1 To 8 ' visualizzo per 8 volte il bit puntato V1bit = V8bit And &H01 ' elimino tutti i bit tranne bit0 If V1bit = 0 Then ' controllo lo stato del bit Print " On " ; ' se=0 visualizzo On Else Print " Off" ; ' se=1 visualizzo Off End If Rotate V8bit , Right ' ruoto a destra il byte Next X End Sub