Материал: kniga_mikroprotsessory

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Источник: https://studfile.net/preview/15934500/