Здравствуйте. Не удается заставить работать такую программу:
(При нажатии 2-й кнопки на STK500 содержимое ADCH/L должно выводиться на диоды, с интервалом ~1cек.)
Код
.include "m8535def.inc"
.org 0
rjmp RESET
.org ADCCaddr
rjmp interrupt
.MACRO output
com @1
out @0, @1
com @1
.ENDMACRO
RESET:
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16
rcall init_ports
rcall init_adc
sei
MAIN:
rjmp MAIN
pdelay:
pdelay1:
ldi r17, 100
pdelay2:
ldi r18, 100
pdelay3:
dec r18
brne pdelay3
dec r17
brne pdelay2
dec r19
brne pdelay1
ret
init_adc:
push r16
ldi r16, (1 << ADEN)|(1 << ADIE)|(1 << ADFR)|(1 << ADPS0)|(1 << ADPS2)
out ADCSRA, r16
ldi r16, 2
out ADMUX, r16
sbi ADCSRA, ADSC
pop r16
ret
init_ports:
ldi r16, 0xFF
out DDRB, r16
clr r16
out DDRA, r16
out PORTA, r16
ret
interrupt:
in r20, ADCL
in r21, ADCH
output PORTB, r20
rcall pdelay
output PORTB, r21
rcall pdelay
ret
При запуске сначала загораются все 8 диодов, а затем через ~1 сек младшие два, которые так и застывают и при нажатии кнопок ничего не меняется.
Помогите разобраться в чем здесь проблема. Заранее спасибо.