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

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

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


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

Сообщение 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
Реклама
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1529
Зарегистрирован: Пн авг 22, 2005 21:02:22
Откуда: Питер

Сообщение Serega »

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

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

это типа аффтара статьёв :) ждем ответы
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
Контактная информация:
Родился
Аватара пользователя
Сообщения: 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
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Аватара пользователя
Сообщения: 3
Зарегистрирован: Ср ноя 07, 2007 12:32:50
Откуда: Королёв

Сообщение Vanes19 »

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

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