Страница 1 из 1

Помогите с кнопкой на ресет на ATTiny2313

Добавлено: Вс авг 01, 2010 17:28:35
Pingvinus
Всем привет!
Допустим мне нужно при нажатии на кнопку загорался второй светодиод, а первых погас. На старичке обучалки 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 и на своем микроконтроллере но всеравно не работает так как мне нужно. Помогите...

Re: Помогите с кнопкой на ресет на ATTiny2313

Добавлено: Вс авг 01, 2010 20:39:20
AVL
Пиши более внятно и грамотно, что тебе надо, а то люди смотрят на такую размазню и никто не отвечает.

Re: Помогите с кнопкой на ресет на ATTiny2313

Добавлено: Вс авг 01, 2010 23:16:20
Danko
первое: длинные программы оформляются вложением.

А второе: название ветки вопрос по аппаратной части, а внутри по програмной. :(

Pingvinus, отредактируйте свое сообщение иначе модератор закроет его и Вы вообще никаких ответов не получите.

Re: Помогите с кнопкой на ресет на ATTiny2313

Добавлено: Пн авг 02, 2010 20:45:55
GP1
а как это вообще должно работать?
стек обычно инициализируют в начале программы, а никак не после разрешения прерываний.
навскидку, программа будет зацикливать либо на "аа", либо на "bb"
где опрос кнопки?
где начальное значение r16? которое потом инкрементируется.
грузить в регистр 0, лучше командой clr