Add ES/Lab/Lab8/7SegUpDown-Switch.c

This commit is contained in:
aadit 2025-09-25 12:09:42 +05:30
parent ea1ba0610e
commit d0d8e949e2

View file

@ -0,0 +1,47 @@
#include <LPC17xx.h>
int main(void){
unsigned long i, j, n;
unsigned int x;
unsigned long number = 0;
unsigned long count = 0;
unsigned char seven_seg[16] = {
0x3F, 0x06, 0x5B, 0x4F,
0x66, 0x6D, 0x7D, 0x07,
0x7F, 0x6F, 0x77, 0x7C,
0x39, 0x5E, 0x79, 0x71
};
LPC_PINCON->PINSEL0 = 0;
LPC_GPIO0->FIODIR |= (0xFF << 4);
LPC_PINCON->PINSEL3 = 0;
LPC_GPIO1->FIODIR |= (0x0F << 23);
LPC_GPIO0->FIODIR &= ~(1 << 21);
while (1) {
n = number;
x = LPC_GPIO0->FIOPIN & (1 << 21);
for (i = 0; i < 4; i++) {
LPC_GPIO1->FIOCLR = (0x0F << 23);
LPC_GPIO1->FIOSET = (i << 23);
LPC_GPIO0->FIOCLR = (0xFF << 4);
LPC_GPIO0->FIOSET = ((unsigned long)seven_seg[n % 10] << 4);
n = n / 10;
for (j = 0; j < 1000; j++);
LPC_GPIO0->FIOCLR = (0xFF << 4);
}
count++;
if (count == 1000) {
count = 0;
if (x) {
number = (number + 1) % 10000;
} else {
if (number == 0) number = 9999;
else number--;
}
}
}
}