|
|
 |
Ответов
|
Aug 15 2018, 06:42
|
Участник

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

|
да, спасибо, как водится, пока 5 раз одно и тоже в даташите не прочитаешь, не поймешь. добавил команду MOVF PCL и увидел в PCLATH реальный сегмент адреса. тема собственно меня забеспокоила потому, что в вызове подпрограммы, которая размещается в произвольном месте присутствует еще подпрограмма с т.н. вычисляемым переходом ADDWF PCL, в результате которого у меня вместо 0318h происходит перескок на 0018h
|
|
|
|
|
Aug 15 2018, 07:19
|
Местный
  
Группа: Участник
Сообщений: 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 гарантировано не было переполнения).
|
|
|
|
|
Aug 15 2018, 08:34
|
Участник

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

|
Цитата(Smen @ Aug 15 2018, 11:19)  Реальный сегмент находится в PCH. что такое PCH ? не нахожу в даташите на PIC18F2550 кстати, в отладчике среди SFR имеется PCLAT , тоже не понятно что это, ибо в даташите тоже не вижу, по разрядам вроде соответствует счетчику, но изменяется тоже только в пределах 256
|
|
|
|
|
Aug 15 2018, 09:58
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081

|
Цитата(balk @ Aug 15 2018, 12:34)  на PIC18F2550 Тогда понятно. Я говорил про 12-16 серии. Там такого не было, насколько помню. В 18 подшаманили. Цитата(balk @ Aug 15 2018, 12:34)  что такое PCH На десять строк выше Вашей цитаты.  Цитата(balk @ Aug 15 2018, 12:34)  среди SFR имеется PCLAT Это, видимо PCLATH и PCLATU вместе взятые. Разрядов-то сколько? Такая же фигня и с TMR1H и TMR1L, например. Удобнее смотреть целиком (ИМХО, разумеется).
|
|
|
|
|
Aug 17 2018, 06:44
|
Участник

Группа: Участник
Сообщений: 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, хотя изменения почему происходят только в младшем байте. ну как водится со временем можно разобраться , если будет практическая необходимость.
|
|
|
|
|
Aug 17 2018, 07:46
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 18-03-13
Из: Питер
Пользователь №: 76 081

|
Цитата(balk @ Aug 17 2018, 10:44)  MOVFF TOSH,PCLATH Как-то совсем авантюрно.  Это сперва должен быть вызов ПП. А чем не устраивает обычный Код movlw hight Label movwf PCLATH Цитата(balk @ Aug 17 2018, 10:44)  видимо, не так. адреса разные Да какие адреса? Это же виртуальный регистр. Он существует только в отладчике для визуального удобства восприятия. Судя по разрядности, это PCLATU + PCLATH + PCL
|
|
|
|
|
Aug 18 2018, 09:18
|
Участник

Группа: Участник
Сообщений: 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)  Да какие адреса? Это же виртуальный регистр. это просто констатация того, что изображает отладчик
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|