#include #include #include #include #include #include #include "system.h" #define msleep(msec) usleep(1000*msec); pio_write (unsigned int data) { IOWR (PIO_0_BASE, 0, data); } static void show (int v) { // int to seven segment lookup: MSB dp g f e d c b a LSB const uint8_t lookup[10] = { 0x3F, 0x6, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7, 0x7F, 0x6F }; uint8_t pio = 0; // show negative with DP if (v < 0) { pio |= 0x80; v = -v; } if (v > 9) v = 9; pio |= lookup[v]; pio_write (pio); } int main (void) { int i; printf ("Working...\n"); for (;;) { for (i=-9;i<10;++i) { printf("Showing %d\n",i); show(i); msleep(1000); } } }