Главная страница Комбинированное использование портов 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.
******♦♦****♦ Определение констант. N0JEY PRESSED BCF BCF SLEEP PORTJ, SCAN1 PORT B,SCAN2
повторяем цикл. Сканируем линии порта. / Устанавливаем sleep-режим. RB0 и RB1 - входы. RB2 - RB7 - выходы. Эта подпрограмма сканирует две клавиши и возвращает: О, если никакая клавиша не нажата; 1, если нажата клавиша SW1; 2, если нажата клавиша SW2; 3, если нажаты клавиши SW1 и SW2; SCAN KEYS
Формируем интервал 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. Низкийуровеньнаэтихлинияхможетпоявиться, толь- если нажата клавиша. Зная номер текущего активного столбца и определив номер строки, в которой обнаружен нулевой уровень, можно
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |