Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Электронные новости от Мастер Кит" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Апрель 2005 → | ||||||
1
|
2
|
3
|
||||
---|---|---|---|---|---|---|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
26
|
27
|
28
|
29
|
30
|
Статистика
+1 за неделю
Цифровая схемотехника Выпуск 18
Информационный Канал Subscribe.Ru |
Цифровая схемотехника | |
Почтовая рассылка |
Выпуск №18 от 22.04.2005 г.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Предлагаю вашему вниманию очередной выпуск рассылки. В этой рассылке мы начинаем рассматривать принципы построения различных узлов микропроцессорных устройств. Более подробнее вы можете узнать это все из моей книги "Разработка систем на микропроцессорах". А сейчас рассмотрим первый класс устройств, подключаемых к микропроцессору: Кнопки и датчики Ни одно микропроцессорное устройство обычно не обходится без кнопок и простей-ших датчиков, состоящих из простых контактов. При помощи этих элементов в микропро-цессорное устройство передается различная информация, которая «на ходу» должна изме-нять алгоритм работы микропроцессорной системы либо учитываться каким, либо другим образом. Примером может служить датчик поворота управляемого устройства. Допустим, наша микропроцессорная система должна управлять поворотом некоего поворотного уст-ройства. Для отслеживания реального угла поворота нам понадобится датчик. Самый про-стой способ построения такого датчика – это механические контакты, связанные с поворачи-ваемым устройством. Проще всего на валу устройства укрепить постоянный магнит, а на не-подвижной ее части расположить геркон. При вращении вала укрепленный на нем магнит будет проходить рядом с герконом, и вызывать срабатывание его контактов. Схема подклю-чения такого датчика к микроконтроллеру приведена на рисунке 1.2.
Датчик представляет собой свободно разомкнутые контакты геркона. В приведенном
примере датчик подключен к линии P1.0 порта P1 микроконтроллера. Именно
через этот вход в данном случае микропроцессор производит считывание состояния
датчика. Однако с таким же успехом такую схему включения можно было бы
подключить к любой линии дан-ного порта, а так же к любой линии любого
другого порта. В микросхеме AT89C2051 приве-денной в качестве примера,
имеются два порта ввода вывода, которые обозначаются, как P1 и P3. Оба
этих порта восьмиразрядные. Однако у порта P3 лишь семь линий выходят
на внешние выводы микросхемы. Линия P3.6 наружу не выведена и поэтому
не может быть ис-пользована для подключения внешних устройств. Листинг 1.1
Как легко видеть из текста программы, первый оператор записывает в линию 0 порта P1 сигнал логической единицы. Как уже говорилось, это необходимо для правильной работы линии на ввод. Следующая команда считывает бит информации с этой же линии и помещает его в битовый регистр признака переноса. Этот регистр часто используется как аккумулятор для битовых операций. Если в момент считывания сигнала контакты датчика были разомк-нуты, то, как уже говорилось выше, на входе P1.0 микроконтроллера будет логическая еди-ница. Если контакты замкнуты, то этот сигнал будет равен логическому нулю. В результате тот же сигнал окажется в регистре c микроконтроллера. Оператор условного перехода jc осуществляет оценку состояния контактов. Если в регистре c логический ноль, то управле-ние передается на метку m2. то есть далее выполняется оператор call proc2. Если же там единица, то передачи управления не происходит и выполняется следующий по порядку опе-ратор call proc1. Операторы call – это вызов подпрограммы. Подпрограмма proc1 вы-полняет действия, которые должны происходить при срабатывании датчика. Например, под-счет количества срабатываний. Подпрограмма proc2 включена сюда как иллюстрация од-ного из возможных вариантов. Обработка момента размыкания контактов может понадо-биться при реализации антидребезговых алгоритмов и для некоторых других специальных целей. В простейших случаях ее можно просто исключить. Тексты подпрограмм в данном примере не показаны. Для каждого конкретного применения они различны. Схема подключения контактов датчика, приведенная на рис. 1.2 универсальна и широ-ко применяется для подключения не только контактных датчиков, но и кнопок управления. Редкое микропроцессорное устройство обходится без кнопок управления. При помощи та-ких кнопок могут переключаться режимы работы вашего устройства. Они могут служить кнопками «Пуск» и «Стоп». И так далее. Если вам нужно иметь несколько кнопок управле-ния, вы можете подключить их к разным входам микроконтроллера. Если количество кнопок не слишком велико, то приведенный способ их включения – самый рациональный. Однако, если количество управляющих клавиш слишком велико, то вам просто может не хватить имеющихся выводов. В этом случае не обойтись без матрицы клавиш. На рисунке 1.3 приве-дена схема подключения клавиатуры из 32 клавиш путем составления из них матрицы.
На всякий случай напоминаю, что цепи сброса и цепи, связанные с кварцевым
резона-тором на этой схеме, как и на всех последующих, условно не показаны.
Как видно из схемы, для подключения тридцати двух клавиш используется
всего лишь 12 выводов. В данном конкретном случае порт P1 работает как
порт ввода. Четыре младшие разряда порта P3 ра-ботают на вывод. Теоретически
возможно и наоборот. Но с точки зрения удобства составле-ния обслуживающей
программы, такое построение более рационально. Давайте это рассмот-рим
подробнее. Теперь рассмотрим Листинг 1.2. Эта программа представляет собой один
из вариантов реализации процедуры опроса клавиатуры. Эта процедура оформлена
в виде отдельной под-программы, к которой при необходимости обращается
основная программа микроконтрол-лера. При каждом обращении к подпрограмме,
она производит однократное сканирование всей клавиатуры и завершает свою
работу. После завершения работы подпрограммы регистр аккумулятора (то
есть регистр A) содержит код состояния клавиатуры. Если в момент скани-рования
клавиатуры не одна кнопка не была нажата, то возвращаемый код состояния
будет равен нулю. Если нажато сразу несколько кнопок, это считается недопустимым
и в этом случае программа так же возвращает ноль. И только в том случае,
если нажата всего одна кнопка, то возвращаемый подпрограммой код состояния
будет равен номеру нажатой кноп-ки. Описанный выше алгоритм является стандартным
для клавиатуры, состоящей из матри-цы клавиш. Листинг 1.2
Но продолжим описание подпрограммы опроса клавиатуры. В строках 14 и
15 происхо-дит инициализация всех выводов, связанных с клавиатурой. Сначала
(строка 14), в порт P1 выводится код 0FFH, что переводит все выходы в
единичное состояние. После этого потр P1 готов работать на ввод сигнала.
В строке 15 производится вызов подпрограммы clrU, кото-рая устанавливает
разряды P3.0-P3.3 в единичное состояние. Текст этой подпрограммы при-веден
в строках 50…54. Вспомогательная подпрограмма clrU производит предварительное
вычисление в буфере p3buf. Она устанавливает младшие разряды числа, хранящегося
в буфере, в единичное состояние, а затем выводит это число в порт P3.
Значения старших раз-рядов числа в буфере устанавливают другие программы.
Подпрограмма clrU сделана так, что не изменяет их значения. Надеюсь все вышесказанное вам было понятно и интересно. Если что то не
так, извините. Дело в том, что данная статья - это выдержка из моей книги
"Разработка устройств
на микропроцесорах". Напишите пожалуйста мне о ваших впечатлениях,
замечаниях и пожеланиях. Мой адрес avbelov@ukr.net
|
Автор рассылки Белов А.В. avbelov@ukr.net |
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: tech.digitchip01 |
Отписаться |
В избранное | ||