Бегущий огонек v1.1 Создание функций в Ассемблере.

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Аватара пользователя
Cane
Родился
Сообщения: 3
Зарегистрирован: Пн сен 11, 2006 13:25:07

Бегущий огонек v1.1 Создание функций в Ассемблере.

Сообщение Cane »

В разделе Обучалка > Микроконтроллеры и ПЛИС > Микроконтроллеры AVR... > Создание функций в Ассемблере. Бегущий огонек v1.1 :shock: есть часть программы, в которой, по моему мнению, допущена ошибочка, а именно:

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

ldi Temp,RamEnd ;загрузить в Темп адрес последней ячейки ОЗУ 
out SPL,Temp ;вывести в SPL значение из Temp


В однобайтный регист Temp записывают двухбайтный адрес памяти RamEnd.
Затем производится непосредственно инициализацию стека, по средствам записи адреса ячейки памяти в указатель стека SPL.

А какже, тогда насчет старшего байта указателя стека SPR?

Инициализовать стек пододным образом мне не удалось. Немного подумав и покопав описание нашел следующее решение:

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

\\prog1.asm 
----------
.include "m8515def.inc"

.def Temp=R16


\\..........................
RESET:
; RemEnd = 0x025F (из подключаемого файла)
ldi Temp,0x5F ; инициализация стека
out SPL,Temp
ldi Temp,0x02
out SPH,Temp
\\..........................
by Cane
Аватара пользователя
Serega
Говорящий с текстолитом
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

Спасибо, я буду подумать над этим. И исправлю, если ошибся. Если не найду оправдания :)
Лучше быть первым в деревне, чем вторым в Риме
Аватара пользователя
Старый ржавый электронщик
Говорящий с текстолитом
Сообщения: 1507
Зарегистрирован: Чт дек 15, 2005 17:34:48
Откуда: Петрозаводск
Контактная информация:

Сообщение Старый ржавый электронщик »

это типа аффтара статьёв :) ждем ответы
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
Аватара пользователя
Cane
Родился
Сообщения: 3
Зарегистрирован: Пн сен 11, 2006 13:25:07

Инициализация стека

Сообщение Cane »

Serega писал(а):Спасибо, я буду подумать над этим. И исправлю, если ошибся. Если не найду оправдания :)


В статье Таймеры и каунтеры. Бегущий огонек v2.0 таже проблема, так-что заодно и там поглядеть надо бы.

А код еще попроще написать можно:

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

; Инициализация стека, другими словами
; установка указателя стека в конце ОЗУ
  ldi  R16, high(RAMEND)    ; старший байт
  out SPH, R16
  ldi R16, low(RAMEND)      ; младший байт
  out SPL, R16


Из законов Мэрфи: Каждую программу можно сократить минимум на 2 команды :)
by Cane
Аватара пользователя
Vanes19
Родился
Сообщения: 3
Зарегистрирован: Ср ноя 07, 2007 12:32:50
Откуда: Королёв
Контактная информация:

Сообщение Vanes19 »

Народ, у меня тоже проблемы но с на4альной то4ки, буквально 2-я статья и уже не понимаю :shock: . У мен там командная строка ругается, Ошибка вроде как то исправляется, но 4ото я не понял где.На фотографии текст ошибки.Заранее спасибо за помощь!!!!! :wink:
Вложения
Ошибка copy.gif
(20.04 КБ) 793 скачивания
Реальность-это виртуальность, с которо мы все соглашаемся
Ответить

Вернуться в «Статьи»