/* Continue 0-ff counting loop. */ unsigned unite[10] = { 0xf41fffff /* 0 */, 0xff5fffff /* 1 */, 0xf19fffff /* 2 */, 0xf91fffff /* 3 */, 0xfa5fffff /* 4 */, 0xf83fffff /* 5 */, 0xf03fffff /* 6 */, 0xff1fffff /* 7 */, 0xf01fffff /* 8 */, 0xf81fffff /* 9 */ }; unsigned dizaine[10] = { 0xffe0bfff, 0xffebffff, 0xffe63fff, 0xffe27fff, 0xffe97fff, 0xfff07fff, 0xfff03fff, 0xffe3ffff, 0xffe03fff, 0xffe07fff }; unsigned centaine[10] = { 0xffffc17f, 0xffffd7ff, 0xffffcc7f, 0xffffc4ff, 0xffffd2ff, 0xffffe0ff, 0xffffe07f, 0xffffc7ff, 0xffffc07f, 0xffffc0ff }; unsigned millier[10] = { 0xffffff82, 0xffffffaf, 0x0fffff98, 0xffffff89, 0xffffffa5, 0xffffffc1, 0xffffffc0, 0xffffff8f, 0xffffff80, 0xffffff81 }; while( 1 ) { unsigned value = 0x7FFFFFFF; // 28 bits == AFF3 | AFF2 | AFF1 | AFF0 value = 0x0; usleep(1000000); /* * 0x7 = 0111 ; 0xC = 1100 => 0100 * 0xB = 1011 ; 0xC = 1100 => 1000 * 0x1 = 0001 ; 0xE = 1110 => 0000 * 0xf41fffff * & 0xffe0bfff * & 0xffffc17f * & 0xffffffc1 * ------------ * 0xf4008141 */ int i; for (i = 0; i < 10; ++i) { value = unite[i] & dizaine[i] & centaine[i] & millier[i]; IOWR_ALTERA_AVALON_PIO_DATA(AFFICHEUR_SEGMENT_BASE, value); usleep(500000); }