Страница 1 из 1
Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 13:07:37
Weless
Нужно сделать 3 лабы на ассемблере PIC, если с AVR я разобрался более менее, то к пикам даже прикасаться не хочется, настолько все ужасно и с даташитами и средой отладки, но задания нужно как-то выполнять и поэтому прошу помощи у вас ребята. Задание таково: "Организовать программный счетчик с задержкой до 20 милисекунд", на этом все, понимаю, что написание программы займет 5 минут для знающего человека, но сам справиться не могу, выручайте (pic16f876)
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 13:25:10
otest
1. Вам сюда
https://radiokot.ru/forum/viewforum.php?f=53
2. Для пиков полно русской документации и программ на асме
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 19:08:43
BOB51
Это где ж такие садюги, что задают СТУДНЯМ ассемблер для разных семейств изучать??

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

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 19:54:28
shindax
[uquote="Weless",url="/forum/viewtopic.php?p=3928217#p3928217"]...то к пикам даже прикасаться не хочется, настолько все ужасно и с даташитами и средой отладки...[/uquote] Не пиз..те. Даташиты от Microchip одни из лучших в отрасли. Со средами отладки для Ваших задач тоже все нормально. Платите деньги, или извольте потрудиться сами, муд@ков нигде не любят.
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 20:09:06
BlackKilkennyCat
Как-то отправил микрочипу письмо - в даташите нехилая такая ошибка была, на pic18f14k50, из-за которой usb работал некорректно. Через год получил от сервера письмо "Поскольку в течения года никто письмо не прочитал, оно удаляется".
У STМикроэлектроникс RM и AN мне больше нравятся.
Weless писал(а):если с AVR я разобрался более менее, то к пикам даже прикасаться не хочется
Меняйте профессию, пока не поздно. Если Вы разобрались с одним семейством мк, но не можете с другим, хотя у них одна и та же архитектура, то как же будете дальше?...
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 20:52:35
BOB51
BlackKilkennyCat
У ПИКовых и АВР весьма разная организация.
И тем более синтаксис компиляторов ассемблера.
Другое дело - ежли ПРОСТЕЙШАЯ задачка - и то... без предварительного изучения данных тем не слишком корректно.
Это с точки зрения УЖЕ освоившего все просто.
Для корректного самостоятельного освоения относительно "среднеуровневой" работы под "чистым ассемблером" по каждому семейству не менее 1,5-2 года надо.

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 21:12:22
BlackKilkennyCat
BOB51, архитектура гарвардская и у того и другого, вроде бы?
а синтаксис...
a = a + 1; inc(a, 1); a++; - вот это ещё можно назвать проблемой разного синтаксиса
А в ассемблере... справочник никто не отбирал же.
Полтора-два года не надо. ТС заявил, что с одним велосипедом он справился. А на другом колёса вдруг стали квадратными и руль ниже педалей?
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 21:37:32
BOB51
АВР - 32 регистр - аккумулятора и отдельно размещенная память данных(правда допускается обращение к тому же массиву регистр-аккумуляторов и УВВ/РСФ как к полю адресов ОЗУ), для доступа к которой используются только команды чтения/записи(за редким исключением ограниченной адресной области).
ПИК(среднемладшие) - ЕДИНСТВЕННЫЙ аккумулятор и сегментированное ОЗУ с присутствием области УВВ/РСФ. Плюс флаг указания места размещения результата в составе команды. Практически любая команда имеет доступ к любой ячейке текущего сегмента ОЗУ.
Функционал аккумулятора достаточно жестко ограничен (снято в 18-й серии и у улучшенной среднемладшей).
Действие флага С в операциях вычитания у АВР и ПИК различно "до наоборот".
Обращение к таблицам данных в ПЗУ резко отличается.
Ну и прочие "мелочи", включая специфику написания перемещаемых программ (относительная адресация) под ассемблером.
Деталировка отличий в "винной" на реальных проектах разбиралась.
А в остальном ессно "архитектура гарвардская".

К примеру:
Код: Выделить всё
AVR
Ldi R16,0xff
loop:
dec R16
brne loop
PIC
movlw 0xff
movwf 0x70 ; первый из регистров области SHR для PIC16F87x инкремент/декремент аккумулятора
; не допускается, хотя есть возможность размещения результата в аккумуляторе
loop:
decfsz 0x70,1
goto loop
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 21:53:44
BlackKilkennyCat
О боже мой! Что же тогда делать?! Всё прямо инопланетное!

Это как бы лабораторная работа. Если систему не изменили, она не сильно выходит а) за общие рамки вообще, б) за рамки методичек.
Всяческие нюансы разъяснены и дополнительная литература имеется.
Не верю, что человек, разобравшийся с асм в авр, застрянет с асм в пик. Максимум, он будет задавать вопросы по подобным мелочам.
И глянем само задание: программный счётчик с задержкой до 20 ms. 3 штуки.
А ведь достаточно написать на любом "яву для пик" да глянуть листинг асма...
Но даже до этого не догадаться.
Будущий инженер.
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 22:01:48
BOB51
Зависит от уровня задачи - без хорошей подготовки может и "подзастрять".
Особо, ежли современными методичками пользоваться.

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

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 22:03:35
BlackKilkennyCat
Уровень там написан: делэй

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

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 22:10:32
КРАМ
[uquote="BOB51",url="/forum/viewtopic.php?p=3928606#p3928606"]К примеру:
movlw 0xff
movwf 0x70
loop:
decfsz 0x70,1
goto loop[/uquote]
Код: Выделить всё
movlw 0xFF
loop:
addlw 0xFE; или sublw 0x01
btfss STATUS, Z
goto loop
Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 22:15:09
BOB51
Там одноуровневым циклом для 20 миллисекунд не отделаешся.
Частота на встроенном RC 4МГц - с учетом коэффициента 4 одноцикловая команда 0,000001 секунды.
А дальше считаем "циклы команд ветвления/пропуска".
КРАМ
Это уже из "дополнительной программы", а не простейший минимум!
Я так думаю ТОПИКСТАРТЕРУ вряд-ли давали подобное - иначе бы и вопроса не возникло.

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Сб ноя 21, 2020 22:46:08
valentinovich
[uquote="BOB51",url="/forum/viewtopic.php?p=3928620#p3928620"]В принципе при КАЧЕСТВЕННОЙ ПОДШОТОВКЕ (зависит от препода) и
собственном желании разобраться можно...
Однако и забывается весьма быстро, ежли нет ПОСТОЯННОЙ ПРАКТИКИ.
Разве что спецконспект и "шпоргалки" при длительных перерывах выручают.

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

Re: Люди добрые помогите сделать задание на ассемблере PIC
Добавлено: Вс ноя 22, 2020 00:02:22
BOB51
Даже если разобрался, но более месяца не имел практики потребуется день-два на "восстановление навыков" (и то при наличии надлежащих конспектов).
А тем более ежли при том "перепрыгивать" при работе с одного семейства на другое.
Как-то на себе проверено.

Вот еще СТУДНЮ В ПОМОЩ...
Правда за основу брались не АВР, а MCS51 но и при таком подходе удобнее с одного семейства на другое перескакивать:
классические среднемладшие
"энхансед" среднемладшие (гибрид 10/12/16 с 18-й)
может пригодится...
