Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Формирование временных задержек с помощью таймеров




Борьба с дребезгом контактов

 

Для борьбы:

1. аппаратный метод − используются RS − триггеры или триггер Шмидта

 

2. программный метод:

а) подсчитывается число переключений контакта.

Время дребезга зависит от типа контакта

б) программная задержка: когда программа обнаружила срабатывание контакта, выполнение ее приостанавливается на время, большее времени дребезга.

 

WAIT_L: IN IPORT

ANI 0000 0010B

JNZ WAIT_L; цикл, если D1 = 1

CALL DELAY; подпрограмма задержки на tзд

RET

 

Виды управляющих сигналов:

1] Статические

VKL: MVI A, 01H

OUT OPORT; вывод D0 = 1

OTKL: MVI A, 00H

OUT OPORT; вывод D0 = 0

OTKL: XRA A; сброс (А)

OUT OPORT; вывод D0 = 0

 

2] Формирование импульсных управляющих сигналов

 

XRA A

OUT OPORT; вывод D1 = 0

MVI A, 02H

OUT OPORT; вывод D1 = 1

CALL DELAY; задержка на tИ

XRA A

OUT OPORT; вывод D1 = 0

 

 

Формирование временных задержек

 

CALL DELAY; вызов подпрограммы задержки

DELAY: MVI B, X; загрузка в регистр В числа Х

LOOP: DCR B; декремент В

JNZ LOOP; цикл, если (В)=0

RET; возврат в основную программу, если (В)=0

Для получения требуемой временной задержки необходимо опреде­лить значение числа Х, загружаемого в регистр-счетчик В. При этом необходимо учитывать, что ко­манды MVI B, X и RET выполняются однократно, а число повторений ко­манд DCR B и JNZ LOOP равно числу Х, загружаемому в регистр В.

Можно записать длительность выполнения команд:

CALL DELAY - 17 тактов

MVI B, X - 7 тактов

DCR В - 5 тактов

JNZ LOOP - 10 тактов

RЕТ - 10 тактов

Время выполнения любой команды подсчитывается по формуле: t = n *T,

где n - число машинных тактов в команде;

Т - длительность машинного такта.

Длительность машинного такта определяется частотой fт тактового генератора микропроцессорной системы:

Т=1/fт

Величина Х может быть вычислена по формуле:

X=(tз-to)/tц,

где tз - заданная величина задержки;

tо - время, требуемое для однократно выполняемых команд;

tц - время цикла, требуемое для выполнения циклически повторяе­мых команд.


 

Формирование временных задержек с помощью таймеров

Методы формирования временной задержки с программным опросом флага переполнения таймера. Допустим, что надо сформировать импульс низкого уровня длительностью 10 мс на выводе P1.7 микроконтроллера. Тактовая частота работы fCLK = 12 МГц. Для формирования задержки используем таймер T/C0 в режиме 1. Число, которое необходимо загрузить в таймер при его инициализации:

65536 – 10000 = 55536 = D8F0H.

Программа формирования импульса может иметь вид:

ORG 0000H

TIMER_1: MOV TMOD, #01H; Режим 1 для T/C0

MOV TH0, #0D8H; Загрузить старший байт

MOV TL0, #0F0H; Загрузить младший байт

CLR P1.7; Вывод P1.7 0

SETB TR0; Запустить таймер

COUNT: JNB TF0, COUNT; Ожидание переполнения

; таймера 393

 

SETB P1.7; Вывод P1.7 1

CLR TR0; Остановить таймер

STOP: JMP STOP; Зацикливание программы

END

Необходимо сформировать импульс на выводе P1.7 длительностью 2 с. Будем полагать, что таймер обеспечивает задержку на 50 мс. Для получения задержки на 2 с необходимо 40 раз запускать и останавливать таймер. Для получения задержки на 50 мс надо первоначально загрузить в таймер число 65536 – 50000 = 15536 = 03B0H.

Программа формирования импульса в этом случае имеет вид:

ORG 0000H

TIMER_2: MOV TMOD, #01H; Режим 1 для T/C0

MOV R7, #40; Загрузить счетчик

; переполнений таймера

CLR P1.7; Вывод P1.7 0

AGAIN: MOV TH0, #03H; Загрузить старший байт

MOV TL0, #0B0H; Загрузить младший байт

SETB TR0; Запустить таймер

COUNT: JNB TF0, COUNT; Ожидание переполнения

; таймера

CLR TR0; Остановить таймер

CLR TF0; Сбросить флаг

;переполнения таймера

DJNZ R7, AGAIN; Повторить цикл 40 раз

SETB P1.7; Вывести P1.7 1

STOP: JMP STOP; Зацикливание программы

END


ВИДЫ КЛАВИАТУР

 

По способам аппаратурной реализации различают два типа клавиатур: кодирующую и некодирующую. В клавиатурах первого типа схемным путем на выходе формируется код, соответствующий нажатой клавише. Значительно более широкое распространение получили дешевые некодирующие (мат­ричные) клавиатуры, которые представляют собой простую матрицу двоичных переключате­лей, включенных на пересечении строк и колонок матрицы. Идентификация (кодирование) нажатой клавиши в таких клавиатурах выполняется программой.

Кодирующие клавиатуры.

Каждой кнопке(контакту переключателя) соответствует определённый вход порта ввода, узнать положение клавиши можно, опрашивая вход порта.

 

Галетный переключатель:

 

Кнопочный переключатель:

 

 

 

Подключение переключателей к порту ввода:

 

 

При опросе порта ввода от переключателя поступает унитарный код, т.е код в котором только один 0, положение которого определяется номером замкнутого контакта.

Унитарный код неудобен для использования в программах, поэтому его необходимо преобразовать в позиционный.

Преобразование унитарного кода в позиционный возможно двумя методами:

1. табличный метод

2. метод сдвигов унитарного кода

 

Табличный метод.

Основан на том, что в ПЗУ имеется таблица кодов: каждому унитарному коду соответствует позиционный. Для идентификации нажатой клавиши используется программа:

IN IPORT

CMA

CPI MASK

JZ EXIT

 





Поделиться с друзьями:


Дата добавления: 2016-10-27; Мы поможем в написании ваших работ!; просмотров: 1085 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Даже страх смягчается привычкой. © Неизвестно
==> читать все изречения...

2421 - | 2132 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.