Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 13:07:37

Нужно сделать 3 лабы на ассемблере PIC, если с AVR я разобрался более менее, то к пикам даже прикасаться не хочется, настолько все ужасно и с даташитами и средой отладки, но задания нужно как-то выполнять и поэтому прошу помощи у вас ребята. Задание таково: "Организовать программный счетчик с задержкой до 20 милисекунд", на этом все, понимаю, что написание программы займет 5 минут для знающего человека, но сам справиться не могу, выручайте (pic16f876)

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 13:25:10

1. Вам сюда https://radiokot.ru/forum/viewforum.php?f=53
2. Для пиков полно русской документации и программ на асме

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 19:08:43

Это где ж такие садюги, что задают СТУДНЯМ ассемблер для разных семейств изучать??
:shock:
Я еще понимаю в обзорном варианте, но с лабораторными да по конкретным кристаллам РАЗНЫХ СЕМЕЙСТВ??
Не слишком ли велика роскошь?
(смотри тут:
https://radiokot.ru/forum/viewtopic.php?f=62&t=94201
https://radiokot.ru/forum/viewtopic.php?f=62&t=156720)
:roll:

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 19:54:28

...то к пикам даже прикасаться не хочется, настолько все ужасно и с даташитами и средой отладки...
Не пиз..те. Даташиты от Microchip одни из лучших в отрасли. Со средами отладки для Ваших задач тоже все нормально. Платите деньги, или извольте потрудиться сами, муд@ков нигде не любят.

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 20:09:06

Как-то отправил микрочипу письмо - в даташите нехилая такая ошибка была, на pic18f14k50, из-за которой usb работал некорректно. Через год получил от сервера письмо "Поскольку в течения года никто письмо не прочитал, оно удаляется".
У STМикроэлектроникс RM и AN мне больше нравятся.
Weless писал(а):если с AVR я разобрался более менее, то к пикам даже прикасаться не хочется
Меняйте профессию, пока не поздно. Если Вы разобрались с одним семейством мк, но не можете с другим, хотя у них одна и та же архитектура, то как же будете дальше?...

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 20:52:35

BlackKilkennyCat
У ПИКовых и АВР весьма разная организация.
И тем более синтаксис компиляторов ассемблера.
Другое дело - ежли ПРОСТЕЙШАЯ задачка - и то... без предварительного изучения данных тем не слишком корректно.
8)
Это с точки зрения УЖЕ освоившего все просто.
Для корректного самостоятельного освоения относительно "среднеуровневой" работы под "чистым ассемблером" по каждому семейству не менее 1,5-2 года надо.
:wink:

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 21:12:22

BOB51, архитектура гарвардская и у того и другого, вроде бы?
а синтаксис...
a = a + 1; inc(a, 1); a++; - вот это ещё можно назвать проблемой разного синтаксиса
А в ассемблере... справочник никто не отбирал же.
Полтора-два года не надо. ТС заявил, что с одним велосипедом он справился. А на другом колёса вдруг стали квадратными и руль ниже педалей?

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 21:37:32

АВР - 32 регистр - аккумулятора и отдельно размещенная память данных(правда допускается обращение к тому же массиву регистр-аккумуляторов и УВВ/РСФ как к полю адресов ОЗУ), для доступа к которой используются только команды чтения/записи(за редким исключением ограниченной адресной области).
ПИК(среднемладшие) - ЕДИНСТВЕННЫЙ аккумулятор и сегментированное ОЗУ с присутствием области УВВ/РСФ. Плюс флаг указания места размещения результата в составе команды. Практически любая команда имеет доступ к любой ячейке текущего сегмента ОЗУ.
Функционал аккумулятора достаточно жестко ограничен (снято в 18-й серии и у улучшенной среднемладшей).
Действие флага С в операциях вычитания у АВР и ПИК различно "до наоборот".
Обращение к таблицам данных в ПЗУ резко отличается.
Ну и прочие "мелочи", включая специфику написания перемещаемых программ (относительная адресация) под ассемблером.
Деталировка отличий в "винной" на реальных проектах разбиралась.
А в остальном ессно "архитектура гарвардская".
8)
К примеру:

Код:
AVR
Ldi R16,0xff
loop:
dec R16
brne loop

PIC
movlw 0xff
movwf 0x70 ; первый из регистров области SHR для PIC16F87x инкремент/декремент аккумулятора
               ; не допускается, хотя есть возможность размещения результата в аккумуляторе
loop:
decfsz 0x70,1
goto loop
Последний раз редактировалось BOB51 Сб ноя 21, 2020 21:59:21, всего редактировалось 1 раз.

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 21:53:44

О боже мой! Что же тогда делать?! Всё прямо инопланетное! :)
Это как бы лабораторная работа. Если систему не изменили, она не сильно выходит а) за общие рамки вообще, б) за рамки методичек.
Всяческие нюансы разъяснены и дополнительная литература имеется.
Не верю, что человек, разобравшийся с асм в авр, застрянет с асм в пик. Максимум, он будет задавать вопросы по подобным мелочам.
И глянем само задание: программный счётчик с задержкой до 20 ms. 3 штуки.
А ведь достаточно написать на любом "яву для пик" да глянуть листинг асма...
Но даже до этого не догадаться.
Будущий инженер.

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 22:01:48

Зависит от уровня задачи - без хорошей подготовки может и "подзастрять".
Особо, ежли современными методичками пользоваться.
8)
Конфигурация тактового генератора - изучение документации.
От нее зависит частота.
Опять же вылазят особенности ядра и системы команд при построении программного счетчика (конвеер у МК насколько разный).
О стеке отдельный разговор - жто совсем не "вольница АВР".
В принципепри КАЧЕСТВЕННОЙ ПОДШОТОВКЕ (зависит от препода) и собственном желании разобраться можно...
Однако и забывается весьма быстро, ежли нет ПОСТОЯННОЙ ПРАКТИКИ.
Разве что спецконспект и "шпоргалки" при длительных перерывах выручают.
:beer:
Последний раз редактировалось BOB51 Сб ноя 21, 2020 22:08:40, всего редактировалось 1 раз.

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 22:03:35

Уровень там написан: делэй :)
Собственно, приведенный пример различия уже на 98% выполненная работа :))

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 22:10:32

К примеру:
movlw 0xff
movwf 0x70
loop:
decfsz 0x70,1
goto loop


Код:
    movlw  0xFF
loop:
    addlw  0xFE;  или sublw 0x01
    btfss  STATUS, Z
    goto  loop

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 22:15:09

Там одноуровневым циклом для 20 миллисекунд не отделаешся.
Частота на встроенном RC 4МГц - с учетом коэффициента 4 одноцикловая команда 0,000001 секунды.
А дальше считаем "циклы команд ветвления/пропуска".
8)

КРАМ
Это уже из "дополнительной программы", а не простейший минимум!
Я так думаю ТОПИКСТАРТЕРУ вряд-ли давали подобное - иначе бы и вопроса не возникло.
8)

Re: Люди добрые помогите сделать задание на ассемблере PIC

Сб ноя 21, 2020 22:46:08

В принципе при КАЧЕСТВЕННОЙ ПОДШОТОВКЕ (зависит от препода) и собственном желании разобраться можно...
Однако и забывается весьма быстро, ежли нет ПОСТОЯННОЙ ПРАКТИКИ.
Разве что спецконспект и "шпоргалки" при длительных перерывах выручают.
:beer:

Вижу в рассуждениях явное противоречие - если человек именно РАЗОБРАЛСЯ (т. е. понял суть, принцип и подход к решению) то это уже забыть невозможно. Это же не заученный чужой стих.
Хотя чего мы тут? ТС похоже уже "слился". Да и ответ ему уже на 90% даден. :)

Re: Люди добрые помогите сделать задание на ассемблере PIC

Вс ноя 22, 2020 00:02:22

Даже если разобрался, но более месяца не имел практики потребуется день-два на "восстановление навыков" (и то при наличии надлежащих конспектов).
А тем более ежли при том "перепрыгивать" при работе с одного семейства на другое.
Как-то на себе проверено.
8)
Вот еще СТУДНЮ В ПОМОЩ...
Правда за основу брались не АВР, а MCS51 но и при таком подходе удобнее с одного семейства на другое перескакивать:
шпора avr.pdf
(60.25 KiB) Скачиваний: 172

классические среднемладшие
ШПОРА_PIC10_12_16.pdf
(648.72 KiB) Скачиваний: 195

"энхансед" среднемладшие (гибрид 10/12/16 с 18-й)
ШПОРА_PIC10_12_16_em.pdf
(786.17 KiB) Скачиваний: 206

может пригодится...
:wink:
Ответить