/********************************************************************** ** Programma: S1DEB2.BAS - 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 riporta sullo schermo dell'emulatore di terminale lo stato, in forma binaria, dei port A e C della scheda GPC(r) 323. 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 S1DEB2.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 // // ****************** Dichiarazione delle variabili ********************** // // // ****************** Dichiarazione delle procedure *********************** // void Stampabits(unsigned char v8bit); // Stampa i bits del parametro in // Ingresso nel formato 1/0 (non va a // capo) // // ************************* Programma main ****************************** // void main() { unsigned int delay; // Variabile usata per produrre un ritardo printf(" Programma dimostrativo 2 per la sezione 1 della scheda DEB(r) 01\n\n"); printf(" Riporta sul monitor del PC lo stato di entrambi i port.\n\n"); printf(" Esecuzione in corso...\n\n"); Cnt=0x9B; // Configura in input i port A, B e C puts("Port A Port C"); // Stampa la maschera do { Stampabits(Pda); // Legge lo stato del Port A e lo stampa come bits printf(" "); // Stampa separatore Stampabits(Pdc); // Legge lo stato del Port C e lo stampa come bits printf("%c", 13); // Va a capo for(delay=0; delay++; delay<20000) ; // Ritardo per stampare senza saturare la } // Trasmissione seriale while(1); } // // ************************ Fine del programma *************************** // // // **************************** Procedure ******************************** // // Procedura che stampa il suo parametro di 8 bits come una successione // di stringhe 1/0 a seconda dei valori dei bits del parametro. Terminata // la stampa non va a capo. // Parametri in ingresso: // V8bit byte Il valore da stampare come bits // Valore in uscita: // Nessuno void Stampabits(unsigned char v8bit) { unsigned char counter; // Contatore per scorrere tutti i bits del // Parametro for(counter=1; counter<9; counter++) { if(v8bit & 0x80) // Testa il bit piu' significativo di V8bit { // I pulsanti funzionano in logica negata printf("1"); // Se il pusante e' premuto stampa 1 } else { printf("0"); // Se il pulsante non e' premuto stampa 0 } v8bit=v8bit << 1; // Sposta il bit succesivo di V8bit nel suo // Bit piu' significativo } // Ripete per 8 volte } // // *********************** Fine del programma ******************************* //