Изменять содержимое регистров TrisA и TrisB можно разными способами. Например, с помощью команд bcf и bsf.
Эти команды особенно удобны для изменения режима работы отдельных линий, при сохранении режимов осталь-ных.
Если же необходимо работать со многими линиями, или со всем портом сразу, удобнее использовать команду mov.
Работа этой команды тесно связана с работой аккумулятора W. Например, если необходимо в TrisB записать 0,
и на-строить все линии порта В на выход, используется команда movwf TrisB, кото-рая копирует данные из W в
регистр TrisB. Но, сначала, необходимо данные, тот же ноль, занести в W. Сделать это можно с помощью команды movlw
.0, ко-торая копирует константу 0 в аккумулятор W.
Формат команды:
movwf f - копировать содержимое W в регистр c названием f.
mowlw k – копировать константу k в аккумулятор (W).
Корень команды mov означает – копировать. Буквосочетания WF – копировать содержимое аккумулятора W в регистр.
Буквосочетания LW – копировать кон-станту (число) в аккумулятор.
Пример настройки вывода RB1 порта В на вход, остальных выводов на выход:
movlw .2 ; копирование константы 2 в аккумулятор W
movwf TrisB ; копирование содержимого аккумулятора W в регистр TrisB
| * О форме представления чисел при программировании на языке ассемб-
лера. Наиболее часто используют представление чисел в десятичной,
шестнадцатеричной и двоичной форме исчисления. Точка перед чис-лом –
признак использования числа в десятичной системе счисления. В примере - .2 или d’2’.
При использовании шестнадцатеричной системы за-пись была бы вида – h’02’ или 0х02, а двоичной – b’00000010’.
|
Если регистры TrisA и TrisB отвечают за настройку направления работы линий портов, то регистры PortA (05H) и
PortB (06H,106H) за их состояние. Выводы портов непосредственно связаны с регистрами PortА и PortB.
Если поменять какой-либо бит регистра с 0 на 1, то на соответствующей линии порта изменится напряжение
с 0В до 5В. (При условии что порт ранее был настроен на выход). Таким образом, копируя в PCH PortА и PortB
те или иные числа, можно достигать заданного сочетания нулей и единиц на линиях портов. Дос-тоинством этих
регистров (ячеек памяти) является то, что записанное число может в них оставаться сколь угодно долго
(пока включено питание), при этом будут сохраняться и состояния линий портов. Это рационально, поскольку
в это время центральный процессор МК может исполнять любые команды, не под-держивая состояние портов.
Данное свойство портов незаменимо при организа-ции индикации на семисегментных индикаторах.
Менять содержимое регистров PortA и PortB можно всегда, но не всегда это приведет к изменению сигналов на линиях портов.
Важно, чтобы при этом со-ответствующие линии портов работали на выход.
Изменять содержимое регистров PortA и PortB можно с помощью команд bcf и bsf, например: bsf PortB,1 – установить бит
1 регистра PortB в единицу. Однако на практике, более удобно копировать в регистр содержимое ак-кумулятора W, например:
movwf PortB – копирование содержимого аккумуля-тора W в регистр PortB. Можно сказать, что содержимое аккумулятора W вы-водится на порт В.
Формат команды:
movf f,d – копировать содержимое регистра в аккумулятор W (указатель d =0);
или же обратно в регистр f (указатель d = 1), то есть сам в себя.
Копирование регистра самого в себя используется при проверке содержимого регистра на ноль.
Если содержимое регистра f равно нулю, то и результат операции будет нулевым, что повлечет
изменение состояния флага Z регистра STATUS.
Пример копирования содержимого регистра PortB в аккумулятор W:
movf PortB,0 ; копирование содержимого регистра в W. (d = 0).
Все линии портов, кроме линии RA4 порта А, имеют на выходе триггеры, которые позволяют выводить на линии порта сигналы
ТТЛ уровней. Линия RA4 не может являться источником сигнала, поскольку вывод RA4 МК под-ключен к внутренней схеме с
транзистором с открытым стоком. При этом при установке 4 бита регистра PortА в единицу происходит подключение линии порта к
нулю источника питания (‘земле’). Данное обстоятельство необходимо учитывать при проектировании схемы с использованием данного вывода.
К выводам порта В работающим на вход, могут быть программно подключены внутренние подтягивающие резисторы. Данные резисторы
подключаются между выводом МК и плюсом источника питания. Они служат нагрузкой для схем, выполненных по схеме с открытым коллектором
или открытым стоком. Данные схемы могут быть подключены к выводам МК, и являться для него источниками сигнала. Резисторы могут быть
подключены или отключены только все 8 сразу. Управление ими осуществляется с помощью бита 7 РСН OPTION (Приложение Г). Порт А
подтягивающих резисторов не имеет.
По причине ограниченного количества выводов МК, и присутствия в составе МК PIC16F628A большого числа периферийных модулей,
большинство выводов микросхемы могут использоваться для работы с несколькими перифе-рийными модулями (Приложение К, рисунок 2),
при этом они не могут быть одновременно использованы как выводы портов. Чтобы использовать необхо-димые линии как выводы портов,
необходимо программно отключить перифе-рийные модули, способные использовать эти выводы в своей работе. Необхо-димо помнить,
что исходное состояние выводов, заданное производителем микросхемы может не соответствовать задачам разработчика.
Порядок исполь-зования и назначение выводов необходимо определить в начальный момент ра-боты программы, настроив их, тем самым,
произведя инициализацию МК.
Периферийных модулей в составе МК PIC16F628A влияющих на назначение выводов МК – семь. Список модулей и управляющих ими
регистров приведен в таблице 1, содержимое регистров – в Приложениях В – Л.
Таблица 1 - Периферийные модули МК PIC16F628A
№ | Модуль | Название модуля | Регистры управляющие отключением модуля |
1 | TMR0 | Таймер 8 разрядный | OPTION |
2 | TMR1 | Таймер 16 разрядный | T1CON |
3 | TMR2 | Таймер 8 разрядный | T2CON |
4 | Компараторы | Модуль компараторов | CMCON |
5 | ССР | Сравнения/захвата/шим | CCP1CON |
6 | Vref | <Источник опорного напряжения/td> | VRCON |
7 | USART | Универсальный приемо-передатчик | RCSTA |
|
*Модуль таймера TMR0 не требует специального отключения.
* Конфигурирование выводов МК как линий портов RA5, RA6,
RA7 про-изводится в слове конфигурации – специальном регистре,
определяющем ос-новную настройку МК и не отображенном в памяти.
Слово конфигурации про-граммно для МК не доступно, определяется
пользователем в начале программы до её основной части, записывается в МК при программировании.
|
|