C
cs181
Guest
Nedenfor er C koden for håndtering av en ekstern avbrudd.
Den opprinnelige verdien på PORTC er 0;
Når et avbrudd oppstår det øke PORTC med 1;
Jeg brukte WinAVR å konvertere c koden i hex kode, og deretter lastet heksadesimalkoden på brikken (AVR ATMEGA8) for test.Verdiene på PORTC endre tilfeldig hvert et avbrudd oppstår.
Kan noen fortelle meg hva galt med koden?Takk.
# include <avr/io.h>
# include <avr/signal.h>
# include <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Enable global interrupt (side 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
int main (void)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Opptaksknappen avbryte ** /
/ / Alle logisk endring på INT1 genererer et avbrudd
MCUCR | = 0x04;
/ / Enable external avbryte pin INT1
GICR | = 0x80;
/ / Enable global interrupt (side 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
Den opprinnelige verdien på PORTC er 0;
Når et avbrudd oppstår det øke PORTC med 1;
Jeg brukte WinAVR å konvertere c koden i hex kode, og deretter lastet heksadesimalkoden på brikken (AVR ATMEGA8) for test.Verdiene på PORTC endre tilfeldig hvert et avbrudd oppstår.
Kan noen fortelle meg hva galt med koden?Takk.
# include <avr/io.h>
# include <avr/signal.h>
# include <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Enable global interrupt (side 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
int main (void)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Opptaksknappen avbryte ** /
/ / Alle logisk endring på INT1 genererer et avbrudd
MCUCR | = 0x04;
/ / Enable external avbryte pin INT1
GICR | = 0x80;
/ / Enable global interrupt (side 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)