Главная страница  Комбинированное использование портов 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 [ 15 ] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

delayie

CheckAgain

movlw

movwf

clrf

btfss

goto

bcf bcf

return end

STATUS, RPO B-00000111 OptionReg STATUS, RPO RTCC

INTCON,RTIF INTCON,RTIE

INTCON,RTIF CheckAgain INTCON,RTIE INTCON,RTIF

Банк 1.

fose/256 -> RTCC. /

Банк 0.

Сброс флага прерываний таймера. Разрешить прерывания таймера.

Переполнение таймера?

Нет, ожидание.

Запрет прерываний таймера.

Сброс флага прерываний таймера.

Возврат.

Еще один пример использования матричной KnaBnaTjpbi показан на рис. 3.31. В данном случае сокращение количества необходимых внешних компонентов пол}ено за счет использования внутренних подтя-гавающих резисторов порта В на линиях RB4 - RB7. Последовательно включенные резисторы номиналом 100 Ом обеспечивают защиту микроконтроллера PIC16СХХ от электростатических разрядов.

-с=>

-czh -czb

(D CD ф (!) [zzi-

8x100fi

RBO RBI RB2 RB3 RB4 RB5 RB6 RB7

PIC 16CXX

Рис. 3.31

Усовершенавовонный вариант аемы матричной клавиатуры

Данная схема непригодна для PIC-микроконтроллеров подсемейства 16С5Х, так как они не имеют входов внешних прерываний. Однако свое решение есть и для них (рис. 3.32).

Использованный в схеме микроконтроллер (16С54) установлен в sleep-режим и потребляет, таким образом, минимум энергии. Пр нажатии одной из дв) клавиш он пробуждается и зажигает соответствующий светодиод, затем снова возвращается в 51еер-режи>*-

г-о о-

SW2 1

R2 hzz1-4,7к0

hzd-

+Vdd

ij47kfi R4

+Vdci

4,7kfi

R5 1000 4r -[=3

1000 o.ljuF

R7 1000 -C=b

-cu-

R8 1000

-HZD-

1000 SCAN1

SCAN2

mClr

PIC 16C54

RBO RBI

RB2 R83

p,.R9

riRIO Mlkfi

ЗеленьО

Красный

Phc.3J2

Схема вывода PIC 16C5X из sleep-режима в результате нажатия клавиши

Этот принцип может быть реализован в любом приложении для клавиатуры с любым числом клавиш.

Когда микроконтроллер находится в sleep-режиме, на выходах RB2 и RB3 низкий логический уровень. Конденсатор С заряжен, поэтому на входе mclr будет высокий логический уровень. При нг1жа-тии на одну из двух клавиш конденсатор разряжается через R2 или R3, что приводит к сбросу микроконтроллера и переводу линий параллельных портов в высокоимпедансное состояние. Разряд конденсатора С прекращается и микроконтроллер может выйти из состояния сброса и начать опрос клавиш.

Кратковременный перевод линий RB2 и RB3 в низкий уровень не оказывает воздействия на вывод MCLR, так как за это время (10 мкс) конденсатор С не успеет разрядиться через R2 и R3. Как только начатая клавиша дешифрована и соответствующая подпрограмма завершена (включен светодиод), команда sleep переводит микросхему ь режим низкого потребления.

Резисторы R5 - R8 предназначены для защиты микроконтроллера от электростатических разрядов, возникающих при манипулиро-нйи клавиатурой.

Единственное условие, которое надо соблюсти, чтобы эта схе-

Нормально работала, состоит в том, что время заряда и разряда нденсатора С должно быть меньше продолжительности цикла Роса 16С54, обычно равной 18 мс.



Данный алгоритм реализует программа, представленная листиц, гом 3.8. Пример расширения этой схемы до классической матрично{1 клавиат)ры на шестнадцать клавиш представлен на рис. 3.33.

GP DB2

EQU ЕОи EQU

+Vdd

[J47k0 lOOfi

4х4.,7кП

Q 9 9 О о о о о

о о о 9 о о о о

6-о С) о

о (} {} -

-CZb -CZb-HZZb -CZb -CZb -CZb

4ZD-

8x1C0fi

MCLR PIC 16C54

RAO RAl RA2 RA3 RBO RBI RB2 RBJ

Назначение линий порта В:

ВХОД

0 -> SW1

1 -> SW2

2 -> SCAN1

3 -> SCAN2

4 -> GRN LED

5 -> RED LED

6 и 7 -> Неиспользованные ВЫХОДЫ;

ВЫХОД

Рис. 3.33

START

Усовершенствованная аема вывода PIC16С5Х из sleep-режима

Листинг 3.8

Вывод микроконтроллера из sleep-режима с помощью клавиатуры. LIST Р = 16С54

Hit************

Эта программа иллюстрирует принцип вывода PIC 16С5Х из sleep-режима

путем воздействия на клавиши клавиатуры.

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

Когда нажата клавиша SW1, загорается зеленый светодиод.

Когда нажата клавиша SW2, загорается красный светодиод.

Программа соответствует инструкции по применению AN528 фирмы Microchip.

CALL

INIT PORT В

; Инициализация порта В.

CALL

DELAY

; Задержка 20 мс.

CALL

SCAN KEYS

; Считывание клавиш.

MOVWF

; Запись в переменную GP.

BTFSC

GP.SWI

; Продолжение, если не нажата

; клавиша SW1,

CALL

TURN GREEN ON

; или включение зеленого светодиода.

BTFSC

6P,SW2

; Продолжение, если не нажата

; клавиша SW2,

CALL

TURN RED CN

; или включение красного светодмода.

.KEY

CALL

DELAY

; Задержка 20 мс.

CALL

SCAN KEYS

; Считывание клавиш

XORLW

CHK FOR KEY

; Если клавиша еще нажата.

******♦♦****♦

Определение констант.

N0JEY PRESSED BCF BCF SLEEP

PORTJ, SCAN1 PORT B,SCAN2

PORTJ

INIT P0RT B

SCAN1

SCAN2

MOVLW

В 00000011

TRIS

PORT В

MOVLW

OFFh

GRN LED

MOVWF

PORT В

RED LED

RETLN

MSEC 20

D20-

повторяем цикл.

Сканируем линии порта. /

Устанавливаем sleep-режим.

RB0 и RB1 - входы. RB2 - RB7 - выходы.



Эта подпрограмма сканирует две клавиши и возвращает:

О, если никакая клавиша не нажата;

1, если нажата клавиша SW1;

2, если нажата клавиша SW2;

3, если нажаты клавиши SW1 и SW2;

SCAN KEYS

P0RT

3.SCAN1

; Обнуляем линию SCAN1.

PORT

3,SCAN2

; Обнуляем линию SCAN2.

MOVLW

В-0000001r

; Загружаем маску

ANDWF

PORTJ

; и опрашиваем порт В.

PORTJ

3,SCAN1

; Устанавливаем 1 на линиях

PORT [

3,SCAN2

; SCAN1 и SCAN2.

ADDWF

PC,1

; Считываем таблицу.

RETLW

; Нажаты клавиши SW1 и SW2.

RETLW

; Нажата клавиша SW2.

RETLW

; Нажата клавиша SW1.

RETLW

; Клавиши не нажаты.

Формируем интервал 20 мс (Fosc = 2 МГц). DELAY

DLY1

DLY2

MOVLW HSEC 20

MOVWF OBI

CLRF 062

DECFSZ DB1

GOTO DLY2

RETLW 0

DECFSZ DB2

GOTO DLY2

GOTO DLYl

; Включение зеленого светодиода. TURN GREEN ON

BCF PORTJ, CRN LED

RETLW 0

; Включение красного светодиода. TURN RED ON

BCF PORTJ, RED.LED

RETLW 0

КОМБИНИРОВАННОЕ ИСПОЛЬЗОВАНИЕ ПОРТОВ

g при использовании высокотехнологичных компонентов, та-

V как матричная клавиатура и микросхемы, управляющие цифро-\jmh индикаторами (как рассмотренная ранее ИС МС14499), случайся что для управления устройством микроконтроллеру может не катить линий портов.

Однако зато время, пока нажимается клавиша, микроконтроллер

девает выполнить множество операций, в том числе связанных сортами ввода/вывода. Благодаря этому можно использовать одни л те же порты для разньгх операций, что позволит вам отказаться от применения дорогосто5пцих микроконтроллеров. Особенно наглядна такая возможность при взаимодействии с индикаторами и клавиатурами. Обычно одни и тех же порты используются как выходы для отравления индикаторами, и как входы при опросе клавиатуры. Порт в этом случае - двунаправленный.

Пример схемы, где реализуется описанный принцип, представлен на рис. 3.34. Она обеспечивает управление четырьмя семисегментными индикаторами и взаимодействие с матричной клавиатурой, имеющей шестнадцать клавиш. Для этого задейств}тотся только двенадцать линий портов.

Резисторы с R1 по R8 предназначены для ограничения тока индикаторов. Время цикла работы индикатора составляет 20 мс, что гарантирует визуальную стабильность изображения. Каждая цифра высвечивается в течение 5 мс. Семисегментный код отображаемой цифры выдается на линии RBO - RB7. Управление общими электродами индикаторов осуществляется через четыре линии порта А. Номиналы резисторов R9 - R12 значительно выше, чем значения сопротивлений R1 - R8. Это необходимо, чтобы нажатие на клавишу не влияло на свечение индикаторов.

При опросе клавиатуры микроконтроллер работает следующим образом. Порты RBO - RE3 являются выходами, а порты RE4 - RJB7 назначены как входы. Через внутренние резисторы входные линии RB4 - RB7 подключены к потенциалу питания, что эквивалентно по-Дачелогических единиц. Через порты RBO - RB3 осуществляется сканирование (перебор) столбцов клавиатуры низкими логическими Уровнями. Каждый раз после переключения столбца считываются ли-*КБ4 -RB7. Низкийуровеньнаэтихлинияхможетпоявиться, толь-

если нажата клавиша. Зная номер текущего активного столбца и определив номер строки, в которой обнаружен нулевой уровень, можно



1 2 3 4 5 6 7 8 9 10 11 12 13 14 [ 15 ] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.