{ ********************************************************************** ** Programma: S1DEB5.PAS Versione: 1.1 -28 Gennaio 1999 ** ** Ditta: GRIFO(r) Via Dell'Artigiano 8/6 ** ** 40016 San Giorgio di Piano (BO) ** ** Tel. 051-892052 FAX 051-893661 ** ** Realizzato da: Tassinari Enea ** ********************************************************************** Il programma e' in grado di visualizzare lo stato del PORT C sul PORT A. A seconda che il switch 1 del dip switch sia on oppure off il PORT A visualizzera'lo stato stesso del PORT C oppure lo stato negato. Per il funzionamento del seguente programma e' necessario un compilatore pascal (parte software), una scheda DEB01 e una scheda GPC-15R opportunamente collegate (parte hrdware). } program S1DEB5; {$C-} { disabilita il Ctrl+C } const CNT=$17; { Registro di controllo e comando del PPI 82C55 } PDA=$14; { Registro dati del port A } PDB=$15; { Registro dati del port B (dip switch) } PDC=$16; { Registro dati del port C } var STATO:byte; SWC:integer; VIS:integer; TASTO:char; RIS:integer; procedure INIZIALIZZAZIONE; { Inizializzazione del registro di controllo dell' 82C55 } begin port[CNT]:=139; end; function LETTURA (INDIRIZZO:integer):byte; { lettura dello stato del dip switch e del Port C } begin LETTURA:=port[INDIRIZZO]; { Scrive all'interno della variabile LETTURA il valore presente all'indirizzo della variabile INDIRIZZO cioe' PDB e PDC } end; procedure SCRITTURA (STATO:byte); { Scrittura dello stato del Port C sul Port A } begin port[PDA]:=STATO; end; begin {programma principale } clrscr; INIZIALIZZAZIONE; gotoxy(10,3); writeln('VISUALIZZAZIONE DELLO STATO DEL PORT C SUL PORT A IN CORSO'); gotoxy(5,4); writeln('SE LO SWITCH 1 DEL DIP SWITCH=OFF IL PORT C SI CONFIGURA IN LOGICA NEGATA'); gotoxy(25,5); write('Premere un tasto per uscire'); repeat begin SWC:=LETTURA(PDB); VIS:=LETTURA(PDC); RIS:=SWC and 1; { Compie un AND logico con il contenuto di SWC per rendere sensibile solo lo switch 1 del dip switch. In questo modo e' possibile cambiare gli altri switch senza che il programma se ne accorga. } if RIS=0 then SCRITTURA(VIS) else SCRITTURA(255-VIS) end; until keypressed; SCRITTURA(255); { Permette di mantenere, all'uscita del programma, tutti i led del Port A spenti } read(kbd,TASTO); end.