2.Задание на лабораторную работу
Изучить директивы языка АСМ51, выполнить примеры, приведенные для каждой директивы при помощи симулятора, сохранить результаты в файл.
3.Содержание отчета
1.Назначение и особенности применения директив.
2.Мнемонический код команд с использованием директив.
4. Файл с результатами выполнения работы.
4.Контрольные вопросы:
1.Перечислите назначение директив ASCII, DB, DS, DW.
2.Запишите примеры использования следующих директив EQU,
EXTERN, INCLUDE.
3.Что произойдет по выполнению директивы LONG 11,АА,FА,11H?
4.Что произойдет по выполнению директивы ORG 12H?
5.Для чего используются следующие директивы: RECSIZE, VAR,
SYMBOLS, PUBLIC?
107
Лабораторная работа №6
Тема: Взаимодействие МК 51 с объектом управления
Цель работы: изучение принципов взаимодействия процессоров МК 51 с
объектами управления.
1. Задание на лабораторную работу.
Используя программу симулятора набрать и проверить выполнение
программ, приведенных в примерах, убедится в правильности их выполнения.
Пример 1. Опрашивание двоичного датчика, например, конечного
выключателя.
Ключ подключен к входу MCS-51: порт 1, разряд 3.
WAIT0: JNB |
P1.С, WAIT0; ожидание размыкания датчика |
||
WAITC: JB |
P1.3, WAITC; ожидание замыкания датчика |
||
Пример 2. Опрашивание группы двоичных датчиков. |
|||
WTCODE: MOV A,#10D |
; загрузка в А эталонного кода 00001010В |
||
WAIT:CJNE |
A, P1, WAIT; если кодовая комбинация не совпала с |
||
заданной, то ждать |
|
|
|
EXIT: |
|
; вывод |
|
Пример 3. При достижении значения параметра равного 135, передать |
|||
управление на подпрограмму с меткой LABEL А, иначе LABEL В. |
|||
MOV |
A,#135D |
; загрузка значения параметра |
|
CJNE |
A, P1, LABEL В; сравнение и передача управления |
||
LABEL А:
LABEL В:
Пример 4. Зафиксировать импульс, поступающий на вход ОМЭВМ (P1.3)
и его окончание.
108
WAITC: JB |
P1.3, WAITC; ожидание Р1.3=0 |
|
WAIT0: JNB |
P1.3, WAIT0; ожидание Р1.3=1 |
|
Зафиксированный импульс имеет вид |
. |
|
Для импульса обратного вида |
нужно поменять WAIT0 и WAITC |
|
местами.
Таблица 9 – Минимальная продолжительность сигнала, которую
определяет МК
|
Подключение датчика к |
Минимальная длительность импульса, мкс |
|
|||||
|
выводам |
|
|
|
|
|
|
|
|
|
|
(отрицательного) |
|
(положительного) |
|||
|
|
|
|
|
|
|
|
|
|
P1, P2, BUS/P0 |
|
10/2 |
|
|
12,5/2 |
|
|
|
|
|
|
|
|
|
|
|
|
T0, Т1 |
|
|
5/2 |
|
|
5/2 |
|
|
|
|
|
|
||||
|
Пример 5. Передать управление на метку TEST и установить Р3.7, если на |
|||||||
Т0 поступит 30 импульсов. |
|
|
|
|
||||
|
MOV |
R1,#30D |
; загрузка числа импульсов |
|
|
|||
|
L1: |
JB |
P3.4, L1 |
; ожидание нуля |
|
|
||
|
L0: |
JNB |
P3.4, L2 |
; ожидание единицы |
||||
|
JMP |
L0 |
|
|
|
|
|
|
|
L2: |
DJNZ |
R1, L1 |
; повторить 30 раз |
|
|
||
|
JMP |
TEST |
|
|
|
|
|
|
|
TEST: SETB |
Р3.7 ; установление бита |
|
|
||||
Пример 6. Устранение дребезжания контактов. Дребезжание состоит в
том, что благодаря упругим свойствам контактов возможен отрыв контактов,
который приводит к переходному процессу. При этом сигнал может быть прочитан многократно как случайная последовательность нулей и единиц.
Реализация метода устранения этого эффекта представлена ниже, количество совпадений задано в R3.
DBNC: |
MOVR3,#3; инициализация счетчика |
DBNC1: JB |
P3.4, DBNC; если контакт замкнутый, |
109
|
; |
то |
начать |
отсчет |
опрашиваний |
|
; сигнала сначала |
|
|
||
DJNZ R3, DBNC1 |
; повторять, пока значение в R3 |
|
|||
|
; не станет равным 0 |
|
|
||
JB |
P3.4, DBNC; конечная проверка |
|
|
||
Временная задержка подбирается экспериментальное (1–10 мс) в
зависимости от типа датчика.
Пример 7. Формирование импульсных сигналов делается по принципу
включен / выключен с необходимой временной задержкой:
PULLS:ON: |
ANL P1,#11110111B; выдача импульса в линию 3 порта |
1 |
|
CALL DELAY |
; временная задержка |
OFF: ORL |
Р1,#00001000В; сброс |
Пример 8. Считывание данных из таймера. Для устранения возможных сбоев при считывании сначала читается старший байт, потом – младший, после
чего подтверждается, что старший байт за это время не изменился.
RDTIME: MOV A, TH0
MOV |
R0, TL0 |
|
CJNE |
A, TH0, RDTIME |
|
MOV |
R1, А |
|
RET |
|
|
Пример 9. Подсчет числа импульсов. |
||
MOV |
TMOD,#01000000B; настройка счетчика 1 |
|
MOV |
TH1,#00H ; сброс счетчика |
|
WAIT0: JB |
P3.4, WAIT0; ожидание |
|
SETB |
TCON.6 |
; запуск счетчика 1 |
WAITC: JNB |
P3.4, WAITC; ожидание |
|
CLR |
TCON.6 |
; остановка счетчика 1 |
MOV |
A.TH1 |
; A число импульсов |
EXIT: |
|
; выход |
110
Максимальное число импульсов – 255.
Пример 10. Реализация функций времени на основе таймеров.
В MCS-51 при частоте генератора тактовых импульсов 12 МГц таймер /
счетчик изменяет свое значение с частотой 1 Мгц (в режиме таймера), или при поступлении сигнала от внешнего источника через счетный вход T0, T1 (в
режиме счетчика).
Если использовать таймер / счетчик в режиме 1 полного формата (16 бит),
то получим задержки в границах (1 – 65536 мкс).
Программа задержки на 50 мс в MCS-51, прерывание разрешено.
Организация перехода к метке NEXT при переполнении Т/С0:
ORG |
0ВН |
; адреса вектора прерываний от Т/С0 |
CLR |
TCON.4 |
; остановка Т/С0 |
RETI |
|
; выход из подпрограммы обработки прерываний |
ORG |
100H |
; начальный адрес программы |
MOV |
TMOD, #01Н; настройка Т/С0 |
|
MOV |
TL0, #LOW (NOT(50000) – 1); загрузка таймера |
|
MOV |
TH0, #HIGH (NOT(50000) – 1) |
|
SETB |
TCON.4 |
; старт Т/С0 |
SETB |
IE.1 |
; разрешение прерываний от Т/С0 |
SETB |
PCON.0 |
; перевод в режим холостого хода |
NEXT: |
; продолжение программы. |
Пример 11. Организация задержки программным путем: |
|
DELAY: MOV |
R2, Х; (R2) (Х) |
COUNT: DJNZ R2, COUNT; декремент R2 и цикл, если не нуль |
|
RET |
; возвращение из подпрограммы |
Пример 12. Преобразование параллельного кода в последовательный в
MCS-51 сводится к передаче одного байта в буфер приемо-передатчика: MOV SBUF, А
2. Содержание отчета
111