Помогите с кнопкой на ресет на ATTiny2313
Добавлено: Вс авг 01, 2010 17:28:35
Всем привет!
Допустим мне нужно при нажатии на кнопку загорался второй светодиод, а первых погас. На старичке обучалки http://radiokot.ru/start/mcu_fpga/avr/13/ я нашел как можно переключаться между массивами. Загорается только первый светодиод Вот моя программа:
.include "C:\Program Files1\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn2313def.inc"
.cseg
.org 0
;============
rjmp RESET
rjmp INT_0
rjmp INT_1
rjmp TIM1_CAPT
rjmp TIM1_COMPA
rjmp TIM1_OVF
rjmp TIM0_OVF
rjmp USART0_RXC
rjmp USART0_DRE
rjmp USART0_TXC
rjmp ANA_COMP
rjmp PCINT_0
rjmp TIMER1_COMPB
rjmp TIMER0_COMPA
rjmp TIMER0_COMPB
rjmp USI_START
rjmp USI_OVERFLOW
rjmp EE_READY
rjmp WDT_OVERFLOW
rjmp PCINT_1
rjmp PCINT_2
;RESET:
INT_0: reti
INT_1:reti
TIM1_CAPT: reti
TIM1_COMPA: reti
TIM1_OVF: reti
TIM0_OVF: reti
USART0_RXC: reti
USART0_DRE: reti
USART0_TXC: reti
ANA_COMP: reti
PCINT_0: reti
TIMER1_COMPB: reti
TIMER0_COMPA: reti
TIMER0_COMPB: reti
USI_START: reti
USI_OVERFLOW: reti
EE_READY: reti
WDT_OVERFLOW: reti
PCINT_1: reti
PCINT_2: reti
;==========
reset:
ldi r17,0
ldi r18,0
zadershka:
dec r17
brne zadershka
dec r18
brne zadershka
inc r16
sei
;======
ldi r17,0b11111111
out ddrb,r17
ldi r17,ramend
out spl,r17
;==================
;Na4alo
;================
andi r16,0b00000010
cpi r16,0b00000000
brne a
ldi r16,0b00000001
;-------------------------------------------
a:
cpi r16,0b00000001
brne b
ldi r17,0è00000001
out portb,r17
aa: rjmp aa
;---------------------------------
b:
ldi r17,0b00000010
out portb,r17
bb: rjmp bb
Это все я проверял в Proteuse и на своем микроконтроллере но всеравно не работает так как мне нужно. Помогите...
Допустим мне нужно при нажатии на кнопку загорался второй светодиод, а первых погас. На старичке обучалки http://radiokot.ru/start/mcu_fpga/avr/13/ я нашел как можно переключаться между массивами. Загорается только первый светодиод Вот моя программа:
.include "C:\Program Files1\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn2313def.inc"
.cseg
.org 0
;============
rjmp RESET
rjmp INT_0
rjmp INT_1
rjmp TIM1_CAPT
rjmp TIM1_COMPA
rjmp TIM1_OVF
rjmp TIM0_OVF
rjmp USART0_RXC
rjmp USART0_DRE
rjmp USART0_TXC
rjmp ANA_COMP
rjmp PCINT_0
rjmp TIMER1_COMPB
rjmp TIMER0_COMPA
rjmp TIMER0_COMPB
rjmp USI_START
rjmp USI_OVERFLOW
rjmp EE_READY
rjmp WDT_OVERFLOW
rjmp PCINT_1
rjmp PCINT_2
;RESET:
INT_0: reti
INT_1:reti
TIM1_CAPT: reti
TIM1_COMPA: reti
TIM1_OVF: reti
TIM0_OVF: reti
USART0_RXC: reti
USART0_DRE: reti
USART0_TXC: reti
ANA_COMP: reti
PCINT_0: reti
TIMER1_COMPB: reti
TIMER0_COMPA: reti
TIMER0_COMPB: reti
USI_START: reti
USI_OVERFLOW: reti
EE_READY: reti
WDT_OVERFLOW: reti
PCINT_1: reti
PCINT_2: reti
;==========
reset:
ldi r17,0
ldi r18,0
zadershka:
dec r17
brne zadershka
dec r18
brne zadershka
inc r16
sei
;======
ldi r17,0b11111111
out ddrb,r17
ldi r17,ramend
out spl,r17
;==================
;Na4alo
;================
andi r16,0b00000010
cpi r16,0b00000000
brne a
ldi r16,0b00000001
;-------------------------------------------
a:
cpi r16,0b00000001
brne b
ldi r17,0è00000001
out portb,r17
aa: rjmp aa
;---------------------------------
b:
ldi r17,0b00000010
out portb,r17
bb: rjmp bb
Это все я проверял в Proteuse и на своем микроконтроллере но всеравно не работает так как мне нужно. Помогите...