robo-man
19.07.2009, 15:54
Hallo!! Ich hab ein Problem. Ich möchte das der Timer beim überlauf die konstante [a] um einen Wert erhöht. Das Problem ist aber, dass die konstante immer auf 0 bleibt, weil bei mir PORTC=0x05; die ganze zeit als ausgang ist und sich nichts ändert. Hat vielleicht jemand eine Ahnung :?: , was falsch in meinem Programm ist? Weil ich denke das Programm hat keinen Fehler.
Danke im Vorraus!!!
#define F_CPU 3686400
#include <avr\io.h>
#include <avr/interrupt.h>
#include <util\delay.h>
uint8_t a;
ISR (TIMER1_OVF_vect)
{
a++;
}
int main (void)
{
TCCR1A=0x40;
TCCR1B=0x04;
TCNT1=0x0FFF;
DDRC=0x3F;
SREG=0x80;
TIMSK=0x04;
a=0;
sei();
while (true)
{
switch (a)
{
case 0: PORTC=0x05;
break;
case 1: PORTC=0x01;
break;
case 2: PORTC=0x02;
break;
case 3: PORTC=0x04;
break;
case 4: a=0;
break;
default: PORTC=0x07 ;
break;
}
}
return 0;
}
Danke im Vorraus!!!
#define F_CPU 3686400
#include <avr\io.h>
#include <avr/interrupt.h>
#include <util\delay.h>
uint8_t a;
ISR (TIMER1_OVF_vect)
{
a++;
}
int main (void)
{
TCCR1A=0x40;
TCCR1B=0x04;
TCNT1=0x0FFF;
DDRC=0x3F;
SREG=0x80;
TIMSK=0x04;
a=0;
sei();
while (true)
{
switch (a)
{
case 0: PORTC=0x05;
break;
case 1: PORTC=0x01;
break;
case 2: PORTC=0x02;
break;
case 3: PORTC=0x04;
break;
case 4: a=0;
break;
default: PORTC=0x07 ;
break;
}
}
return 0;
}