реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PIC16F887. Long call., Код в ассемблере пересёк границу банка памяти.
JohnKorsh
сообщение May 6 2011, 05:08
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Добрый день! Код для PIC16F887 после ассемблирования пересёк границу банка памяти.
Как правильно написать call, чтобы вазвать поцедуру из другого банка памяти и верннуться в вызывавший банк?
И как то же самое проделать с goto?
Если можно, то с "кусками" ассемблера.
Go to the top of the page
 
+Quote Post
Driver_GV
сообщение May 6 2011, 05:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 11-05-06
Из: Lugansk
Пользователь №: 17 011



Цитата(JohnKorsh @ May 6 2011, 08:08) *
Добрый день! Код для PIC16F887 после ассемблирования пересёк границу банка памяти.
Как правильно написать call, чтобы вазвать поцедуру из другого банка памяти и верннуться в вызывавший банк?


Для перехода в следующий банк:

Код
;**********************************************************************
            ORG     0x100
;**********************************************************************
START
            PAGESEL        _INIT
            CALL                  _INIT^800
            PAGESEL        START

......
;**********************************************************************
            ORG     0x800
;**********************************************************************
                    _INIT
..
..

                    RETURN

;*****


Код
            PAGESEL        LCD_INIT
            GOTO                  LCD_INIT^800





Для перехода через банк заменить ^800 на ^1000
Для перехода через 2 банка заменить ^800 на ^1800


--------------------
-------------------
picping.lg.ua
Go to the top of the page
 
+Quote Post
Integro
сообщение May 6 2011, 05:27
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460



Непонятно...) этош 16-ый pic тамже вроде по банкам только регистры расбросанны

так и пишиш :
org 0x0
goto main
...
main:
call _delay5us

...
_delay5us:
nop
nop
nop
nop
return

...
end
или я эт дурак?)

Сообщение отредактировал Integro - May 6 2011, 05:28
Go to the top of the page
 
+Quote Post
xemul
сообщение May 6 2011, 10:10
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Integro @ May 6 2011, 09:27) *
Непонятно...) этош 16-ый pic тамже вроде по банкам только регистры расбросанны

В системе команд мелких пиков разрядность адреса в инструкциях call и goto составляет 11 бит, поэтому память программ режется на 2К страницы, выбор которых выполняется в PCLATH.
Не ленитесь заглядывать в даташиты.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение May 7 2011, 20:54
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(JohnKorsh @ May 6 2011, 08:08) *
Добрый день! Код для PIC16F887 после ассемблирования пересёк границу банка памяти.
Как правильно написать call, чтобы вазвать поцедуру из другого банка памяти и верннуться в вызывавший банк?
И как то же самое проделать с goto?
Если можно, то с "кусками" ассемблера.


Эх, ностальгия, смахнул подступившую слезу, достал с полки архивный CD-ROM многолетней давности и вытащил из архива макросы, которые я последний раз обновлял 9 лет назад. То что вам нужно, в начале идет, CALL и GOTO с учетом страниц (PxxCALL, PxxGOTO).
Там же и остальное, что использовал, вдруг чего пригодится.

Прикрепленный файл  MACDEFS.ZIP ( 4.38 килобайт ) Кол-во скачиваний: 97


там где в комментарии написано ";C ВКЛЮЧЕНИЕМ ПЕРВОЙ СТРАНИЦЫ ОЗУ (ЕСЛИ НУЖНО)" на самом деле имеется в виду любая из четырех страниц, макросы начинали писаться когда пики были маленькими, потом макросы подредактировал, а комментарии поленился sm.gif


Но мой вам совет: идите-ка вы в Си, бросайте на чистом ассме писать. Вставки ассмовские раз в пять лет приходится делать, но не каждый год.
Go to the top of the page
 
+Quote Post
JohnKorsh
сообщение May 19 2011, 05:48
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 6-01-05
Из: Россия, Москва
Пользователь №: 1 820



Спасибо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 02:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016