/* ********************************************************************** * File S1deb4.C - Rel. 1.1 compile with uC/51 V. 1.10.10 * * GRIFO(R) via Dell'Artigiano 8/6 40016 S. Giorgio di Piano (BO) * * Cards: GPC 554 d.s. 100997 and DEB01 or TIO16 * * Tel. +39 051 892052 Fax. +39 051 893661 * * http://www.grifo.com http://www.grifo.it * * sales@grifo.it tech@grifo.it grifo@grifo.it * * by Graziano Gaiba 26.09.03 * ********************************************************************** Rel. 1.1 - 26.09.2003 by Graziano Gaiba Connect CN5 of GPC(r) 554 to CN15 of DEB01 or CN1 of TIO16 through a 20 pins+26 pins flat. This program shows the status of jumpers J2, J7 and J8 on port A. */ #include #include #include // Clock frequency of CPU used #define FCLOCK 22118400 // On board peripherals registers allocation addresses. near unsigned char P4 @ 0xC0; near unsigned char P5 @ 0xC4; static unsigned char RUNDEB @ 0xFFFF; /********* General purpose utilities and hw sections management ***********/ void iniser(unsigned long baud) /* Initialise serial port with: Bit x chr = 8 Stop bit = 1 Parity = None Baud rate = baud using timer 1 as baud rate generator. */ { SCON=0x052; // Modo 1, receiver enabled TMOD&=0x00F; // Timer 1 in auto-reload mode TMOD|=0x020; TR1=0; // Stop TIMER 1 TH1=256-((2*FCLOCK)/(384*baud)); // baud at 14.7456 MHz PCON=PCON|0x080; // Set SMOD=1 for higher baud rate TR1=1; // Start TIMER 1 } // Wait for signals settling void setup(void) { unsigned int i; for(i=10000; i!=0; i--) ; } // Set port A void setPortA(unsigned char v) { P4=v; } // Set port C void setPortC(unsigned char v) { P1=v; } // Get port A unsigned char getPortA(void) { return P4; } // Get port C unsigned char getPortC(void) { return P1; } // Reads status of jumper J2. // Returns 0x01 if J2 is connected // 0x00 if J2 is not connected unsigned char getJ2(void) { return (RUNDEB & 0x80 ? 0x00: 0x01); } // Reads status of jumper J7. // Returns 0x01 if J7 is connected // 0x00 if J7 is not connected unsigned char getJ7(void) { return (P5 & 0x80 ? 0x00 : 0x01); } // Reads status of jumper J8. // Returns 0x01 if J8 is connected // 0x00 if J8 is not connected unsigned char getJ8(void) { return (P5 & 0x40 ? 0x00 : 0x01); } // Delay to prevent serial line overrun void ritardo(void) { unsigned int i; for(i=0xffff; i!=0; i--) ; } // **************************** Main program ***************************** void main(void) { unsigned char r; setup(); // Wait for signals settling iniser(19200); TI=0; RI=0; // Comment next two lines if serial port is used in polling (SIOTYPE=p or k) ES=1; // Enable serial port interrupt EA=1; // Enable all interrupts puts("********************* Demo S1DEB4 **********************"); puts(""); puts("Shows status of jumpers J2, J7 and J8 respectively in the first 3 bits"); puts("of PORT A."); for (;;) // Infinite loop. { r=0xFF; if(getJ2()) { r&=~0x01; // J2 connected } if(getJ7()) { r&=~0x02; // J7 connected } if(getJ8()) { r&=~0x04; // J8 connected } setPortA(r); } }