[code]#include <default.h>
register unsigned char x asm(“r18”);
ISR(TIMER2_COMPA_vect, ISR_NAKED )
{
if(–x==0)
{
x=40;
reti();
}
if (x<21)
{
PIND=(1<<3);
PINB=(1<<3);
}
reti();
}
int main(void)
{
DDRD=(1<<3);
DDRB=(1<<3);
DDRC=0;
PORTD=255;
PORTC=255;
PORTB=~(1<<3);
x=1;
OCR2A=25;
TIMSK2=(1<<OCIE2A); //mám nastavovat aji OCIE2B?? proč to nedělá chybu při |= respektivě při požití OR?
TCCR2A=(0<<COM2A1)|(0<<COM2A0)|(0<<COM2B1)|(0<<COM2B0)|(1<<WGM21)|(0<<WGM20);
TCCR2B=(0<<WGM22)|(0<<CS22)|(0<<CS21)|(1<<CS20);
sei();
while(1);
return 0;
}
[/code]
Tohle prostě šlape (viz přiložený obrázek). Přikládám i HEX soubor, který, když nasypeš pro procesoru, tak by měl běžet.
Test.hex (631 Bytes)