alt1.Общие понятия

Сразу хочу объяснить, а зачем все это нужно? Прежде всего точность вычислений, а она порой, ой как нужна.

Различают две формы представления двоичных чисел: «с фиксированной запятой» и «с плавающей запятой». С фиксированной запятой, надеюсь, эту форму уже многие знают, но позволю себе напомнить коротко (для определения правил игры, работаем только с двухбайтовыми числами):

 

 

 

altОпределимся, как будем располагать числа в разрядной сетке. Вариантов много. А раз так, зачем, что-то изобретать, есть международный стандарт предоставления чисел IEEE 754. «Standard for Binary Floating-Point Arithmetic». Переводится  «Стандарт для двоичной aрифметики с плавающей запятой». Вот и разберемся с ним, в общих понятиях, необходимых для нас..

     Стандарт IEEE 754 представляет числа с одинарной точностью (float) и с двойной точностью (double). Для записи числа в формате с плавающей запятой одинарной точности требуется тридцатидвухбитовое слово.

altХочу популярно, на примере объяснить, что мне нравится в ассемблере. Это его гибкость и возможность подумать и сделать не стандартно именно под необходимую задачу.

Сразу скажу, я ни в какой мере не осуждаю любителей языков высокого уровня.

Это просто глупо, особенно при объеме  памяти и производительности современных микроконтроллеров.

Мне нужно было произвести простое вычисление, умножить двухбайтную константу 0xFFFF на однобайтное число.

 

alt   Продолжение статьи описанный на сайте chipmk.ru
«Вариант создания клавиатуры без прерываний»
Вариант без прерываний не оптимален, так как требует ждать время фиксированных задержек, программа ничего полезного в это время не делает.
Для многих программ это не критично, но так делать просто неудобно и не оптимально.
  Предлагаемый вариант клавиатуры гибче, практически не занимает время основного цикла программы.  Основная обработка очень короткая, а счет антидребезговой задержки идет в прерывании.

Как известно, управление индикатором на основе HD44780, ведется по шине данных. Это 8 или 4 занятых порта контроллера. Практически все время «простаивают». Вот и подумал, чем бы их еще занять.

После копаний в Интернете родился вариант «для меня» универсальной клавиатуры, которым я практически всегда и пользуюсь.

Суть данного варианта в том, что создается матрица 2х2(4 кнопки) максимум 4х4 кнопки (16 кнопок). Практически для всех случаев подходит.

 

Простое сравнения двух беззнаковых 16-разрядных чисел  X и Y.

старший байт H, младший байт L

  movf    HX,W
subwf   HY,W
btfss   STATUS,C
goto    Xbol     ; результат: X > Y
btfss   STATUS,Z
goto    Ybol     ; результат: Y > X
movf    LX,W
subwf   LY,W
btfss   STATUS,C
goto    Xbol     ; результат: X > Y
btfss   STATUS,Z
goto    Ybol     ; результат: Y > X
goto    XequY    ; результат: X = Y

Программа позволяет осуществлять связь между несколькими контроллерами по шине I2C. Каждый подключенный к шине мк может находиться в одном из двух режимов - ведущего или ведомого. Показаны подпрограммы, позволяющие функционировать контроллеру в любом из этих режимов, а так же переключаться из одного в другой в процессе работы. Это дает возможность организовать режим "мультимастер", в котором любое устройство по мере необходимости может захватить шину для передачи.

 

Несколько раз сталкивался с необходимостью объяснить стандартные логические битовые операции применительно к командам среднего семейства Microchip. Если человек хочет научиться основам программирования мк, но не сталкивался никогда с электроникой и цифровой техникой, это тяжелый случай.  Эта статья для такой категории ищущих людей.

Из моего опыта,  определенную трудность  доставляет понять, для чего и что это такое AND;COM; IOR;XOR.

Рассмотрим в том же порядке:

 

altНам часто задают вопросы, как научится писать программы практически с нулевого уровня, поэтому инициативная группа сайта chipmk.ru решила создать краткий курс для первичного обучения. Нужно уточнить, мы не считаем себя большими специалистами в этой области. Практически все самоучки. Надеемся, что наши знания помогут другим начать.
Задача ставится: объяснить основные понятия и помочь сделать первый шаг в этот увлекательный мир. Возможно, последует и дальнейшее развитие этого проекта.

 

 

alt

Немало проблем доставляет при разработке программы вычисляемые переходы, которыми пользуются обычно при работе с таблицами, вызовы подпрограмм и переходы на определенную метку в разных страницах памяти программ.

Покажу прием, как легко избежать этих проблем. Но для начала, давайте разберемся, как организована память программ среднего семейства.

Из самого названия следует, что в этой памяти хранится программа. Т.е. написанная программа, но уже в машинном коде.

«В началоНазад1234567ВперёдВ конец»
Страница 1 из 7

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru