Народ помогите пожалуйста, проблема с интерпатом INT0
Добавлено: Чт окт 16, 2014 22:38:09
Друзья помогите !!! У меня подключены к порту Б 8 светодиодов, и задача в том что бы что бы они моргали по очередности с применением интерапта. При нажатии кнопки который подключен к pind2 все работает они моргают, но проблема в том что нужно чтобы они останавливали моргать при повторном нажатии , а при последующем продолжали. Буду при много благодарен !!!
.ORG 0x0000
rjmp RESET
.ORG 0x0001
rjmp INT_0
RESET:
ldi R16,0b11111111
out DDRB,R16
ldi R16,0b00000000
out PORTB,R16
ldi r16, RAMEND
out SPL,r16
ldi R16,0b01000000
out GIMSK,R16
ldi r16,0b00000011
out MCUCR,r16
sei
MAIN:
nop
nop
rjmp MAIN
timer:
ldi r16, 255
ldi r17,100
ldi r18, 0
loop:
subi r16,1
sbci r17,0
sbci r18,0
brcc loop
ret
led_switch:
ldi R16,0b00000001
out PORTB,R16
rcall timer
ldi R16,0b00000010
out PORTB,R16
rcall timer
ldi R16,0b00000100
out PORTB,R16
rcall timer
ldi R16,0b00001000
out PORTB,R16
rcall timer
ldi R16,0b00010000
out PORTB,R16
rcall timer
ldi R16,0b00100000
out PORTB,R16
rcall timer
ldi R16,0b01000000
out PORTB,R16
rcall timer
ldi R16,0b10000000
out PORTB,R16
rcall timer
rjmp led_switch
INT_0:
sbic portb,0
rjmp mi_ban
rjmp led_switch
reti
ааа:
ldi R16, 0b00000000
out PORTB,R16
reti
.ORG 0x0000
Код: Выделить всё
.ORG 0x0001
rjmp INT_0
RESET:
ldi R16,0b11111111
out DDRB,R16
ldi R16,0b00000000
out PORTB,R16
ldi r16, RAMEND
out SPL,r16
ldi R16,0b01000000
out GIMSK,R16
ldi r16,0b00000011
out MCUCR,r16
sei
MAIN:
nop
nop
rjmp MAIN
timer:
ldi r16, 255
ldi r17,100
ldi r18, 0
loop:
subi r16,1
sbci r17,0
sbci r18,0
brcc loop
ret
led_switch:
ldi R16,0b00000001
out PORTB,R16
rcall timer
ldi R16,0b00000010
out PORTB,R16
rcall timer
ldi R16,0b00000100
out PORTB,R16
rcall timer
ldi R16,0b00001000
out PORTB,R16
rcall timer
ldi R16,0b00010000
out PORTB,R16
rcall timer
ldi R16,0b00100000
out PORTB,R16
rcall timer
ldi R16,0b01000000
out PORTB,R16
rcall timer
ldi R16,0b10000000
out PORTB,R16
rcall timer
rjmp led_switch
INT_0:
sbic portb,0
rjmp mi_ban
rjmp led_switch
reti
ааа:
ldi R16, 0b00000000
out PORTB,R16
reti