Доброго времени суток, уважаемые форумчане!
Прошу о помощи в таком вопросе - как настроить прерывания???
Контроллер - мега 16а
схема - на макетке распаяны через сопротивление светодиоды на порт А, на выводы INT0, INT1, int2 и ресет - кнопки на землю тактовые
дополнительно - светодиод на одной из лап порта С, как индикатор включения - при инициализации вывожу тудой 1, и он горит, или если чего-то не так - переставляю эти строчки в другую часть кода и смотрю, дошел ли процесс до них
задача - продвинуть хелловорд так, чтобы по нажатию клавиши на INT0 значения на светодиодах порта А "замерзали", по нажатию INT1 - выводили значение счетчика нажатий (регистра 21), ну 3 кнопка на INT 2 вырубала камень до лучших времен.
ПРОБЛЕМА: не работают кнопки. Тоесть цикл А выполняется, светики мигают и больше ничего не происходит(((
ПОМОГИТЕ
(пишу в атмел студио 4 и программатор аврисп мк2 клон)
/код прилагаю/
//си не предлагать//
.include "D:\all\AVR-projects\m16adef.inc"
.cseg
.org 0
jmp RESET
.org INT0addr ; External Interrupt Request 0
;reti
rjmp ext_int0
.org INT1addr ; External Interrupt Request 1
;reti
rjmp ext_int1
.org OC2addr ; Timer/Counter2 Compare Match
reti
.org OVF2addr ; Timer/Counter2 Overflow
reti
.org ICP1addr ; Timer/Counter1 Capture Event
reti
.org OC1Aaddr ; Timer/Counter1 Compare Match A
reti
.org OC1Baddr ; Timer/Counter1 Compare Match B
reti
.org OVF1addr ; Timer/Counter1 Overflow
reti
.org OVF0addr ; Timer/Counter0 Overflow
reti
.org SPIaddr ; Serial Transfer Complete
reti
.org URXCaddr ; USART, Rx Complete
reti
.org UDREaddr ; USART Data Register Empty
reti
.org UTXCaddr ; USART, Tx Complete
reti
.org ADCCaddr ; ADC Conversion Complete
reti
.org ERDYaddr ; EEPROM Ready
reti
.org ACIaddr ; Analog Comparator
reti
.org TWIaddr ; 2-wire Serial Interface
reti
.org INT2addr ; External Interrupt Request 2
reti
rjmp ext_int2
.org OC0addr ; Timer/Counter0 Compare Match
reti
.org SPMRaddr
reti
RESET:
ldi r16, 0x04
out SPL,r16
ldi r16, 0x5f
out SPH,r16
ldi r16,0xff
out DDRC,r16
ldi r16,0x00
out DDRD,r16
ldi r16,0x00
out DDRB,r16
ldi r16,0xff
out PortD,r16
ldi r16,0xff
out DDRa,r16
in r16,MCUCR
sbr r16,(1<<ISC01)|(0<<ISC00)|(0<<ISC10)|(1<<ISC11)
out MCUCR,r16
in r16, gifr
sbr r16, (0<<INTF0)|(0<<INTF1)|(0<<INTF1)
out gifr, r16
ldi r16, 0x33
OUT GICR, r16
in r16,MCUCR
sbr r16,(1<<sm2)|(1<<sm1)|(1<<sm0)
out MCUCR,r16
ldi r16,0xff
out portc,r16
ldi r17, 0x02
ldi r18, 0xff
ldi r21, 0x00
sei
a:
inc r21
inc r18
out porta, r18
ldi r20, 0x00
ldi r21, 0x00
ldi r22, 0x0f
ba:
dec r20
brne ba
dec r21
brne ba
dec r22
brne ba
rjmp a
EXT_INT0:
r: jmp r
reti
EXT_INT1:
out portc, r21
ra: jmp ra
reti
EXT_INT2:
sleep
in r16,MCUCR
sbr r16,(0<<se)
out MCUCR,r16
reti