C
cs181
Guest
Níže je uveden kód C pro práci s externí přerušení.
Počáteční hodnota na PORTC je 0;
Při přerušení dojde, že přírůstek PORTC o 1;
Použil jsem WinAVR převést c kód do hex kódu, potom načíst hex kód na čipu (AVR ATmega8) pro test.Hodnoty, na změnu PORTC náhodně při každém přerušení nastane.
Může mi někdo říct co je špatného na kód?Děkuju.
# Include <avr/io.h>
# Include <avr/signal.h>
# Include <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Povolit globální přerušení (str. 9)
SREG | = 0x80;
/ ** Režim spánku ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
int main (void)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Record tlačítko přerušení ** /
/ / Jakákoliv logická změna na int1 generuje přerušení
MCUCR | = 0x04;
/ / Zapne externí přerušení pin int1
GICR | = 0x80;
/ / Povolit globální přerušení (str. 9)
SREG | = 0x80;
/ ** Režim spánku ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
Počáteční hodnota na PORTC je 0;
Při přerušení dojde, že přírůstek PORTC o 1;
Použil jsem WinAVR převést c kód do hex kódu, potom načíst hex kód na čipu (AVR ATmega8) pro test.Hodnoty, na změnu PORTC náhodně při každém přerušení nastane.
Může mi někdo říct co je špatného na kód?Děkuju.
# Include <avr/io.h>
# Include <avr/signal.h>
# Include <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Povolit globální přerušení (str. 9)
SREG | = 0x80;
/ ** Režim spánku ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
int main (void)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Record tlačítko přerušení ** /
/ / Jakákoliv logická změna na int1 generuje přerušení
MCUCR | = 0x04;
/ / Zapne externí přerušení pin int1
GICR | = 0x80;
/ / Povolit globální přerušení (str. 9)
SREG | = 0x80;
/ ** Režim spánku ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)