adc_conv:
sbic ADCSRA, ADSC
rjmp adc_conv
У Вас результат читается сразу после запуска АЦП.
Код: Выделить всё
.def temp=R16
.def del=R17
.def del2=R18
.cseg
.org 0
ldi temp,high(RamEnd)
out SPH,temp
ldi temp,low(RamEnd)
out SPL,temp
ldi temp,0b00100000
out ADMUX,temp
ldi temp,255
out DDRB,temp
Loop:
ldi temp,0b11000111
out ADCSRA,temp
rcall Delay
in temp, ADCH
cpi temp, 192
brpl two
cpi temp, 128
brpl red
cpi temp, 64
brpl yellow
cpi temp, 0
brpl no
Cont:
ldi temp,0b11000111
out ADCSRA,temp
rjmp Loop
Delay:
ldi del,128
ldi del2,128
Loop1:
dec del
brne Loop1
dec del2
brne Loop1
ret
red:
ldi temp,0b00000001
out PortB,temp
rjmp Cont
yellow:
ldi temp,0b00000010
out PortB,temp
rjmp Cont
two:
ldi temp,0b00000011
out PortB,temp
rjmp Cont
no:
ldi temp,0
out PortB,temp
rjmp Cont
Так давай глянем, где смотреть то, протеусопроект выложи хоть.gauss писал(а):Проверяю в железе, сейчас смоделирую в протеусе
В протеусе работает точно так же, в чем ошибка?!![]()
и естественно вместо brpl использовать brcc (перейти если С очищен) либо brcs(перейти если С установлен)C: Устанавливается если абсолютное значение K больше абсолютного значения Rd, в ином случае очищается
Код: Выделить всё
clr ZH
ldi ZL,0x60
st tmp,Z+Код: Выделить всё
LD tmp,Z+Код: Выделить всё
st Z,r0 ; сохранить то, что было в r0 по адресу содержащемуся в Z
ld r0,Z ; загрузить в r0 то, что хранится в ячейке адрес которой был в Z