Учимся программировать.

Учимся программировать. (20)

Простое сравнения двух беззнаковых 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

Если в вашем приложении включена приоритетная система прерывания, то при составлении программы необходимо придерживаться определенных рекомендаций. Как мы помним у  прерывания с высоким приоритетом  вектор сброса 08h  в памяти программ, а с низким 18h, т.е. для написания кода в высоком приоритете не так и много места, по сути всего несколько команд. По этому лучше по вектору 08h  прописывать только команду перехода на ПП обработки прерывания с высоким приоритетом. 

 

Большинство микроконтроллеров  из серии PIC18FXXXX  позволяют переключать источник тактового сигнала генератора от  основного  к  дополнительному,  с  более  низкой  частотой.  К примеру в PIC18F252 в качестве дополнительного  генератора тактового сигнала можно подключить  генератор таймера TMR1. Низкочастотный резонатор подключается  к выводам  генератора TMR1 (T1OSO, T1OSI портС).

После переключения   микроконтроллер переходит  в  режим  работы  с  малым  энергопотреблением, т.к. будет работать от низкочастотного резонатора до 200 кГц. (Рекомендуется 32 кГц.) Емкость конденсаторов обвязки   33пф..

 

 

Для программирования МК и МС памяти с помощью USB-программаторов PICkit2 и PICkit3 нужна, так называемая внешняя плата. В Интернете можно найти несколько разработок этой платы. Я также разработал и сделал подобную плату, но несколько с большими возможностями, чем те, которые мне попадались на глаза.

 

 

 

Привязка библиотеки под нужный индикатор и схему подключения.

#define ind_size x ; Кол-во индикаторов

Эта строчка отвечает за кол-во используемых индикаторов, где x это число индикаторов. Их может быть от 1 до 8 штук.

 #define  ind_invert     ; Инверсия общего вывода индикатора. 
#define   seg_invert    ; Инверсия выводов сегментов. 
 (Закоментировано - нет инверсии.)
Эти 2 строчки отвечают за активные уровни для общих и сегментных выводов индикатора

Исправлять ошибки труднее,

чем их детектировать,

или предотвращать.

(Не моё - одна бабка сказала...)

Код Хэмминга, о котором здесь идёт речь, представляет собой блочный код, который позволяет выявить и исправить один ошибочно переданный бит в пределах переданного блока.

 

 

 

 

Данная подпрограмма была применена в видеоадаптере (http://www.chipmk.ru/index.php/features/44-2011-02-17-08-07-05/125--pic18f46k20) на основе этой программы и рассмотрим пример вывода символа. В этой конструкции применен шрифт 8х8 , значит, для вывода одного символа необходимо задействовать восемь байт. К примеру ,  необходимо вывести символ «Я» .

 

 

 

Двоично-десятичный код используется, как правило, в устройствах ввода-вывода для организации удобного для пользователя способа обмена информации с цифровым устройством, и в первую очередь, в узлах (модулях) индикации.

Один весьма известный, в узком кругу, специалист написал в учебных целях статью с 42 подобными подпрограммами (ПП). Все эти подпрограммы, и статья в целом, отвечают только на один из двух основных вопросов, которые интересуют начинающих осваивать МК (и не только их), а именно на вопрос: «Как?».

  Была необходимость применить подпрограмму «Преобразование однобайтного двоичного числа в трёхзначное десятичное число» в «пиках» 18 серии. Для этого пришлось подправить код. Дело в том , что команда «incf» в пиках 16 серии увеличивает значение регистра f на 1 и изменяет только “Z” флаг, а в 18 серии дополнительно изменяет флаги C, DC, Z, OV, N . По ходу программы после команды «incf» идет проверка флага «С» ( btfsc   Status,C ) ,но в результате исполнения команды «incf» в пиках 18 серии флаг «С» сбрасывается и программа работает не корректно...

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

 

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

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

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