/* ********************************************************************** * File S1deb9.C - Rel. 1.1 compile with uC/51 V. 1.10.7 * * GRIFO(R) via Dell'Artigiano 8/6 40016 S. Giorgio di Piano (BO) * * Cards:GPC 324/D d.s.140201 + ETI 324 d.s.101297 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 del 17.07.03 * ********************************************************************** Rel. 1.1 - 17.07.2003 by Graziano Gaiba Connect CN1 of GPC(r) 324/D and CN1 of ETI 324 through a flat 26+26 I/O. Connect CN3 of ETI 324 and CN15 of DEB01 or CN1 of TIO16 through a 20 pins flat. Also, all Dips of Dip Switch DSW1 of ETI 324 must be set ON, to select base address 0. For further information please refer to manual of ETI 324. This program shifts the lighting of a LED first to one direction then to the other one. */ #include #include #include // Clock frequency of CPU used #define FCLOCK 22118400 // On board peripherals registers allocation addresses. // Address of each register is given by: 0xFF00 + baseadd + offset of register // Value of baseadd is set through DSW1 of ETI 324, offsets of the registers // are reported on manual of ETI 324. static unsigned char PORTA @ 0xFF00, PORTB @ 0xFF01, PORTC @ 0xFF02, CNT @ 0xFF03, J1 @ 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--) ; } // Initialise 82c55 with value in parameter void init8255(unsigned char c) { CNT=c; } // Set port A of 82c55 void setPortA(unsigned char v) { PORTA=v; } // Set port B of 82c55 void setPortB(unsigned char v) { PORTB=v; } // Set port C of 82c55 void setPortC(unsigned char v) { PORTC=v; } // Get port A of 82c55 unsigned char getPortA(void) { return PORTA; } // Get port B of 82c55 unsigned char getPortB(void) { return PORTB; } // Get port C of 82c55 unsigned char getPortC(void) { return PORTC; } // Get value of Jumper J1 on GPC(r) 324 unsigned char getJ1(void) { return J1; } // 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 c; 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 // Initialisation of PPI 8255. init8255(0x82); // PORT A and C in OUTPUT, PORT B in INPUT. puts("********************* Demo S1DEB9 **********************"); puts(""); puts("Shifts the lighting of a LED first to one direction then to the other one"); puts(""); puts("Set all Dips of DSW1 on ETI 324 ON."); for (;;) // Loop forever. { // Shift from red LEDs to yellow and green LEDs c=1; setPortC(0xff); // Clears Port C while(c) { setPortA(~c); c<<=1; // Delay to make the movement of the LED visible ritardo(); } c=1; setPortA(0xff); // Clears Port A while(c) { setPortC(~c); c<<=1; // Delay to make the movement of the LED visible ritardo(); } // Shift from yellow and green LEDs to red LEDs c=0x80; setPortA(0xff); // Clears Port A while(c) { setPortC(~c); c>>=1; // Delay to make the movement of the LED visible ritardo(); } c=0x80; setPortC(0xff); // Clears Port A while(c) { setPortA(~c); c>>=1; // Delay to make the movement of the LED visible ritardo(); } } }