Страница 1 из 1
Проблемы с RamEnd
Добавлено: Ср май 09, 2012 12:07:25
genadijs2009
добрый день
avr studio ругаетса : Operand(s) out of range in 'ldi r16,0x45f'
на строку : ldi Temp,RamEnd
atmega 8
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 12:26:44
masterpc
Вы скорее всего пытаетесь загрузить в 8-ми битный регистр больше чем он может вместить.
Re: проблемы с RamEnd
Добавлено: Ср май 09, 2012 12:40:22
genadijs2009
так выгледет програма, взятая со обучалке.
.include "m8def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg
.org 0
ldi Temp,RamEnd ;инициализация стека
out SPL,Temp
ldi Temp,0b11111111 ;настройка портов
out DDRB,Temp
Begin: ldi Temp,0b00000001 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b00000010 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b00000100 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b00001000 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b00010000 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b00100000 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b01000000 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
ldi Temp,0b10000000 ;вывод на индикацию
rcall Delay ;вызов подпрограммы задержки
rjmp Begin ;поехали по новой!
;****************************************************
;Задержка
Delay: out PortB,Temp
ldi Temp1,0
ldi Temp2,0
ldi Temp3,10
Loop: dec Temp1
brne Loop
dec Temp2
brne Loop
dec Temp3
brne Loop
ret
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 12:53:57
pyzhman
Пробуем так:
Код: Выделить всё
ldi Temp,Low(RamEnd) ;инициализация стека
out SPL,Temp
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:08:19
masterpc
Точно, поднял свои старые асмовские коды, у меня тоже так:
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:15:06
genadijs2009

получилось. большое спасибо. avr studio не ругаетса, но программа не роботает. все время один диод горит.
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:24:16
pyzhman
Пробуем так:
Код: Выделить всё
ldi Temp, HIGH(RAMEND)
Out sph, temp
ldi Temp, LOW(RAMEND)
Out spl, temp
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:30:06
genadijs2009

спасибо все роботает. только я не понял почему так?
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:33:20
pyzhman
Потому, что в меге8 стек двухбайтный. И засылается в два приема - отдельно старшая часть и младшая часть.
Re: проблемы с RemEnd
Добавлено: Ср май 09, 2012 13:36:51
genadijs2009
ага, спасибо еще раз.
