/ Published in: C
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
//----------------------------------------------------------------------------- // File: OsrUsbFx2_io.c // Contents: Exercise I/O on OSR USB-FX2 board. // // Route switches to the bar LEDs. // 7-seg LED just 'spins', displaying a pattern. // Uses EzUsb.LIB. // // Tools: // Compiled using Keil uVision (.uv2) on Windows XP. // Expect no errors or warnings. // Download the resulting .hex file (OsrUsbFx2_io.hex) using a utility like EzMr. // Remove OSR USB-FX2 eeprom for EzMr to connect to it. // // Mapping of Cypress port I/O to OSR USB-FX2 board: // Port A is the switches, SW1. // PA0 is on the right. // PA7 is on the left. // 1 is OFF, 0 is ON. // Port B is the 7-segment display, DN1. // ==0== // # # // 6 1 // # # // ==5== // # # // 4 2 // # # // ==7== (3) // // Port D is the 10 - LED bar display, DN2. 1 is OFF, 0 is ON. // 0 - nc // 1 - nc // 2 - PD4 // 3 - PD3 // 4 - PD2 // 5 - PD1 // 6 - PD0 // 7 - PD7 // 8 - PD6 // 9 - PD5 // //----------------------------------------------------------------------------- #include "fx2.h" // needed by fx2regs.h #include "fx2regs.h" // needed for port identifiers such as IOB etc. main() { // Set output-enables for ports A, B and D. OEA = 0; // all inputs. OEB = 0xFF; // all outputs. OED = 0xFF; // all outputs. while (TRUE) { static BYTE pattern7Seg[] = { 1, 2, 0x04, 0x80, 0x10, 0x40 }; // Create table for 7-seg pattern. static BYTE x = 0; IOB = ~pattern7Seg[x]; // Write a table element to 7-seg display. x++; // Next table element. if ( x>=sizeof( pattern7Seg ) ) { x=0; } // wrap-around. // Route swtiches to corresponding LED. // Note that the order of the switches and the order of the LEDs isn't intuitive. // Route such that the left switch controls the top LED and the right swtich controls the bottom LED. PD4 = PA7; PD3 = PA6; PD2 = PA5; PD1 = PA4; PD0 = PA3; PD7 = PA2; PD6 = PA1; PD5 = PA0; EZUSB_Delay(100); } // while. } // main.