Здравствуйте. Подскажите, пожалуйста- существует ли современная версия асемблера типа Parallax для PIC18 микроконтроллеров. Раньше такой был для PIC16, я на нем в середине 90х написал свою первую работающую программу для означенных МК. Там, помню, программа писалась в мнемониках, похожих на семейство х51. Не надо было заморачиваться с переключением банков памяти, удобно было работать с таблицами, какие-то еще вкусности.
В электронном оборудовании железнодорожного транспорта востребованы DC/DC-преобразователи, которые соответствуют определенным отраслевым стандартам (EN50155, EN50121, EN45545-2, EN61373). В этих нормативных документах содержатся практически все необходимые требования к компонентам, применяемым в ЖД-оборудовании. Широкий выбор DC/DC-преобразователей для ЖД-транспорта имеется в номенклатуре известного производителя MORNSUN. В настоящий момент продукция этой компании широко представлена на российском рынке и доступна как со склада, так и под заказ с небольшим сроком поставки.
Микроконтроллеры PIC для начинающих. Практика #1
Регистрация: 29.04.2009
Сообщений: 5
Репутация: 11
Ну, и не надо. Сам нашел http://www.tech-tools.com/cv16_main.htm. Хотелось бы знать мнение других по данной теме.
Компания MEAN WELL разработала две серии многофункциональных интеллектуальных источников бесперебойного питания на DIN-рейку – DRS-240 и DRS-480 – с выходной мощностью 240 и 480 Вт. Новые ИБП сочетают в одном корпусе AC/DC-источник питания, контроллер заряда/разряда АКБ и контроллер управления и мониторинга с возможностью программирования. Новые ИБП уже представлены в Компэл и предназначены для охранных и противопожарных систем, оборудования для экстренной связи, аварийного освещения и центральных систем мониторинга.
DmitriyVDN
DmitriyVDN
Регистрация: 08.11.2009
Сообщений: 2,283
Репутация: 613
а чем собственно MPLAB не устраивает?
лежит бесплатно на оф сайте производителя
мнемоника команд описана в даташите на любой МК
Опубликованы материалы вебинара, посвященного подходу компании MEAN WELL к созданию мощных управляемых систем низковольтного и высоковольтного питания и зарядных установок для промышленного, технологического, телекоммуникационного, медицинского, радиопередающего и другого оборудования, а также для систем альтернативной энергетики. На вебинаре мы рассмотрели новинки и серийную продукцию в концепции «3+N», расскажем об этой концепции и о том, как создать из готовых модулей систему питания мощностью до 360 кВт с напряжением до 380…400 В (постоянного тока). Были представлены ИП с рециркуляцией энергии для тестового оборудования и модули управления питанием.
Регистрация: 25.11.2008
Адрес: ДОНЕЦК
Сообщений: 311
Репутация: 57
ассемблер для того и существует, чтоб им пользовались любители
«заморачиваться »
в остальных случаях работают на С
ЯЗЫК АССЕМБЛЕРА за 3 МИНУТЫ
а ежли охота владеть асмом одновременнео сработая с разными семействами — я уже тут «таблички» выкладывал
http://www.rlocman.ru/forum/showthre. 4249#post54249
DmitriyVDN
DmitriyVDN
Регистрация: 08.11.2009
Сообщений: 2,283
Репутация: 613
ассемблер. «заморачиватьс я »
в остальных случаях работают на С
не вижу особых плюсов в использовании С
вот скажем использование памяти программ свыше 2Кбита
вы на Си как решаете?
Регистрация: 25.11.2008
Адрес: ДОНЕЦК
Сообщений: 311
Репутация: 57
а никак — я с С не дружу, поскольку почти все решения на кристаллах с малым объемом ПЗУ, да и переучиваться сейчас накладно (тем более для трех уже освоенных семейств) и время.
база в ближайшие год-два снова скакнет вперед, а «вечный студент» уже не котируется — молодым лучше с более высокотехнологичных языков начинать, ежли есть возможность в какую-нибудь «силиконовую долину» сбежать, иначе — лопата 06.08.2011 в 19:31 . Причина: Грамматическая ошибка
DmitriyVDN
DmitriyVDN
Регистрация: 08.11.2009
Сообщений: 2,283
Репутация: 613
По поводу С- я сравнивал языки С, Паскаль и Бейсик . Разницы в объеме откомпилированных программ не заметил .
. но программа на С так же сложна(для меня, по крайней мере) как и программа на ассемблере для ПИКов.
кажется пошел бред
Zahar вы понимаете что эти фразы взаимоисключают друг друга
а ассемблер МРLAB-а поддерживает очень много всего включая и макросы
Регистрация: 29.04.2009
Сообщений: 5
Репутация: 11
кажется пошел бред
Zahar вы понимаете что эти фразы взаимоисключают друг друга
а ассемблер МРLAB-а поддерживает очень много всего включая и макросы
1. Я сравнивал примеры, прилавгаемые Микроэлектроникой к своим МикроСи, МикроПаскалю и Микробейсику- одинаковые задачи, одинаковые алгориммы решения. Примерно одинаковый объем откомпилированой программы. Для этого не надо быть знатоком, чтобы понять, что делает готовая программа (ели Вы это имеете в виду)
2. Так я и хочу узнать, КАК создать макрос, например, DJNZ или CSNZ в MPLAB!
Регистрация: 11.08.2009
Сообщений: 155
Репутация: 28
Источник: www.rlocman.ru
Разработка программного обеспечения для PIC-микроконтроллеров
Аннотация: В этой лекции рассказывается об основных этапах проектирования и разработки цифровых устройств и систем на основе микроконтроллеров, а также приводится обзор методов совместной отладки аппаратных и программных средств.
6.2. Разработка программного обеспечения для PIC-микроконтроллеров
Разработка программного обеспечения является центральным моментом общего процесса проектирования. Центр тяжести функциональных свойств современных цифровых систем находится именно в программных средствах.
Основным инструментом для профессиональной разработки программ является ассемблер , предполагающий детализацию на уровне команд МК. Только ассемблер позволяет максимально использовать ресурсы кристалла.
Для микроконтроллеров PIC выпущено большое количество различных средств разработки . В данной главе речь пойдет о средствах, предоставляемых фирмой Microchip , которые весьма эффективны и широко используются на практике.
6.2.1. Ассемблер MPASM
Ассемблер MPASM представляет собой интегрированную программную среду для разработки программных кодов PIC микроконтроллеров всех семейств. Выпускается фирмой Microchip в двух вариантах: для работы под DOS и для работы под Windows 95/98/NT. Ассемблер MPASM может использоваться как самостоятельно, так и в составе интегрированной среды разработки MPLAB. Он включает несколько программ: собственно MPASM, MPLINK и MPLIB, причем каждая из них обладает собственным интерфейсом.
Программа MPASM может использоваться для двух целей:
- генерации исполняемого (абсолютного) кода, предназначенного для записи в МК с помощью программатора ;
- генерации перемещаемого объектного кода, который затем будет связан с другими ассемблированными или компилированными модулями.
Исполняемый код является для MPASM выходным кодом по умолчанию. При этом все переменные источника должны быть явно описаны в тексте программы или в файле, подключаемом с помощью директивы INCLUDE . Если при ассемблировании не выявляется ошибок, то генерируется выходной . hex -файл, который может быть загружен в МК с помощью программатора .
При использовании ассемблера MPASM в режиме генерации перемещаемого объектного кода формируются объектные модули, которые могут быть впоследствии объединены с другими модулями при помощи компоновщика MPLINK. Программа-компоновщик MPLINK преобразует перемещаемые объектные коды в исполняемый бинарный код, привязанный к абсолютным адресам МК. Библиотечная утилита MPLIB позволяет для удобства работы сгруппировать перемещаемые объекты в один файл или библиотеку. Эти библиотеки могут быть связаны компоновщиком MPLINK в файл выходного объектного кода ассемблера MPASM.
Программы MPASM и MPLINK доступны через оболочку MPASM, тогда как MPLIB доступна только со своей командной строки.
Исходным файлом для ассемблера MPASM по умолчанию является файл с расширением . ASM . Текст исходного файла должен соответствовать требованиям синтаксиса, приведенным далее.
Ассемблер MPASM может быть вызван командной строкой
MPASM [/[ /. ]]
где / означает выбор режима работы ассемблера в командной строке; – имя файла на ассемблирование.
Режимы работы ассемблера , выбранные по умолчанию, приведены в табл. 6.1.
Определяет уровень диагностических сообщений в файле листинга /w , где может быть:
0 – сообщать все,
1 – сообщать о предупреждениях и ошибках,
2 – сообщать только об ошибках.
Здесь и далее используются следующие соглашения по использованию символов:
- [ ] – для аргументов по выбору;
- < >– для выделения специальных ключей , или дополнительного выбора;
- | – для взаимоисключающих аргументов (выбор ИЛИ);
- строчные символы – для обозначения типа данных.
Выбор по умолчанию, приведенный в табл. 6.1, может быть изменен командной строкой:
- / разрешает выбор;
- /+ разрешает выбор;
- / – запрещает выбор.
Исходный ассемблерный файл создается с использованием любого ASCII текстового редактора. Каждая строка исходного файла может содержать до четырех типов информации :
- метки (labels)
- мнемоника ( mnemonics )
- операнды ( operands )
- комментарий ( comments )
Порядок и положение каждого типа имеет значение. Метка должна начинаться в колонке номер один. Мнемоника может начинаться в колонке два или далее. Операнды идут за мнемоникой. Комментарий может следовать за операндом, мнемоникой или меткой или может начинаться в любом столбце, если в качестве первого не пустого символа используется * или ; .
Максимальная длина строки 255 символов.
Один или несколько пробелов должны отделять метку и мнемонику или мнемонику и операнд(ы). Операнды могут отделяться запятой. Например:
List p=16C54, r=HEX ORG 0x1FF ;Вектор сброса GOTO START ;Возврат на начало ORG 0x000 ;Адрес начала исполнения ;программы START MOVLW 0x0A ;Выполнение программы ;PIC МК MOVLW 0x0B ;Выполнять всегда GOTO START END
Метки
В поле метки размещается символическое имя ячейки памяти, в которой хранится отмеченный операнд. Все метки должны начинаться в колонке 1. За ними может следовать двоеточие ( :), пробел, табуляция или конец строки. Комментарий может также начинаться в колонке 1, если используется одно из обозначений комментария.
Метка может начинаться с символа или нижнего тире ( _ ) и содержать буквенные символы, числа, нижние тире и знак вопроса. Длина метки может быть до 32 символов.
Мнемоники
Мнемоники представляют собой мнемонические обозначения команды, которые непосредственно транслируются в машинный код. Мнемоники ассемблерных инструкций, директивы ассемблера и макровызовы должны начинаться, по крайней мере, в колонке 2. Если есть метка на той же линии, она должна быть отделена от этой метки двоеточием или одним или более пробелами или табуляцией.
Операнды
В этом поле определяются операнды (или операнд), участвующие в операции. Операнды должны быть отделены от мнемоники одним или более пробелами или табуляцией. Операнды отделяются друг от друга запятыми. Если операция требует фиксированного количества операндов, то все на линии после операндов игнорируется. Комментарии разрешаются в конце линии.
Если мнемоники позволяют использовать различное число операндов, конец списка операндов определяется концом строки или комментарием.
Выражения используются в поле операнда и могут содержать константы, символы или любые комбинации констант и символов, разделенных арифметическими операторами. Перед каждой константой или символом может стоять + или – , что указывает на положительное или отрицательное выражение.
В ассемблере MPASM используются следующие форматы выражений:
- текстовая строка;
- числовые константы и Radix ;
- арифметические операторы и приоритеты;
- High / Low операторы.
Текстовая строка – это последовательность любых допустимых ASCII символов (в десятичном диапазоне от 0 до 127), заключенная в двойные кавычки. Строка может иметь любую длину в пределах 132 колонок. При отсутствии ограничения строки она считается до конца линии. Если строка используется как буквенный операнд, она должна иметь длину в один символ, иначе будет ошибка.
Числовая константа представляет собой число, выраженное в некоторой системе счисления. Перед константой может стоять + или – . Непосредственные величины в константах рассматриваются как 32-разрядные целые без знака.
MPASM поддерживает следующие системы счисления (представления значений или Radix ): шестнадцатиричную, десятичную, восьмиричную, двоичную и символьную. По умолчанию принимается шестнадцатиричная система. Табл. 6.2 представляет различные системы счисления.
Операторы – это арифметические символы, подобные + и – , которые используются при формировании выражений. Каждый оператор имеет свой приоритет. В общем случае приоритет устанавливается слева направо, а выражения в скобках вычисляются первыми. В табл. 6.3 приведены обозначения, описания и примеры применения основных операторов MPASM.
Десятичная | D» или . | D’100′ или .100 |
16-ричная | H» или 0x | H’9f’ или 0x9f |
Восьмиричная | O» | O’777′ |
Двоичная | B» | B’00111001′ |
Символьная | » или A» | ‘C’ или A’C’ |
$ | Текущий счетчик команд | goto $ + 3 |
( | левая скобка | 1 + ( d * 4 ) |
) | правая скобка | ( lenght + 1 ) * 255 |
! | операция «НЕ» (логическая инверсия) | if ! ( a — b ) |
~ | дополнение | flags = ~ flags |
— | инверсия (двоичное дополнение) | – 1 * lenght |
High | выделить старший байт слова | movlw high llasid |
Low | выделить младший байт слова | movlw low (llasid + .251) |
upper | выделить наибольший байт слова | movlw upper (llasid + .251) |
* | Умножение | a = c * b |
/ | Деление | a = b / c |
% | Модуль | lenght = totall % 16 |
+ | Сложение | Tot_len = lenght * 8 + 1 |
— | Вычитание | Entry_Son = ( Tot – 1 ) / 8 |
сдвиг влево | Val = flags | |
>> | сдвиг вправо | Val = flags >> 1 |
>= | больше либо равно | if ent >= num |
> | больше | if ent > num |
меньше | if ent < num | |
меньше либо равно | if ent | |
== | равно | if ent == num |
!= | не равно | if ent != num |
И» | flags = flags ИСКЛЮЧАЮЩЕЕ ИЛИ» | flags = flags ^ err_bit |
| | поразрядное «ИЛИ» | flags = flags | err_bit |
логическое «И» | if ( len == 512)( b == c ) | |
|| | логическое «ИЛИ» | if ( len == 512 ) || ( b == c ) |
= | установить равным. | entry_index = 0 |
++ | увеличить на 1 (инкремент) | i ++ |
— | уменьшить на 1 (декремент) | i — |
Операторы high , low и upper используются для получения одного байта из многобайтного значения, соответствующего метке. Применяются для управления расчетом точек динамического перехода при чтении таблиц и записи программ.
Операторы инкремента и декремента могут применяться к переменной только в качестве единственного оператора в строке. Они не могут быть встроенным фрагментом более сложного выражения.
Источник: intuit.ru
Микроконтроллеры PIC: команды, операции, примеры
Общие сведения.
Система команд контроллеров PIC16C5X состоит из 33 инструкций. Использование RISC архитектуры обеспечивает выполнение:
● 26 команд за один цикл;
● 4 условных команд (DECFSZ, INCFSZ, BTFSC, BTFSS) за один цикл, если результат проверки условия не равен нулю, и за два цикла в противном случае;
● 3 команд (CALL, GOTO, RETLW) за два цикла.
Каждая команда представляет собой 12–разрядный двоичный код (слово). В коде команды выделяются поля (разряды), в которых указываются выполняемая операция, адреса ячеек памяти операндов–источников и приемника (результата). Совокупность полей образует формат команды. В зависимости от количества полей в формате команды можно выделить три группы команд (рис. 6.4.1):
● команды, формат которых содержит три поля:
• OPCODE— код операции;
• f— адрес регистра с требуемым операндом (или битом). Другой операнд в двуместных операциях всегда находится в регистре W;
• d— регистр назначения (destination): при d= 0 результат операции помещается в рабочий регистр W, при d= 1 — в регистр f, заданный в команде;
• b— номер бита, участвующего в операции;
● команды, формат которых содержит два поля:
• OPCODE— код операции;
• f— адрес регистра общего назначения (в операциях загрузки);
• к — 8– или 9–битная константа (в операциях с константами и передачи управления);
● безадресные команды, формат которых состоит из одного поля — кода операции OPCODE.
Описание команд
Для компактного изложения выделим и рассмотрим четыре группы команд и представим материал в табличной форме.
Операции с байтами
В эту группу включено 18 операций (табл. 6.4.1), при этом назначению dest при d= 0 соответствует рабочий регистр W, а при d= 1 — адресуемый регистр f. Во всех командах за исключением TRIS f значение f в десятичных числах лежит в пределах 0 ≤ f ≤ 31.
Операции с битами
Во всех командах этой группы (табл. 6.4.2) значения адреса регистра f и номера бита b должны лежать в следующих пределах: 0 ≤ f≤ 31, 0 ≤ b≤ 7.
Операции с константами и команды передачи управления
Константы должны быть расположены в памяти программ. Для работы с ними используется непосредственная адресация (IMM). Контроллер оперирует с константами двух форматов, для которых в мнемонике команды используется общая аббревиатура константы k (рис. 6.4.1).
В командах загрузки и логических операций используются 8–разрядные константы (табл. 6.4.3), поскольку их разрядность должна совпадать с разрядностью второго операнда и регистра результата. Значение константы лежит в пределах 0 ≤ k≤ 255. Кроме того, 8–разрядная константа k используется как адрес вызываемой подпрограммы и возврата в коде команд CALL и RETLW. Единственной командой, которая использует 9–разрядную константу в качестве абсолютного адреса первой команды вызываемой подпрограммы, является команда безусловного перехода GOTO k.
Безадресные команды
В командах этой группы (табл. 6.4.4) адресуемый объект и выполняемое действие задается мнемоникой, например, CLRW— CLR (clearing— очистка) регистра W.
В табл. 6.4.5 приведено распределение команд по функциональному признаку.
В командах с байтами (табл. 6.4.1) и битами (табл. 6.4.2) для обращения к регистрам специальных функций и общего назначения используется прямая (DIR) и косвенная (INDIR) адресация (рис. 6.3.1).
В мнемонике команд с прямой адресацией OPCODE f, d эти регистры обозначаются символом f, в качестве которого может фигурировать 16–ричный адресный код или обозначение регистра, например:
ADDWF 04h, d или ADDWF FSR, d.
При косвенной адресации используется дополнительный регистр FSR, в котором хранится адрес вызываемых данных. Биты 6 и 5 FSR служат для выбора банка, а пять младших бит (4–0) адресуют ячейку памяти в пределах банка (адреса ячеек 00h… 1Fh). Обращение к требуемому байту данных осуществляется через псевдо–регистр INDF, для чего в мнемонике команды указывается наименование (INDF) или адрес (00h) псевдорегистра, например, ADDWF
INDF, d или ADDWF0, d. Отметим, что чтение косвенным способом самого регистра INDF даст результат 00h (т е. FSR= 0), а запись в регистр INDF не приведет к изменению его содержимого (хотя биты состояния в регистре
STATUS могут быть изменены).
При написании программ необходимо иметь в виду, что разряды 6 и 5 регистра косвенной адресации FSR определяет адрес ячейки памяти не только при использовании косвенной адресации, но и при прямой адресации, так как непосредственно в коде команды с прямой адресацией указывается лишь 5–разрядный адрес ячейки.
Регистры W, OPTION и TRIS не имеют собственных адресов в карте памяти, поэтому для работы с ними используются специальные команды с неявной адресацией (команды MOVWF f, MOVLW k, OPTION и TRIS f). Для очистки регистров также используется команда CLRF f с неявной адресацией.
Для работы с константами (табл. 6.4.3) используется непосредственная адресация (IMM), так как константа k представляет собой непосредственный операнд, участвующий в логической операции или предназначенный для загрузки в регистр–приемник. Все команды используют 8–разрядные константы, кроме команды безусловного перехода GOTO к, в которой (0 ≤ k≤ 511).
Особенности выполнения команд
Организация циклов. Из входных импульсов с частотой fOSC= 1/TOSC. поступающих с вывода OSC1/CLKIN микроконтроллера на внутренний преобразователь, формируются четыре циклические неперекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4 с частотой следования fOSC/4. Процесс выполнения команды включает два цикла: цикл выборки и цикл выполнения команды. Цикл состоит из четырех тактов Q1…Q4 длительностью TOSC каждый.
В такте Q 1 цикла выборки происходит увеличение содержимого счетчика, в последующих тактах — считывание команды из памяти программ, в такте Q4 — ее запись в регистр команд. Декодирование и выполнение команды осуществляется в тактах Q1 …Q4,последующего цикла выполнения.
Использование двухступенчатого конвейера позволяет совместить во времени оба цикла, поэтому эффективное время выполнения для большинства команд составляет один цикл (рис. 6.4.2).
Если команда изменяет содержимое счетчика команд (например, команда GOTO), то для ее выполнения потребуется два цикла. В цикле выборки новый адрес заносится в счетчик команд.
В такте Q1 цикла выполнения команды выбранная команда защелкивается в регистр команд. В течение тактов Q2, Q3 и Q4 происходит декодирование и выполнение команды (в такте Q2 чтение операнда из памяти данных, в такте
Q4 запись результата в память). Команды, изменяющие содержимое PC. К таким командам, помимо команд CALL, GOTO, относятся все команды, в которых регистром f является счетчик команд PC. При выполнении команд модификации счетчика, например, MOVWF PC (рис. 6.3.2):
● в младший байт PCL счетчика команд загружается содержимое рабочего регистра W;
● бит 8 сбрасывается в 0;
● в разряды 9, 10 записываются значения бит РА0, РА1 из регистра состояния STATUS.
Наличие 0 в разряде 8 свидетельствует о том, что доступны только первые 256 адресов каждой страницы памяти программ.
Так как команда CALL k(k = 0…255) предписывает использование только 8–разрядного адреса, начальный адрес вызываемой подпрограммы также располагается в первых 256 ячейках памяти программ текущей страницы. Команда
GOTO k(k= 0…511) может передать управление только в пределах текущей страницы памяти программ.
При достижении границы страницы счетчик команд автоматически переходит на начало следующей страницы. Однако биты выбора страницы в регистре состояния STATUS не изменяются автоматически. Поэтому, если биты РА1, РА0 не будут изменены программно, последующие команды MOVWF PC, CALL, GOTO возвратят управление к предыдущей странице.
После сброса контроллера:
● регистр STATUS находится в состоянии 0001 1ФФФ (Ф = 0 или 1), поэтому биты РА1, РА0 выбора страницы указывают на страницу 0;
● старший байт PCL счетчика команд находится в состоянии 1111 1111.
Следовательно, после сброса счетчик команд PC содержит код 001 1111 1111, что соответствует странице 0 (00) и последней ячейке памяти последней страницы (для PIC16C54 состояние после сброса равно 1FFh = 1 1111 1111). Поэтому, если по стартовому адресу будет расположена команда GOTO к, управление будет передано на следующую нулевую страницу.
Команды BCF и BSF
Команды сброса (BCF) и установки (BSF) бита в регистре f считывают байт целиком, модифицируют один бит и выводят результат в приемник, т. е. выполняются в режиме чтение–модификация–запись. При обращениях к портам команды BCF и BSF могут вызвать ошибочный результат, так как с помощью команды TPIS одни выводы порта запрограммированы как входы, другие — как выходы.
Пусть к биту 3 регистра PORTB обращается команда BSF, которая сначала считывает все восемь бит, затем выполняет установку бита 3 в 1, после чего модифицированный байт целиком записывается в выходную защелку порта. Если другой бит (например, бит 4) регистра PORTB в данный момент определен как вход, входной сигнал на этом выводе будет считан и записан обратно в выходную защелку этого же вывода, затирая ее предыдущее состояние. Если позднее линия 4 переключится в режим выхода, ее состояние может оказаться ошибочным.
Возможность такой ситуации должна быть учтена при программировании порта. Другая особенность, которая должна учитываться при программировании: запись в порт вывода происходит в конце цикла выполнения команды, а чтение в начале.
При чтении данные должны быть стабильны в начале цикла выполнения команды. Поэтому при операциях чтения, следующих сразу же за записью в тот же порт необходимо учитывать инерционность установления напряжения на выводах. Может потребоваться программная задержка (команда NOP), чтобы напряжение на выводе успело стабилизироваться до начала исполнения следующей команды чтения.
Источник: pue8.ru