Страница 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
Точно, поднял свои старые асмовские коды, у меня тоже так:

Код: Выделить всё

ldi Temp, LOW(RAMEND)   
Out spl, temp

Re: проблемы с RemEnd

Добавлено: Ср май 09, 2012 13:15:06
genadijs2009
:beer: получилось. большое спасибо. 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
:shock: :beer: спасибо все роботает. только я не понял почему так?

Re: проблемы с RemEnd

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

Re: проблемы с RemEnd

Добавлено: Ср май 09, 2012 13:36:51
genadijs2009
ага, спасибо еще раз. :))