Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <alt_types.h>
- #include <altera_avalon_pio_regs.h>
- #include <io.h>
- #include <sys/alt_irq.h>
- #include <system.h>
- #include <sys/alt_alarm.h>
- #define A 1
- #define B 2
- #define C 4
- #define D 8
- #define E 16
- #define F 32
- #define G 64
- int lastState = 0;
- int startTime = 0;
- int updateTimeLeds = 0;
- int updateTimeHex = 0;
- int main() {
- while (1) {
- int state = IORD(SW_SLIDERS_BASE, 0);
- state = state & (32 | 16 | 8 | 4 | 2 | 1);
- if (lastState != state) {
- printf("up\n");
- startTime = alt_nticks();
- switch (state) {
- case 0:
- updateTimeLeds = 2;
- updateTimeHex = 1;
- break;
- case 1:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- case 2:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- case 4:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- case 8:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- case 16:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- case 32:
- updateTimeLeds = 1;
- updateTimeHex = 2;
- break;
- default:
- updateTimeLeds = 3;
- updateTimeHex = 1;
- break;
- }
- //shouldRefresh = 1;
- }
- if (((alt_nticks() - startTime)
- > (updateTimeLeds * alt_ticks_per_second()))) {
- switch (state) {
- case 0:
- IOWR(LEDS_BASE, 0, 0);
- break;
- case 1:
- IOWR(LEDS_BASE, 0, state);
- break;
- case 2:
- IOWR(LEDS_BASE, 0, state);
- break;
- case 4:
- IOWR(LEDS_BASE, 0, state);
- break;
- case 8:
- IOWR(LEDS_BASE, 0, state);
- break;
- case 16:
- IOWR(LEDS_BASE, 0, state);
- break;
- case 32:
- IOWR(LEDS_BASE, 0, state);
- break;
- default:
- IOWR(LEDS_BASE, 0, 32);
- break;
- }
- }
- if (((alt_nticks() - startTime)
- > (updateTimeHex * alt_ticks_per_second()))) {
- //shouldRefresh = 0;
- IOWR(HEX_BASE, 0, 0);
- IOWR(HEX_BASE, 1, 0);
- IOWR(HEX_BASE, 2, 0);
- switch (state) {
- case 0:
- break;
- case 1:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, A | B | G | E | D);
- break;
- case 2:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, A | B | G | C | D);
- break;
- case 4:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, F | G | C | B);
- break;
- case 8:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, F | G | C | B);
- break;
- case 16:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, A | F | G | C | D);
- break;
- case 32:
- IOWR(HEX_BASE, 0, A | F | G | C | D);
- IOWR(HEX_BASE, 1, A | B | C);
- break;
- default:
- IOWR(HEX_BASE, 0, E | G);
- IOWR(HEX_BASE, 1, E | G);
- IOWR(HEX_BASE, 2, A | F | G | E | D);
- break;
- }
- }
- lastState = state;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement