Gast
#1498522
Hey, bin erst seit einigen Tagen dran mit C-Programmierung und Assembler und so. Komme da irgendwie null weiter, die Aufgabe übersteigt einfach mein Fassungsvermögen daher brauche ich eure Hilfe. Ich will ein C-Programm schreiben, dass an der Hardware die 8 vorhandenen LEDs nacheinander ein und ausgeschalten werden, also je eine LED leuchtet für 1 sek und wird dann ausgeschalten danach geht die rechte LED daneben an, und so weiter, nach der 8 springt er wieder zu ersten. Bisher habe ich mit nem Freund das hier ausgearbeitet aber so wirklich funktionieren tut es noch nicht. ********************************* #include <LPC214X.H> void t0isr(void) __irq; unsigned int LEDStand; int main(void) { IODIR1 = 0xFF0000; /* Pin 1.16 bis Pin 1.23 als Ausgang setzen */ T0PR = 12500; /* Prescaler auf Millisekunden einstellen */ T0TCR = 2; /* Timer reset*/ T0MCR = 3; /* Bei Gleichheit Takt und T0MR0 = IR und 0 setzen*/ T0MR0 = 1000; /* Periodendauer wird auf 1 Sec gesetzt */ T0TCR = 1; /* Timer aktivieren */ VICVectAddr0 = (unsigned long) t0isr; /* ISR Adresse */ VICVectCntl0 = 0x24; /*aktiv für Kanal 4 (=Timer0) */ VICIntEnable = 0x10; /* IR für Kanal 4 erlauben */ LEDStand = 0xFF1000; while(1) {;} /* nichts tun in der Hauptschleife */ } void t0isr (void) __irq{ if(LEDStand == 0xFF1000){ IOCLR1 = 10000; } IOCLR1 = LEDStand; /*LED ausschalten */ LEDStand--; IOSET1 = LEDStand; /*LED enschaltren*/ if (LEDStand == 10000) { LEDStand = 0xFF1000; } T0IR = 0x10; /* Damit Timer weiß das IR erfolgte*/ VICVectAddr = 0; /* Damit VIC weiß das IR erfolgte*/ }