#include "displays.h" #include "address_mapping.h" #include "buttons.h" #include "interrupt_controller.h" #include "timers.h" #include "microBlaze.h" unsigned int currentButtonsState = 0; unsigned int prevButtonsState = 0; unsigned int blinker = 0b0001000; unsigned int blinkerOnOff = 0; unsigned int application_state = 0; unsigned char index_pos = 0; int main() { resetDisplays(); initTimers(); initController(); enableMicroBlazeInterrupts(); enableTimers(); while (1 == 1) { switch (application_state) { case 0: *LED_DATA = 1 << application_state; if (currentButtonsState != prevButtonsState) { if (((currentButtonsState & MIDDLE)!= (prevButtonsState & MIDDLE)) && ((currentButtonsState & MIDDLE) != 0)) application_state++; if (((currentButtonsState & LEFT) != (prevButtonsState & LEFT)) && ((currentButtonsState & LEFT) != 0)) if (index_pos< 7) index_pos++; if (((currentButtonsState & RIGHT) != (prevButtonsState & RIGHT)) && ((currentButtonsState & RIGHT) != 0)) if (index_pos > 0) index_pos--; prevButtonsState = currentButtonsState; } *((unsigned int *)(SEVEN_SEGMENT_DISPLAY_BASE + index_pos* 4)) = blinker & blinkerOnOff; break; case 1: *LED_DATA = 1 << application_state; if (currentButtonsState != prevButtonsState) { if (((currentButtonsState & MIDDLE)!= (prevButtonsState & MIDDLE))&& ((currentButtonsState & MIDDLE) != 0)) application_state++; if (((currentButtonsState & RIGHT) != (prevButtonsState & RIGHT)) && ((currentButtonsState & RIGHT) != 0)) if (index_pos< 7) index_pos++; if (((currentButtonsState & LEFT) != (prevButtonsState & LEFT)) && ((currentButtonsState & LEFT) != 0)) if (index_pos > 0) index_pos--; prevButtonsState = currentButtonsState; } *((unsigned int *)(SEVEN_SEGMENT_DISPLAY_BASE + index_pos* 4)) = blinker & blinkerOnOff; break; case 2: *LED_DATA = 1 << application_state; if (currentButtonsState != prevButtonsState) { if (((currentButtonsState & MIDDLE) != (prevButtonsState & MIDDLE)) && ((currentButtonsState & MIDDLE) != 0)) application_state++; if (((currentButtonsState & UP) != (prevButtonsState & UP)) && ((currentButtonsState & UP) != 0)) if (index_pos< 7) index_pos++; if (((currentButtonsState & DOWN) != (prevButtonsState & DOWN)) && ((currentButtonsState & DOWN) != 0)) if (index_pos> 0) index_pos--; prevButtonsState = currentButtonsState; } *((unsigned int *)(SEVEN_SEGMENT_DISPLAY_BASE + index_pos* 4)) = blinker & blinkerOnOff; break; case 3: *LED_DATA = 1 << application_state; if (currentButtonsState != prevButtonsState) { if (((currentButtonsState & MIDDLE) != (prevButtonsState & MIDDLE)) && ((currentButtonsState & MIDDLE) != 0)) application_state=0; if (((currentButtonsState & DOWN) != (prevButtonsState & DOWN)) && ((currentButtonsState & DOWN) != 0)) if (index_pos< 7) index_pos++; if (((currentButtonsState & UP) != (prevButtonsState & UP)) && ((currentButtonsState & UP) != 0)) if (index_pos> 0) index_pos--; prevButtonsState = currentButtonsState; } *((unsigned int *)(SEVEN_SEGMENT_DISPLAY_BASE + index_pos* 4)) = blinker & blinkerOnOff; break; default: break; } } }