ЛАБОРАТОРНАЯ РАБОТА № 4
Тема: Исследование организации работы портов ввода-вывода для приема и передачи информации
Цель: получение практических навыков организации обмена информацией между микроконтроллером и внешними устройствами.
1 Сведения из теории. Настройка портов на ввод-вывод информации
Контроллеры серии PIC среднего семейства имеют 2 двунаправленных порта ввода-вывода: PORTA с адресом 0х05 и PORTB с адресом 0х06. Направлением работы линий ввода-вывода портов управляют соответствующие регистры TRISA с адресом 0х85 и TRISB с адресом 0х86. Если бит управляющего регистра установлен в 1, соответствующая линия порта работает на вход, в противном случае – на выход. При загрузке оба регистра TRIS имеют единицы во всех битах, т.е. все линии портов являются входами.
Если некоторые линии порта должны работать на выход, порт должен быть настроен соответствующим образом.
Пример. Пусть линии 2, 4, 7 PORTB должны быть выходными, остальные – входными. Настроить порт можно следующим образом:
BSF STATUS, RP0 ; переключиться в банк 1
MOVLW B’01101011’; задать маску для сброса нужных битов
ANDWF TRISB, 1; сбросить биты в регистре TRISB
BCF STATUS, RP0; вернуться в банк 0
Данные из портов могут приниматься как в параллельном коде (двоичный код числа одновременно по нескольким линиям), так и в последовательном коде (биты числа передаются последовательно по единственной линии). В последнем случае требуется синхронизация между приемником и передатчиком. Одним из способов синхронизации является параллельная передача вместе с информационным сигналом синхронизирующего, по фронту или по срезу которого ( в зависимости от протокола передачи) приемник должен считывать сигнал на информационном входе.
Рассмотрим примеры приема информации с портов в параллельном и последовательном кодах.
Примечание: все имена регистров и битов, которые используются в программах, необходимо поставить в соответствие их адресам и номерам с помощью директивы EQU.
Пример 1. Прием параллельного кода.
Величину х (например, значение напряжения в двоичном коде) принимаем на биты 2 – 6 порта В. Если она превышает число 12, выдаем сигнал на бит 7 порта В (например, на сигнальную лампочку).
Решение.
BSF STATUS, RP0 ; переключиться в банк 1
BCF TRISB, 7; сбросить бит 7 в регистре TRISB – настроить его на ;передачу
BCF STATUS, RP0; вернуться в банк 0
MOVF PORTB,0 ; считать состояние PORTB в аккумулятор
ANDLW B’01111100’ ; обнулить все биты, которые не х
MOVWF X ; переписать полученное значение в регистр х
RRF X, 1 ; сдвинуть вправо два раза,
RRF X, 1 ; чтобы значение оказалось в младших разрядах
MOVF X, 0 ; переписываем х в аккумулятор
SUBLW .12 ; вычитаем его из 12
BTFSS STATUS, С ; проверяем флаг С, если С=1, пропускаем следующую ;команду
BSF PORTB, 7 если С=0, посылаем «1» по 7 биту PORTB
NOP
END
Пример 2. Прием последовательного кода.
Информационный сигнал принимается по 0 биту порта В, синхронизирующий – по 1 биту порта В. Получить байт данных и сохранить его в регистре Х.
Решение.
CLRF X ; очищаем регистр Х
MOVLW 8 ; готовим счетчик для цикла
MOVWF 0X0D ; из 8 шагов для приема 8 бит
L1 BTFSS PORTB, 1 ; ожидаем 1 (фронт) по
GOTO L1 ; синхронизирующей линии
RLF X, 1 ; сдвигаем влево биты регистра Х
BTFSC PORTB, 0 ; если на информационном входе 0, пропускаем ;следующую команду
BSF X, 0 ; если не 0, устанавливаем в 1 нулевой бит Х
L2 BTFSC PORTB, 1 ; ожидаем среза синхронизирующего
GOTO L2 ; импульса
DECFSZ 0X0D, 1 ; отсчитываем шаг цикла
GOTO L1 ; если цикл не закончен, возвращаемся на прием ;следующего бита
NOP
END
2 Организация файлов стимулов для имитации подачи сигналов
на линии портов контроллера в MPLAB 5.01
Для имитации подачи сигналов на входные линии контроллера к проекту должен быть подключен файл стимулов, содержащий информацию о состоянии входных линий порта на заданных машинных циклах (каждая команда, за исключением команд передачи управления (они занимают два машинных цикла), выполняется в течение одного машинного цикла, и можно посчитать, в какой момент должны изменяться состояния входов).
Файл стимулов – это текстовый файл с расширением .sti и следующей структурой ( для MPLAB 7.2 файлы стимулов создаются по–другому):
CYCLE <список стимулируемых входов>
Для его создания нужно создать новый файл (так же, как для текста программы) и сохранить его с расширением .STI.
Биты PORTB обозначаются RB0, RB1 и т.д., PORTA – RА0, RА1 и т.д
Пример файла стимулов
CYCLE RB0 RB1 RA4
10 1 1 0
20 0 1 0
40 1 0 1
60 1 0 0
В этом случае будет имитироваться подача сигналов на 0-й и 1-й биты PORTB и 4-й бит PORTA на 10-м, 20-м, 40-м и 60-м машинных циклах.
Подключение файла стимулов.
Чтобы подключить созданный файл стимулов к проекту, необходимо выполнить следующую последовательность действий:
DEBUG–>SIMULATOR_STIMULUS–>PIN_STIMULUS–>ENABLE. Выбрать созданный файл, нажать ОК. Теперь можно запускать программу. На заданных машинных циклах состояния битов порта, на которые подаются сигналы, будут принимать соответствующие значения.
3 Порядок выполнения
1 Наберите программу для выполнения первого задания.
2 Создайте файл стимулов, подающий значения на входы на 3-м машинном цикле.
3 Подключите файл стимулов к проекту так, как это сказано в п. 2 .
4 Выполните программу в пошаговом режиме, убедитесь в правильности приема сигналов с портов и результатов выполнения программы.
5 Оформите отчет.
4 Содержание отчета
Отчет должен содержать принципы настройки портов ввода-вывода, получения информации из порта в параллельном и последовательном коде, решения задач с комментариями для каждой строки.
5 Задания на лабораторную работу
Задание 1. Прием информации в параллельном коде.
Величина x принимается на биты n–m порта В, b – на биты k–s порта A. Получить значение y и передать на бит 7 порта В.
Задание 2. Прием информации в последовательном коде.
На бит k порта A поступает байт данных в последовательном коде. Синхронизирующий сигнал передается по биту s порта A. Если полученный байт совпадает с числом d, то по битам m–n порта В передать число a, иначе полученный байт передать на порт А.
Варианты заданий содержатся в табл. 4 приложения.
Таблица 4
Варианты заданий к лабораторной работе №4
y |
m |
n |
k |
s |
a |
e |
c |
d |
|||||||||
1 |
1 |
3 |
0 |
1 |
4 |
10 |
2 |
15 |
|||||||||
2 |
4 |
6 |
1 |
3 |
7 |
3 |
8 |
5 |
|||||||||
3 |
2 |
5 |
3 |
4 |
12 |
9 |
11 |
6 |
|||||||||
4 |
0 |
5 |
2 |
4 |
10 |
5 |
9 |
10 |
|||||||||
5 |
3 |
6 |
1 |
4 |
3 |
7 |
10 |
8 |
|||||||||
6 |
2 |
4 |
1 |
2 |
7 |
11 |
6 |
12 |
|||||||||
7 |
0 |
2 |
0 |
3 |
6 |
8 |
3 |
4 |
|||||||||
8 |
1 |
2 |
2 |
3 |
3 |
12 |
9 |
3 |
|||||||||
9 |
2 |
5 |
1 |
4 |
10 |
6 |
15 |
7 |
|||||||||
10 |
3 |
5 |
0 |
2 |
5 |
4 |
7 |
9 |
|||||||||
11 |
4 |
5 |
1 |
3 |
2 |
10 |
8 |
15 |
|||||||||
12 |
5 |
6 |
3 |
4 |
1 |
5 |
6 |
7 |
|||||||||
13 |
1 |
2 |
2 |
3 |
3 |
4 |
8 |
2 |
|||||||||
14 |
1 |
5 |
1 |
3 |
14 |
5 |
6 |
3 |
|||||||||
15 |
3 |
6 |
0 |
1 |
7 |
2 |
3 |
4 |
|||||||||
16 |
4 |
6 |
0 |
3 |
5 |
6 |
4 |
7 |
|||||||||
17 |
0 |
2 |
1 |
4 |
6 |
2 |
4 |
3 |
|||||||||
y |
m |
n |
k |
s |
a |
e |
c |
d |
|
||||||||
18 |
2 |
4 |
2 |
3 |
4 |
6 |
5 |
2 |
|
||||||||
19 |
1 |
3 |
0 |
2 |
5 |
7 |
6 |
4 |
|
||||||||
20 |
0 |
4 |
1 |
3 |
17 |
6 |
5 |
3 |
|
||||||||
21 |
0 |
2 |
2 |
4 |
3 |
4 |
7 |
5 |
|
||||||||
22 |
1 |
5 |
0 |
3 |
15 |
3 |
4 |
6 |
|
||||||||
23 |
3 |
5 |
1 |
3 |
4 |
2 |
3 |
4 |
|
||||||||
24 |
4 |
6 |
0 |
2 |
6 |
5 |
4 |
3 |
|
||||||||
25 |
2 |
4 |
1 |
2 |
3 |
5 |
6 |
7 |
|
||||||||
26 |
3 |
6 |
0 |
1 |
8 |
6 |
3 |
2 |
|
||||||||
27 |
5 |
6 |
1 |
3 |
3 |
2 |
5 |
3 |
|
||||||||
28 |
1 |
2 |
0 |
2 |
2 |
4 |
6 |
3 |
|
||||||||
29 |
0 |
1 |
2 |
4 |
1 |
6 |
3 |
5 |
|
||||||||
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.