/********************************************************************** ** Programma: S1DEB6.C - Versione : 1.1 - 04 Agosto 1999 ** ** Compilatore : HI-TECH C for 8051 V. 7.60 ** ** Scheda : GPC(r) 323 ** ** 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 l'accensione di un LED in una sola direzione dal banco dei LED rossi verso l'altro banco. Per facilitare la visualizzazione dello stato delle linee e' necessario collegare con un cavo flat a 20 poli, il connettore CN7 della GPC(r) 323 al connettore CN15 della DEB 01. */ #include<8051.h> #include // // ******************** Direttive del compilatore ************************** // // Sono incorporate nel file S1DEB6.PRJ // // ******************* Dichiarazione delle costanti ************************ // volatile far unsigned char Pda @ 0xFFFC; // Registro dati del portA volatile far unsigned char Pdb @ 0xFFFD; // Registro dati del portB volatile far unsigned char Pdc @ 0xFFFE; // Registro dati del portC volatile far unsigned char Cnt @ 0xFFFF; // Registro di controllo volatile far unsigned char Dsw1 @ 0xFFF9; // Mappatura del dip switch // // **************************** Programma main ****************************** // void main() { unsigned int shifter; // Variabile usata per pilotare i LED unsigned int delay; // Variabile usata per creare un ritardo printf(" Programma dimostrativo 6 per la sezione 1 della scheda DEB(r) 01\n\n"); printf(" Fa scorrere l'accensione di un LED in una sola direzione.\n\n"); printf(" Esecuzione in corso...\n\n"); Cnt=0x82; // Configura in ingresso port B e C // In uscita port A do { shifter=1; // Inizia a scorrere dai LED rossi while(shifter!=0) { shifter=~shifter; // I led funzionano in logica negata Pda=shifter & 0x00FF; // Sui LED rossi vanno i primi 8 bits Pdc=shifter>>8; // Sui LED gialli vanno gli ultimi 8 bits shifter=~shifter; // Ripristina il valore della variabile shifter=shifter<<1; // Fa scorrere a sinistra i bits di shifter for(delay=0; delay<20000; delay++) ; // Ritardo per limitare ad un valore visibile // Il numero di scorrimenti } } while(1); // Riptete all'infinito } // // ************************** Fine del programma *************************** //