Вопросы начинающих PIC ASM

Поклонники продукции Microchip Technology Inc тусуются тут.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

botchin писал(а):...AN526 Microchip...

Спасибо, мой уродец и рядом не валялся с этим шедевром))

PicNik писал(а):

Простите, но без местоположения меток ничего не понятно.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

Пока_без_кота писал(а):мой уродец и рядом не валялся с этим шедевром

Есть такая наука - ВЫСШАЯ АРИФМЕТИКА. Изучает теорию чисел. Алгоритм преобразования из аппноты микрочипа как раз оттуда. Поэтому в подобных вещах изобретать велосипед не стоит. Оная наука весьма сложна и не зазорно просто воспользоваться некоторыми ее плодами. А если есть интерес, то и попытаться ее освоить в некоем доступном (по образованию) объеме.
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

Re: Вопросы начинающих PIC ASM

Сообщение xterro »

Доброго времени суток, просветите, не совсем понимаю директиву BANKSEL. Как я понял, если написать, скажем banksel PORTB, то контроллер перейдёт в тот банк памяти, в котором находится этот регистр(сделает этот банк текущим), правильно? Но например у 628-го, PORTB отображается и на нулевой и на второй банк, в какой тогда перейдёт команда... или просто компилятор выкинет ошибку?
http://radiolaba.ru/wp-content/uploads/2013/12/karta_pamyati.jpg
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Вопросы начинающих PIC ASM

Сообщение Zhuk72 »

Никакой ошибки не будет, а банк будет 0-й.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

Re: Вопросы начинающих PIC ASM

Сообщение xterro »

Т.е в таких случаях, компилятор перейдёт на минимальный из двух банк?
Аватара пользователя
abc
Друг Кота
Сообщения: 3678
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Вопросы начинающих PIC ASM

Сообщение abc »

Не минимальный, а основной.
У PIC-ов основной банк - нулевой.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

Re: Вопросы начинающих PIC ASM

Сообщение xterro »

Спасибо :beer:
Tigozawr
Родился
Сообщения: 15
Зарегистрирован: Сб янв 25, 2014 18:09:09

Re: Вопросы начинающих PIC ASM

Сообщение Tigozawr »

Люди, объясниет мне, почему перебор не работает (начальный адрес в переменной точно тот, что нужно):
START:
MOVLW B'00000000'
TRIS 0x06
GOTO CODESTART
RETLW 0x07
RETLW 0x0A
CODESTART:
variable a = 0x06
LOOP:
CALL a
MOVWF 0x06
a = a + 1
GOTO LOOP
Переменная a не инкриментируется почему-то :(
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Это че за "гибрид" ассемблера с "сампридумал"?
:shock:
Tigozawr
Родился
Сообщения: 15
Зарегистрирован: Сб янв 25, 2014 18:09:09

Re: Вопросы начинающих PIC ASM

Сообщение Tigozawr »

Вроде, не гибрид. Я делал все по мануалу в MPLAB X, так что все претензии к ним :)) . Директива varible там есть и, вроде, работает, но в этом случае переменная почему-то не хточет изменять значение :dont_know:
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Вопросы начинающих PIC ASM

Сообщение Zhuk72 »

Какой пик?

Гибрид, причем неудачный.
movwf 0x06 перестает содержимое аккумулятора в переменную (регистр) по указанному адресу.
А выше вы объявляете переменную и назначаете ей значение 6. Не стыкуется одно с другим, не говоря уже об адресации внутри пика. Адрес и содержимое как бы разные вещи.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Есть понятие "макрос" и там некоторые примеры авторазметки/автозаполнения.
НО...
Макросы перед подстановкой в код обрабатываются препроцессором компилятора.
И всего-то выполняют роль подстановок сгенерированного фрагмента кода в нужное место программы, а не непосредственного исполнения - участок кода будет исполняться АЛУ(ядром) МК.
Посему - любое изменение делать должен исключительно МК, опираясь на имеющиеся ресурсы.
Ежли есть изменяемая константа - то только в регистре(ЕЕПРОМ) и/или акумуляторе.
А далее используя имеющуюся систему команд и ресурсы ядра проводим с той переменной необходимые действия ПОКОМАНДНО.
Это ассемблер, а не чего более "высокоуровневого" (к примеру СИ).
8)

Отсюда такой перл
"CODESTART:
variable a = 0x06
LOOP:
CALL a
MOVWF 0x06
a = a + 1
GOTO LOOP"
вообще весьма сомнительный: "а" (в CALL a) есть адрес подпрограммы, котроая выполняет "= a + 1"
а затем без усякого return принудительно посылается на GOTO LOOP...
Это всего-то вместо использования какого-нибудь регистра ОЗУ в текущем банке с командой INCF Rn,f даже без использования W
...
:(
Tigozawr
Родился
Сообщения: 15
Зарегистрирован: Сб янв 25, 2014 18:09:09

Re: Вопросы начинающих PIC ASM

Сообщение Tigozawr »

PIC12F509. А как тогда мее реалтзовать на нем перебор информации, занесенной при помощи RETLW? Мне, просто, нужно хранить больше констант, чем влезет в файловые регистры. И CALL a работает как раз корректно, вызывая именно первый RETLW. Оно, просто, не хочет выполнять a = a + 1, которое работает, если делать не цикл, а последовательно писать
CALL a
MOVWF 0x06
a = a + 1
CALL a
MOVWF 0x06
a = a + 1
...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15549
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

У PIC12F509-го аж 48 регистров РОН...
Неуж-то мало?
:shock:
Тогда ищем кристалл с ЕЕПРОМ - там возможно хранение изменяемых величин.
8)
Касательно возврата по таблице...
Там используется особенность ПИКовых подставлять значения в счетчик команд.
Табличка снабжается заголовочным фрагментом к которому и обращается вызов CALL, а уже сам заголовок выполняет функционал выборки нужного RETLW.
Принцип примерно такой:

Код: Выделить всё

shaps
  movf Rn,w
  addwf PCL,f
table
  dt ...............

только там еще кучка замечаний и относительно корректного размещения самой таблицы и относительно диапазона (ибо переполнение PCL не влияет на содержимое PCLATH содержимое коего используется при любой модификации PCL)....
:roll:
Последний раз редактировалось BOB51 Чт мар 23, 2017 10:10:15, всего редактировалось 2 раза.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Вопросы начинающих PIC ASM

Сообщение Zhuk72 »

В конце листинга пишете, скажем, org 0x300, после чего через dt перечисляете константы.
Затем читаете раздел 4.7 даташита.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Dimas_D
Родился
Сообщения: 8
Зарегистрирован: Вс май 07, 2017 16:16:01
Откуда: Саратов

Re: Вопросы начинающих PIC ASM

Сообщение Dimas_D »

Здравствуйте!!! Подскажите почему при попытке чтения PIC16F73, не отображается окно EEPROM, в то время как у PIC16F628a все нормально отображается. Программатор Pickit3.
Вложения
Screenshot_12.png
(45.62 КБ) 430 скачиваний
Screenshot_1.png
(60.25 КБ) 399 скачиваний
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Вопросы начинающих PIC ASM

Сообщение Albert_V »

Dimas_D писал(а):почему при попытке чтения PIC16F73, не отображается окно EEPROM

А с чего вы взяли что у PIC16F73 есть EEPROM?
По крайней мере, Microchip об этом не знает.
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Вопросы начинающих PIC ASM

Сообщение Пока_без_кота »

Открываем даташит на этот Пик. Ищем хоть слово про EEPROM. Не находим, успокаиваемся и закрываем.
П.С. Вкладка была долго открыта, опередили))
Dimas_D
Родился
Сообщения: 8
Зарегистрирован: Вс май 07, 2017 16:16:01
Откуда: Саратов

Re: Вопросы начинающих PIC ASM

Сообщение Dimas_D »

Мне просто показалось Eeprom и " Память данных" это одно и тоже. А как же тогда эту память посмотреть?
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Вопросы начинающих PIC ASM

Сообщение Albert_V »

Никак.
Program Memory вы не сможете прочитать, поскольку установлен бит защиты.
Ответить

Вернуться в «PIC»