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

 
 
> про PCLATH вопрос
balk
сообщение Aug 14 2018, 15:35
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-11-09
Пользователь №: 53 792



имеется asm-программа .
в MPLAB IDE 8.33 запущен отладчик MPLAB SIM.
двигаясь по шагам , перехожу на подпрограмму с адреса 0050 на адрес 0140.
в окне WATCH наблюдаю изменение PCL на 40, а PCLATH почему-то остается в 00,
хотя отладчик двигается дальше 0142.. и в PCLATH я ожидал видеть 01.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
balk
сообщение Aug 15 2018, 06:42
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-11-09
Пользователь №: 53 792



да, спасибо, как водится, пока 5 раз одно и тоже в даташите не прочитаешь, не поймешь.
добавил команду MOVF PCL и увидел в PCLATH реальный сегмент адреса.
тема собственно меня забеспокоила потому, что в вызове подпрограммы, которая размещается
в произвольном месте присутствует еще подпрограмма с т.н. вычисляемым переходом ADDWF PCL,
в результате которого у меня вместо 0318h происходит перескок на 0018h
Go to the top of the page
 
+Quote Post
Smen
сообщение Aug 15 2018, 07:19
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081



Цитата(balk @ Aug 15 2018, 10:42) *
добавил команду MOVF PCL и увидел в PCLATH реальный сегмент адреса
Фигня какая-то.
В том-то весь и фокус, что операции с програмным счётчиком никак не влияют на содержимое регистра PCLATH.
Что туда запишите, то там и будет находиться до следующей перезаписи.
Реальный сегмент находится в PCH.

Цитата(balk @ Aug 15 2018, 10:42) *
подпрограммы, которая размещается в произвольном месте
Если в произвольном, то надо делать пару десятков строк дополнительного кода.
В двух словах так:
Сперва пишите в PCLATH старшую половину адреса метки начала таблицы переходов.
Затем производите сложение PCL с переменной перехода, но с результатом в аккумулятор.
Если поднят флаг переноса, инкрементируете PCLATH.
Опять производите сложение с PCL, но уже результат в регистр.
Если необходимо сократить код и/или повысить быстродействие (т.е. сократить количество команд), есть вариант размещать таблицу переходов строго в пределах 256-строчного сегмента адресов (чтобы при сложении PCL гарантировано не было переполнения).

Go to the top of the page
 
+Quote Post
balk
сообщение Aug 15 2018, 08:34
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-11-09
Пользователь №: 53 792



Цитата(Smen @ Aug 15 2018, 11:19) *
Реальный сегмент находится в PCH.

что такое PCH ? не нахожу в даташите на PIC18F2550
кстати, в отладчике среди SFR имеется PCLAT , тоже не понятно что это, ибо в даташите тоже не вижу,
по разрядам вроде соответствует счетчику, но изменяется тоже только в пределах 256


Go to the top of the page
 
+Quote Post
Smen
сообщение Aug 15 2018, 09:58
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081



Цитата(balk @ Aug 15 2018, 12:34) *
на PIC18F2550
Тогда понятно.
Я говорил про 12-16 серии. Там такого не было, насколько помню.
В 18 подшаманили.

Цитата(balk @ Aug 15 2018, 12:34) *
что такое PCH
На десять строк выше Вашей цитаты. rolleyes.gif

Цитата(balk @ Aug 15 2018, 12:34) *
среди SFR имеется PCLAT
Это, видимо PCLATH и PCLATU вместе взятые.
Разрядов-то сколько?
Такая же фигня и с TMR1H и TMR1L, например.
Удобнее смотреть целиком (ИМХО, разумеется).
Go to the top of the page
 
+Quote Post
balk
сообщение Aug 17 2018, 06:44
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-11-09
Пользователь №: 53 792



Smen спасибо за содействие

с PCLATH я пока обошелся авантюрно-
перед ADDWF PCL выставил один оператор
MOVFF TOSH,PCLATH
и он меня спасает, если таблица и ее вызов находятся в одном сегменте.
пока для простой отладки мне достаточно.

PCLAT
Цитата(Smen @ Aug 15 2018, 13:58) *
Это, видимо PCLATH и PCLATU вместе взятые.

видимо, не так. адреса разные.
а у PCL и PCLAT один и тот же адрес FF9, но разрядность у PCLAT 0x000000,
хотя изменения почему происходят только в младшем байте.
ну как водится со временем можно разобраться , если будет практическая необходимость.
Go to the top of the page
 
+Quote Post
Smen
сообщение Aug 17 2018, 07:46
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081



Цитата(balk @ Aug 17 2018, 10:44) *
MOVFF TOSH,PCLATH
Как-то совсем авантюрно. rolleyes.gif
Это сперва должен быть вызов ПП.
А чем не устраивает обычный
Код
        movlw  hight Label
        movwf  PCLATH


Цитата(balk @ Aug 17 2018, 10:44) *
видимо, не так. адреса разные
Да какие адреса? Это же виртуальный регистр.
Он существует только в отладчике для визуального удобства восприятия.
Судя по разрядности, это PCLATU + PCLATH + PCL
Go to the top of the page
 
+Quote Post
balk
сообщение Aug 18 2018, 09:18
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 24
Регистрация: 22-11-09
Пользователь №: 53 792



Цитата(Smen @ Aug 17 2018, 11:46) *
А чем не устраивает обычный
Код
        movlw  hight Label
        movwf  PCLATH

не совсем понимаю, что кроется под hight label.
мой замысел был таков
от строки вызова call pprog перехожу
к метке pprog ( в этом же сегменте)
делаю MOFF TOSH,PCLATH - записываю в PCLATH код сегмента вызывателя, чтоб потом
через ADDWF PCL и соответствующий retlw вернуться именно к вызывателю, а
не к вызывателю вызывателя, находящегося в другом сегменте



Цитата(Smen @ Aug 17 2018, 11:46) *
Да какие адреса? Это же виртуальный регистр.

это просто констатация того, что изображает отладчик
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- balk   про PCLATH вопрос   Aug 14 2018, 15:35
- - Smen   Цитата(balk @ Aug 14 2018, 19:35) в PCLAT...   Aug 15 2018, 04:49
|- - balk   Цитата(Smen @ Aug 15 2018, 11:19) В том-т...   Aug 15 2018, 08:25
||- - Smen   Цитата(balk @ Aug 15 2018, 13:25) даташит...   Aug 15 2018, 08:33
|- - Марк_Я   Цитата(balk @ Aug 18 2018, 12:18) не совс...   Aug 18 2018, 09:40
|- - Smen   Цитата(balk @ Aug 18 2018, 14:18) что кро...   Aug 20 2018, 05:17
||- - Марк_Я   Цитата(Smen @ Aug 20 2018, 08:17) 18 семе...   Aug 20 2018, 06:28
||- - Smen   У ТС 18F2550.   Aug 20 2018, 06:36
|- - balk   Спасибо, друзья , за ценные замечания ! всё-т...   Aug 22 2018, 16:08
|- - Smen   Цитата(balk @ Aug 22 2018, 21:08) после a...   Aug 23 2018, 10:26
|- - balk   спасибо! вопросы остаются, но свернём тему , ч...   Aug 27 2018, 13:06
|- - balk   Цитата(balk @ Aug 27 2018, 17:06) вопросы...   Aug 28 2018, 12:51
|- - Smen   Цитата(balk @ Aug 28 2018, 16:51) Вы пред...   Aug 28 2018, 13:12
|- - balk   Цитата(Smen @ Aug 28 2018, 17:12) Команда...   Aug 28 2018, 13:36
|- - Smen   Цитата(balk @ Aug 28 2018, 18:36) я имел ...   Aug 29 2018, 05:26
|- - balk   спасибо Smen приятно получить развернутый ответ с ...   Aug 29 2018, 06:57
|- - Марк_Я   Цитата(balk @ Aug 29 2018, 09:57) приятно...   Aug 30 2018, 05:29
- - Марк_Я   Я в курсе. Речь шла о Вашем упоминании.   Aug 20 2018, 06:39


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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 15:49
Рейтинг@Mail.ru


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