Здравствуйте, начал параллельно C учить assemler для atmega8.
написал программу "бегущий огонёк"(обучаюсь с обучалкой на сайте www.radiokot.ru )
вот код:
CODE:.include "c:\ProgrammingMC\avr\avrasm\APPNOTES\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 DDRD, 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 PortD, temp
ldi temp1, 0
ldi temp2, 0
ldi temp3, 10
loop:
dec temp1
brne loop
dec temp2
brne loop
dec temp3
brne loop
ret
при компиляции выходит варнинг : Constant (0x45f) out of range (0x00-0xff) ldi temp, RamEnd
я так понял что адрес последней ячейки ОЗУ не входит в temp, в следствии чего вообще не работает вся программа(просто горит светодиод и всё). Что делать?(Отредактировано автором: 23 Ноября, 2013 - 21:07:38) |