C
cs181
Guest
Ниже приведен код C для обработки внешних прерываний.
Первоначальное значение PORTC равен 0;
Когда это происходит прерывание прирост PORTC на 1;
Я использовал WinAVR для преобразования кода на C шестнадцатеричный код, а затем загружены шестнадцатеричный код на чипе (AVR ATmega8) для испытаний.Значения на PORTC меняться в произвольном порядке каждый прерывание происходит.
Может кто-нибудь сказать мне Whats Wrong с кодом?Спасибо.
# включить <avr/io.h>
# включить <avr/signal.h>
# включить <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Включить глобального прерывания (стр. 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
п (VOID)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Кнопку записи прервать ** /
/ / Любые логические изменения INT1 генерирует прерывание
MCUCR | = 0x04;
/ / Разрешение внешнего прерывания INT1 Pin
GICR | = 0x80;
/ / Включить глобального прерывания (стр. 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
Первоначальное значение PORTC равен 0;
Когда это происходит прерывание прирост PORTC на 1;
Я использовал WinAVR для преобразования кода на C шестнадцатеричный код, а затем загружены шестнадцатеричный код на чипе (AVR ATmega8) для испытаний.Значения на PORTC меняться в произвольном порядке каждый прерывание происходит.
Может кто-нибудь сказать мне Whats Wrong с кодом?Спасибо.
# включить <avr/io.h>
# включить <avr/signal.h>
# включить <avr/sleep.h>
SIGNAL (SIG_INTERRUPT1)
(
PORTC = PORTC 1;
/ / Включить глобального прерывания (стр. 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)
п (VOID)
(
DDRC | = 0xFF;
PORTC = 0x00;
/ ** Кнопку записи прервать ** /
/ / Любые логические изменения INT1 генерирует прерывание
MCUCR | = 0x04;
/ / Разрешение внешнего прерывания INT1 Pin
GICR | = 0x80;
/ / Включить глобального прерывания (стр. 9)
SREG | = 0x80;
/ ** Sleep Mode ** /
set_sleep_mode (SLEEP_MODE_IDLE);
sleep_mode ();
)