Например TDA7294

Форум РадиоКот • Просмотр темы - Самообучение ассембреру, проверьте пожалуйста знания
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт янв 30, 2026 13:18:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 32 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 03:28:06 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Доброго времени суток,Коты! Решил освоить контроллеры, нашел несколько самоучителей в сети (По ассемблеру), книги, примеры и т.д. Все самообучение было привязано в основном к контроллеру PIC16F84A. К сожалению программатора пока нет (буду делать сам, детальки уже идут, правда пока не определился какой делать), и компутер для этого дела не подходит пока, в общем есть желание на практике проверить свои знания, да нет возможности пока :cry:.
В общем решил попробовать написать прошивку, для начала простенькую, помигать светодиодами. Прошивку писал на ассемблере, в программке MPLAB 5.70 (в сети говорилось что она работает хорошо, так же скачал 7.50, правда еще не разбирался с нет), так же скачал ПониПрог...
Хочу попросить Вас проверить правильность написания программки, будет ли работать, может можно что то поменять для компактности или это просто бред из набора команд. Все номера ячеек брал из описания 16F84A, так как нет пока ни пика ни программатора (о чем уже говорил)
Схема нарисована на скорую руку, для того что бы было видно чего хотел изобразить в прошивке...
Алгоритм задумывался такой:
Подаем питание.
Загораются через 1 светодиоды на 1 секунду
Затем пока не нажмем кнопку, светодиоды не горят.
Нажали кнопку и держим- загорелись все светодиоды на 2 секунды - затем светодиоды мигают против часовой стрелки - 3 секунды, потом против часовой стрелки - 3 секунды, потом опять зажигаются все и так по кругу пока нажата кнопка.
Если кнопку нажать и отпустить, то будет только 1 цикл, если держать, то циклы будут повторяться пока не отпустишь кнопку.
Схема конечно ужасная, но я еще не рисовал красивую, пока только наброски.
Изображение
В архиве файл ASM & HEX
Вложение:
мигание светодиодов.zip

При первой компиляции мплаб много ругался, устранил все замечания (в основном опечатки и неправильные ригистры в названиях), после чего написанное было скомпилировано без ошибок, мплаб "сказал типа все хорошо". Прошелся по тексту программы пошагово, вроде все отрабатывается как задумано...
Посмотрите пожалуйста, критике, объяснениям и поправкам буду только рад, буду исправляться, работать над ошибками и языком.
Программка не полная пока, эффектов будет больше, просто пока нет смысла писать не зная правильно ли я вообще мыслю.
Заранее спасибо. :))


Последний раз редактировалось Gudd-Head Вс фев 09, 2014 15:32:13, всего редактировалось 2 раз(а).
Сюда перенёс


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 05:50:16 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Нашел ошибку с счетчиками, недоглядел и присвоил разным счетчикам одни и те же ячейки хранения, переписал, файлы ниже
Вложение:
мигание светодиодов.zip


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 07:55:30 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7014
Откуда: Ижевск
Рейтинг сообщения: 0
Команды goto закомментены для отладки?

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 08:34:02 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Да, забыл снять. Для перехода в следующую ПП metka2, минуя счетчика в пп metka1. Смотрел сколько времени намотает счетчик в ПП metka2.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 12:38:48 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2348
Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
NikolayZ писал(а):
в сети говорилось что она работает хорошо
Вы совершаете грубейшую ошибку, воспринимая информацию из различных источников, как аксиому, не пропуская её через мозговой фильтр.
Ну, в какой "сети" такое говорилось?
Такое только утверждал г-н Корабельников, хотя, даже когда он писАл свой постулат, версия была уже далеко не актуальна, поскольку предназначена для ОС типа W-95. На данный момент, последняя версия MPLAB IDE - 8.92. Находится здесь.
Конечно, некоторая полезная информация в в/у многотомнике и содержится, но всё, что качается построения программ, оформления текстов, программирования, и т.п, боже упаси!
Что бы посмотреть работу программы, без программирования МК, есть программный симулятор Proteus. Надо только помнить, что это - большая программа, и как все подобные программы, имеет некоторые особенности, и требует некоторых навыков работы.
Более того. Данный симулятор прекрасно стыкуется с МПЛАБ ИДЕ, что позволяет повысить удобство отладки программы.
Для программирования, если собираетесь изготавливать программатор самостоятельно, вобщем-то альтернатив нет. Если для ком-порта, то доработанный Extra-PIC, если для USB, PICkit2. Про используемый софт, там же.
С различными ПониПрогами, и другими JDM'ами, есть большая вероятность получения огромного геморроя, вместо работы.
Однако, если руки растут не из плечевых суставов, то вы его всё-равно получите. :)



NikolayZ писал(а):
будет ли работать, может можно что то поменять для компактности
Работать, возможно и будет, а поменять надо ВСЁ, начиная с оформления. Посмотрите примеры в директории МПЛАБа \MPASM Suite\Template\Code. Файлы процессорTEMP.ASM.
ВременнЫе задержки грамотнее использовать через прерывания от таймера. И вообще, аппаратные модули МК надо использовать "по максимуму".
Старайтесь делать так, чтоб, если вдруг Вам захочется изменить вывод порта, или константу, не надо было перелопачивать всю программу в поисках нужных строк, а достаточно изменить значение в одном месте. Это, например, можно сделать при помощи той же директивы EQU, в шапке.
Код:
Например:
PORTOUT       EQU      PORTB

Или:
PINO             EQU       B5

Вот описание других директив MPASM'а.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 13:16:08 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
да, г-на Каробельникова тоже читал, после чего осталось много вопросов, после прочтения другого самоуяителя вопросов осталось меньше... протеус скачал, пока еще не разобрался что да как... Так же качал мплаб последний с сайта микрочипа, да только после установки он полез в нет и предложил купить какое то дополнение...
так же есть скачаный 7,5 кажется мрлаб...
по поводу прошивки, сидел отлаживал, нашел нестыковки, поправляю... подскажите, есть какая нить программка для счета времени исполнения ПП? а то мплаб 10 секунд отсчитывал почти час... :(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 13:16:53 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
По поводу менять все в оформлении, эт да... Буду стараться, это ж моя первая прошивка :))) У меня пока еще бардак в голове, вот пишу (со шпаргалками) и запоминаю что к чему. Сразу наврядли получится все компактно написать :(((


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 14:01:29 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2348
Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
NikolayZ писал(а):
качал мплаб последний с сайта микрочипа"
Последний", это какой? Не путайте MPLAB и MPLAB-X.
А что бы программы зря в Инет не лазили, надо, при установке, выбирать ручной режим (это опять к вопросу о мозговом фильтре).
Подозреваю, что Вы ставили именно MPLAB-X и он Вам предложил купить сишный компилятор.

NikolayZ писал(а):
мплаб 10 секунд отсчитывал почти час...
Это Вы просто отладчиком пользоваться не умеете. Видимо использовали "автоматически-пошаговый" режим, а надо "автоматический", и точки останова ставить.
А программа такая есть в самом МПЛАБе. Называется Stopwatch (посмотрите в менюхах). Доступна не со всеми отладчиками. Например с MPLAB SIM доступна, а с Proteus VSM - нет. Зато в Proteus VSM это видно в самом вьюере.
Только, что б Stopwatch правильно время считал, сперва надо задать тактовую частоту в настройках.

NikolayZ писал(а):
Сразу наврядли получится все компактно написать
Дело как-раз не в компактности, а в логике, и понимании.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 15:48:13 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
да вроде делал как надо, поставил точку остановки, F7 дошел до нужной мне подпрограммы, открыл таймер, поставил в нем 0 и запустил в автомате... можно Вас попросить посмотреть шапку програмы и подготовку, с этим у меня явно недопонимание :( гляжу на нее и такое чувство что там косяк, а где не могу понять... видимо мозг уже не хочет сообрать...
Да, Вы правы, мплаб -х скачал...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пт янв 31, 2014 18:22:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2348
Откуда: Санкт-Ленинград
Рейтинг сообщения: 1
NikolayZ писал(а):
запустил в автомате
Какой кнопкой?
Надо было F9.

NikolayZ писал(а):
можно Вас попросить посмотреть шапку програмы
Никак невозможно, ввиду отсутствия таковой. Нету у Вас шапки.
Всё, что написано, есть в файле *.inc (в каталоге \MPASM Suite, не стесняйтесь посмотреть) и это можно было бы и не писАть. Только для этого, нужно подключить этот самый *.inc к проекту. Выше давал ссылку на примеры оформления, где про это сказано. И там как-раз можно шапку посмотреть.
Так же давал ссылку на мануал MPASM'а. Там же есть куча документации на русском (учтите, что не без огрехов).
Так что, как говорил дедушка Вова: "Читать, читать, и ещё раз читать".

Ещё совет.
Не оставляйте настройки "по умолчанию", всегда задавайте их явно.
Т.е. в самом начале программы, прописываете настройки для всех регистров SFR.
Лично у меня это выглядит так:
Код:
             clrf   ANSEL           ; Регистр конфигурации входов порта A (цифровой-аналоговый)
             bsf   ANSEL,ANS0      ; Analog input
;             bsf   ANSEL,ANS1      ; Analog input
;             bsf   ANSEL,ANS2      ; Analog input
;             bsf   ANSEL,ANS3      ; Analog input
;             bsf   ANSEL,ANS4      ; Analog input
Таким образом, настройка сводится к "закоментированию"/"раскоментированию" необходимых строк.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Сб фев 01, 2014 09:40:28 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Доброго времени суток!!!! Сейчас в правильном направлении двигаюсь??? :oops:
Изображение
Вложение:
Безымянный.jpg [58.19 KiB]
Скачиваний: 1461


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Сб фев 01, 2014 11:12:55 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Еще вопрос такой, если мне не нужно управление каждым портом в отдельности, переключать какой то порт во время выполнения программы из выхода на вход например. Я могу не расписывать порты, а обойтись PORTB EQU 06H, и потом обрашаться к нему через PORTB / CLR PORTB ИЛИ MOVWF 01010101
MOVWF ROPTB
И еще вопрос, если я напишу CLP PORTB,01h - очищу же только 2-ю ножку порта Б?
Извините, если вопросы глупые, что то я уже путаться стал, видимо надо отдохнуть...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Вс фев 02, 2014 00:08:31 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2348
Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
NikolayZ писал(а):
видимо надо отдохнуть...
Это точно.
NikolayZ писал(а):
если я напишу CLP PORTB,01h - очищу же только 2-ю ножку порта Б?
Видимо речь о команде clrf?
Посмотрите в даташите описание её работы.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Вс фев 02, 2014 09:27:54 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Доброго времени суток, эт опять я....
В общем кое что переписал, не знаю правда насколько правильно... При компиляции выдается 2 предупреждения, но компиляция проходит без ошибок, пишет вот такую штуку;
_____
Debug build of project `C:\Program Files\Microchip\Pic\brelok\Brelok.mcp' started.
Language tool versions: MPASMWIN.exe v5.51, mplink.exe v4.49, mplib.exe v4.49
Preprocessor symbol `__DEBUG' is defined.
Sun Feb 02 16:08:49 2014
----------
Make: The target "C:\Program Files\Microchip\Pic\brelok\Brelok.o" is out of date.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "Brelok.asm" /l"Brelok.lst" /e"Brelok.err" /d__DEBUG=1
Message[302] C:\PROGRAM FILES\MICROCHIP\PIC\BRELOK\BRELOK.ASM 19 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROGRAM FILES\MICROCHIP\PIC\BRELOK\BRELOK.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
Make: The target "C:\Program Files\Microchip\Pic\brelok\Brelok.cof" is out of date.
Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p16F84A "Brelok.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"Brelok.cof" /M"Brelok.map" /W /x
MPLINK 4.49, Linker
Device Database Version 1.14
Copyright (c) 1998-2011 Microchip Technology Inc.
Errors : 0

Loaded C:\Program Files\Microchip\Pic\brelok\Brelok.cof.
----------
Debug build of project `C:\Program Files\Microchip\Pic\brelok\Brelok.mcp' succeeded.
Language tool versions: MPASMWIN.exe v5.51, mplink.exe v4.49, mplib.exe v4.49
Preprocessor symbol `__DEBUG' is defined.
Sun Feb 02 16:08:51 2014
----------
BUILD SUCCEEDED
_____
Саму программку прогнал в МПлабе, весь алгоритм отрабатывается как задумано
(Подаем питание, светодиоды через 1 мигнут 1 раз и будут ждать нажатия кнопки, после нажатия будут мигать по кругу, попутно отслеживая нажатие кнопки)
В общем хочу вас попросить о 2-х вещах:
1- что за предупреждения выдает мплаб (описание этого кода нашел, но нему понять что нужно изменить)
2- посмотрите пожалуйста программу на предмет правильного использования команд, я понимаю что в плане компактности и грамотности оформления там хаос, мне бы понять правильно написано, в дальнейшем буду стараться сделать компактно и красиво...
Заранее спасибо за помощь.
З.Ы. Сильно собак не спускайте, я пока только учусь :oops:
Вот ASM файл
Вложение:
Brelok.asm [5.19 KiB]
Скачиваний: 308


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Вс фев 02, 2014 11:28:12 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
Ура!!! Разобрался с протеусом, собрал в нем схему, подключил прошивку, и первые 2 алгоритма раьотают :))) потом мигают но хаотично, буду копать прошивку:)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Вс фев 02, 2014 22:19:51 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 10
Рейтинг сообщений: 163
Зарегистрирован: Вс янв 09, 2011 16:51:39
Сообщений: 2348
Откуда: Санкт-Ленинград
Рейтинг сообщения: 0
NikolayZ писал(а):
что за предупреждения выдает мплаб
Мля!
Вы уже, наконец посмотрите в/у файлы из МПЛАБа, или так и будете одни и те же вопросы задавать?
В чём причина, видно в листинге. Происходит потому, что МПАСМ умеет работать только с нулевым банком. Почему так сделано, не знаю.
Программу Вашу смотреть, сорри, сейчас некогда.
P.S.: И не думайте, что уровень Ваших знаний будет прямо пропорционален количеству постов на форуме. :wink:
Ссылок Вам достаточно дадено. Читайте, "переваривайте". Это - довольно длительный процесс, так что запаситесь терпением.

_________________
ICQ нет, и, в ближайшее время, не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Вс фев 09, 2014 16:20:09 
Друг Кота

Карма: 27
Рейтинг сообщений: 1283
Зарегистрирован: Ср фев 11, 2009 20:35:58
Сообщений: 7853
Рейтинг сообщения: 0
NikolayZ
Нормально написано для первого раза.
Если не хочеш видеть 302 , то для банка1 пиши reg^80 (PORTB^80)
На будующие вопросы выкладывай проект MPLAB. Быстрее ответ получиш.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Пн фев 17, 2014 06:49:05 
Опытный кот
Аватар пользователя

Зарегистрирован: Пн янв 21, 2013 05:34:19
Сообщений: 705
Откуда: Сахалин
Рейтинг сообщения: 0
спасибо :-) смоделировал в протеусе устройство, работает как задуманно. сейчас работаю над программатором, буду пробовать собирать и прошивать. сейчас изучаю 12f675, дается сложнее,нежели 84А, с самоучителями изучать намного легче было.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Ср фев 19, 2014 13:12:40 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Принцип программирования для 12f675 абсолютно такой же, отличие только в некоторых регистрах.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Самообучение ассембреру, проверьте пожалуйста знания
СообщениеДобавлено: Ср фев 19, 2014 23:39:38 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
NikolayZ , здесь уроки на несколько порядков лучше гАвна что Вы читали http://www.gooligum.com.au/tut_midrange.html
Что, язык не знаем? :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y