5. Взаимодействие МК с объектом управления

Пример 3 Опрашивание двоичного датчика, например, конечного выключателя.

Ключ подключен к входу MCS-51: порт 1, разряд 3.

WAIT0: JNB P1.С, WAIT0; ожидание размыкания датчика

WAITC: JB P1.3, WAITC; ожидание замыкания датчика

Пример 38. Опрашивание группы двоичных датчиков (аналогично нахождению заданного кода или комбинации датчиков).

WTCODE: MOV A,#10D ; загрузка в А эталонного кода 00001010В

WAIT: CJNE A, P1, WAIT; если кодовая комбинация не совпала с заданной, то ждать

EXIT: ; вывод

Пример 39. При достижении значения параметра равного 135, передать управление на подпрограмму с меткой LABEL А, иначе LABEL В.

MOV A,#135D ; загрузка значения параметра

CJNE A, P1, LABEL В; сравнение и передача управления

LABEL А:

LABEL В:

Пример 40. Зафиксировать импульс, поступающий на вход ОМЭВМ (P1.3) и его окончание.

WAITC: JB P1.3, WAITC; ожидание Р1.3=0

WAIT0: JNB P1.3, WAIT0; ожидание Р1.3=1

Зафиксированный импульс имеет вид .

Для импульса обратного вида  нужно поменять WAIT0 и WAITC местами.

Таблица 1 – Минимальная продолжительность сигнала, которую определяет МК

Подключение датчика к выводам Минимальная длительность импульса, мкс
(отрицательного) (положительного)
P1, P2, BUS/P0 10/2 12,5/2
T0, Т1 5/2 5/2
ЗПР 10/2 5/2

Пример 41. Передать управление на метку 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 ; установление бита

Пример 42. Схема для фиксации короткого импульса: D-триггер устанавливается коротким импульсом, а сбрасывается программно, после определения наличия сигнала на входе Т0.

Пример 43. Устранение дребезжания контактов. Дребезжание состоит в том, что благодаря упругим свойствам контактов возможен отрыв контактов, который приводит к переходному процессу. При этом сигнал может быть прочитан многократно как случайная последовательность нулей и единиц. Это можно устранить с помощью триггера (рис. 6).

Чаще всего с помощью MCS51 это делается программно так, как показано на рис. 7 и рис. 8.

Реализация первого метода, количество совпадений задано в R3.

DBNC: MOV R3,#3 ; инициализация счетчика

DBNC1: JB P3.4, DBNC; если контакт замкнутый,
; то начать отсчет опрашиваний
; сигнала сначала

DJNZ R3, DBNC1 ; повторять, пока значение в R3

; не станет равным 0

JB P3.4, DBNC; конечная проверка

Временная задержка подбирается экспериментальное (1–10 мс) в зависимости от типа датчика.

Пример 44. Формирование импульсных сигналов делается по принципу включен / выключен с необходимой временной задержкой:

PULLS:ON: ANL P1,#11110111B; выдача импульса в линию 3 порта 1

CALL DELAY ; временная задержка

OFF: ORL Р1,#00001000В; сброс

Пример 45. Считывание данных из таймера. Для устранения возможных сбоев при считывании сначала читается старший байт, потом – младший, после чего подтверждается, что старший байт за это время не изменился.

RDTIME: MOV A, TH0

MOV R0, TL0

CJNE A, TH0, RDTIME

MOV R1, А

RET

Пример 46. Подсчет числа импульсов, например, радиодеталей, которые движутся по конвейеру, зафиксированных фотоэлементом (рис. 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: ; выход

Максимальное число радиодеталей – 255.

Пример 4 Реализация функций времени на основе таймеров.

В 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: ; продолжение программы.

Пример 48. Организация задержки программным путем:

DELAY: MOV R2, Х ; (R2)¬(Х)

COUNT: DJNZ R2, COUNT; декремент R2 и цикл, если не нуль

RET ; возвращение из подпрограммы

Пример 49. Подпрограмма задержки на 50 мс, используя Т/С0, погрешность не превышает 2 мкс.

DELAY: MOV TMOD,#00000001B; настройка Т/С0

MOV TH0,#HIGH (NOT(50000–16))

MOV TL0,#LOW (NOT(50000–16))

SETB TCON.4 ; запуск Т/С0

JNB TCON.5,$ ; ожидание

ANL TCON,#NOT(30H); остановка Т/С0, сброс TF0

RET ; возвращение из подпрограммы

Пример 50. Подпрограмма задержки на 1 секунду. Погрешность не больше, чем 123 мкс.

OS: MOV R3,#20D ; счетчик циклов

S1: ACALL DELAY ; задержка на 50 мс

DJNZ R3, S1 ; организация цикла

RET ; возвращение из подпрограммы

Пример 51. Измерение временных интервалов. При применении таймера используется вход разрешения счетчика (). Тогда измеренный сигнал подается на вход , а измерение продолжительности выполняется в Т/С0.

«Положительный» импульс:

MOV TMOD,#00001001В; настраивание Т/С0

MOV TH0,#0 ; сбрасывание таймера

MOV TL0,#0

SETB TCON.4 ; запуск Т/С0

WAIT0: JNB P3.2, WAIT0; ожидание единичного уровня

WAITC: JB P3.2, WAITC; ожидание нулевого уровня

CLR TCON.4 ; остановка Т/С0

RET ; выход из процедуры

Управление программе должно передаваться при условии =0. Прерывание от Т/С0 и внешние от  – должны быть запрещены. По завершению программы в Т/С0 будет находиться число, пропорциональное продолжительности импульса на входе . Максимальная продолжительность импульса 65536 мкс, погрешность 1 мкс.

Если необходимо измерять большую продолжительность импульса, то можно программным путем подсчитывать число переполнений от таймера.

Пример 52. Преобразование параллельного кода в последовательный в MCS-51 сводится к передаче одного байта в буфер приемо-передатчика:

MOV SBUF, А

Пример 53. Обратное преобразование последовательного кода в параллельный инициируется стоповым битом и выполняется аппаратно без участия программы. Основная программа должна выполнить команду

MOV A, SBUF.

Пример 54. Преобразование однобайтовых чисел в дополнительный код и наоборот. Числа со знаком можно представить в дополнительном коде в границах от -128 к +12 Алгоритмы перевода чисел из прямого кода со знаком в дополнительный и обратное преобразование одинаковы:

DOD-PR: JNB А.7, EXIT; проверка знакового разряда

CPL А ; инверсия аккумулятора

ADD A, #1 ; добавление единицы

SETB А.7 ; установление знака

EXIT: ; выход

Пример 55. Преобразование чисел из одной системы исчисления в другую методом «двух счетчиков». При этом методе из начального кода отнимается, а к новому коду прибавляется единица до обнуления начального кода. Причем отнимание осуществляется в старой системе счисления, а добавление – в новой.

Программа перевода двоичного числа в двоично-десятичное.

MOV R5, А ; передача начального числа в R5

CLR А ; сброс аккумулятора

REV: ADD A,#1 ; добавление единицы

DA A ; десятичная коррекция

DJNZ R5, REV ; декремент начального кода и цикл, если не нуль

Результат преобразования находится в аккумуляторе.

Пример 56. Подсчет числа импульсов за заданный промежуток времени. Решается 4-я способами:

1. Программная реализация временного интервала и программный подсчет числа импульсов.

2. Программная реализация временного интервала и аппаратный подсчет числа импульсов (на внутреннем таймере / счетчике).

3. Аппаратная реализация временного интервала и программный подсчет числа импульсов.

4. Аппаратная реализация временного интервала и аппаратная реализация подсчета импульсов.

Реализация на MCS-51: в таймере-счетчике Т/С1 осуществляется подсчет числа импульсов; в Т/С0 заданный временной интервал. Датчик импульсов должен быть подключен к Т1.

TIME: EQU NOT(10000)+1; определение константы TIME для отсчета времени в 10 мс

MOV TMOD,#01010001B; настройка таймеров-счетчиков:

1-й – счетчик 16 бит, 0-й – таймер

CLR A ; сброс аккумулятора

MOV ТН1, А ; сброс Т/С1

MOV ТL1, А;

MOV ТН0,#НІGH(ТIМE); загрузка в Т/С0 константы TIME

MOV TL0,#LOW (TIME);

ORL TCON,#50H; запуск Т/С1 и Т/С0

WAIT: JBC TCON.5, EXIT; проверка переполнения Т/С0

SJMP WAIT ; цикл, если TF=0

EXIT: MOV В, ТН1 ; (В) – (А), число импульсов за время 10 мс

MOV A, TL1

программный команда управление микроконтроллер


Информация о работе «Обработка сигналов на основе MCS-51»
Раздел: Коммуникации и связь
Количество знаков с пробелами: 35873
Количество таблиц: 2
Количество изображений: 3

Похожие работы

Скачать
46876
3
11

... информации из ПК в программно-доступные узлы МК; чтение содержимого программно-доступных узлов и индикация их на мониторе ПК. 1.2 Анализ предыдущей работыВопрос об организации обмена информацией между персональным компьютером и микроконтроллером семейства Intel MCS-51 был уже рассмотрен в бакалаврской работе [3]. В этой работе были рассмотрены проблемы аппаратного и программного сопряжения МК с ...

Скачать
23140
0
2

... объёмом до 16 Мбайт Встроенный интерфейс I2C (не во всех моделях) 2. МИКРОКОНТРОЛЛЕРЫ INTEL 296   2.1 Общая характеристика и применение   В семейство MCS-196 фирмы Intel (иногда используется и название 80C196) входит более 30 разновидностей микроконтроллеров. Это 16-разрядные, быстродействующие ИС высокой степени интеграции, ориентированные на решение задач управления процессами в реальном ...

Скачать
37477
8
8

... байт в регистре A, старший – в регистре B. В случае выполнения операции деления целое от деления помещается в аккумулятор А, остаток от деления – в регистр В. Логические команды с байтовыми переменными. Система команд ОМЭВМ позволяет реализовать логические операции: "И", "ИЛИ", "ИСКЛЮЧАЮЩЕЕ ИЛИ" на регистре-аккумуляторе (А) и байте-источнике. Вторым операндом (байтом-источником) при этом может ...

Скачать
85017
10
29

... Подробные сравнительные характеристики датчиков приведены в [7] и [8]/ В отличии от остальных комплектующих прибора, при выборе газового датчика следует принимать во внимание соображения доступности тех или иных приборов( цена, возможность приобретения в России ). При выборе сенсора RS 286-620 во внимание принимались и эти соображения. Как показали эксперименты, данный тип сенсора не обладает ...

0 комментариев


Наверх