Здравстуйте радиокоты!
Подскажите почему не работает такой код?
MOVLW PICTURE_0
MOVWF FSR
BBB
MOVF INDF,W
MOVWF temp
INCF FSR,F
GOTO BBB
...
PICTURE_0
dt H'FF',H'80',H'80',H'80',H'FF',H'00',H'00',H'FF',H'88',H'88',H'88',H'70'
в переменной temp нет данных таблицы PICTURE_0.
FSR & INDF
- Реклама
Re: FSR & INDF
Касательно простых "среднемладших"...
Директива DT определяет таблицу в ПЗУ программы в виде серии команд RETLW k8.
А команда с INDF (через адрес в FSR) обращается к ОПЕРАТИВНОЙ ПАМЯТИ.
Несколько иначе у 18й и у "улучшенной" среднемладшей. Но там уже не dt, а db/dw используется.

Директива DT определяет таблицу в ПЗУ программы в виде серии команд RETLW k8.
А команда с INDF (через адрес в FSR) обращается к ОПЕРАТИВНОЙ ПАМЯТИ.
Несколько иначе у 18й и у "улучшенной" среднемладшей. Но там уже не dt, а db/dw используется.
- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FSR & INDF
Однако нужно уточнить о каком конкретно МК идет речь. Ибо в относительно новых PIC16 есть видимость флеша в пространстве ОЗУ (младший байт), начиная с адреса 0x8000.
Судя по однобайтному FSR, речь идет о чем то очень примитивном типа PIC10F200

Судя по однобайтному FSR, речь идет о чем то очень примитивном типа PIC10F200
Re: FSR & INDF
Однако не директивой же dt тогда укладывать - там db по логике должна быть...

- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FSR & INDF
Это не имеет никакого значения. Все равно читается только младший байт. А будет в старшем 0x00 или 0x34 - ничего не меняет.
- Реклама
Re: FSR & INDF
Для "среднемладших" возможно... там все равно - ячейка ПЗУ двухбайтовой не бывает (пока)...
А у 18-й таки два байта...

А у 18-й таки два байта...
- КРАМ
- Друг Кота
- Сообщения: 25390
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: FSR & INDF
Вообще то В ШИРОКОМ СМЫСЛЕ старшие 6 разрядов так же именуют байтом. Патамушта при чтении старшего (где это реализовано) в 7-8 битах читается фантомный ноль.
Re: FSR & INDF
Да, забыл указать контроллер PIC18f452.
db и dw - пробовал, результат тот же, т. е. в переменной temp вижу не таблицу, а данные регистров FSR.
Подскажите, может есть другое решение, мне нужно в переменную temp поочередно передать табличные данные PICTURE_0?
Прошу прощения два проекта), контроллер PIC16f676 на самом деле!
db и dw - пробовал, результат тот же, т. е. в переменной temp вижу не таблицу, а данные регистров FSR.
Подскажите, может есть другое решение, мне нужно в переменную temp поочередно передать табличные данные PICTURE_0?
Прошу прощения два проекта), контроллер PIC16f676 на самом деле!
Последний раз редактировалось titr Сб авг 29, 2020 08:30:38, всего редактировалось 1 раз.
Re: FSR & INDF
Первое - у 18й три регистра FSR и, соответственно, в командах необходимо указывать к какому из оных обращение будет (то же и INDF касается).
Второе - 18я серия ("стандартная") также использует FSR/@INDF для доступа к ОЗУ данных.
Для доступа к ПЗУ используются TBLRD/TBLWT(*;*+;*-;+*) и содержимое TBLPTR.
Пока с 18й в реале дел не имел - только подготовительный этап лет... назад сделал - таблички перечня возможных команд.
А воть со среднемладшей те шпоргалки уже достаточно хорошо проверены.
Вот еще источник информации:
страничка с перечнем документации
http://www.microchip.ru/lit/?mid=1x0
Сама документацтя
http://www.microchip.ru/files/d-sheets- ... manual.pdf

Второе - 18я серия ("стандартная") также использует FSR/@INDF для доступа к ОЗУ данных.
Для доступа к ПЗУ используются TBLRD/TBLWT(*;*+;*-;+*) и содержимое TBLPTR.
Пока с 18й в реале дел не имел - только подготовительный этап лет... назад сделал - таблички перечня возможных команд.
А воть со среднемладшей те шпоргалки уже достаточно хорошо проверены.
Вот еще источник информации:
страничка с перечнем документации
http://www.microchip.ru/lit/?mid=1x0
Сама документацтя
http://www.microchip.ru/files/d-sheets- ... manual.pdf


