![]() |
![]() |
Главная страница Комбинированное использование портов TITLE Часы с будильником . Листинг 5.1 LIST Р = 16С57 Соответствует инструкции по применению AN529 фирмы Microchip. Определение констант. PIC57 EQU 7FFH Кварцевый генератор с частотой 4,096 МГц. Коэффициент деления предварительного* делителя равен 32, что позволяет получить период приращения RTCC 31,25 мкс. Модуль счета RTCC равен 96, период - 5 мс. MSEC5 EQU D96 ******:*t,it**,
RTCC PC Определение регистров RAM. EQU 1 ии 2 STATUS FSR , P0RT,C EQU EQU EQU EQU EQU Определение регистров часов реального времени. 8 : Счетчик миллисекунд. 9 ; Счетчик секунд. OA ; Счетчик минут. С8 ; Счетчик часов, регистров будильника. ОС ; Минуты будильника. 0D ; Часы будильника, регистров ввода данных. СЕ : Иинуты. OF ; Часы. ******************************* STW ии HTMR ни т ни Определение ilAlARH Юи HALARM EQU Определение HENTRY ECU HENTHY EQU :***♦♦*** ************* Определение битов состояния и их функций. FLAG EOU 10 BIT # 76543210 -l-l-l-l-l-l-l-l-l-l-l ХХХХХХ001 -> Режим часов (REAL TIME MODE - RTM). X1XXXXX01 -> Режим будильника (ALARM TIME MODE - ATM). XXX1XXX10 -> Режим ввода данных (DATA ENTRY MODE - DEM). XX1XXXX111 -> Режим проверки (TEST MODE -TM). XXXXX1YX1X -> Светодиод ALARM вкл./выкл. XX1XXYXXX -> Двоеточие вкл./выкл. XXXYXXXX -> Мигание. XXYXXXXX -> Звуковой сигнал (KEYJEEP). X1YXXXXXX -> KEYJIT (0/1). YXXXXX1XX -> Служебный код. X = произвольное значение. Y = соответствует описанию (0/1). ТЕНР EQU 11 DIGIT EOU 12 NEW KEY EQU 13 KEY NIBL EQU 14 DEBOUNCE EQU 15 HIM SEC EQU 16 EMTFLG EQU 17 Флаги режима ввода (регистр ENTFLG). BIT # 765432101 --l-l-l-l-l-l-l-l-l-l X1XXXXXXY -> Ввод времени/значений будильника. Счетчик минут/секунд. . X1XX1XXXYX -> Десятки часов установлены. XXX1XXYX1X -> Единицы часов установлены. XXXXYXXX -> Десятки минут установлены. XXXYXXXX -> Единицы минут установлены. XXYXXXXXI -> INKEYBEP. . XYXYXXXX -> Не используется. YXX1XXX1XX -> Не используется. ALFLAG ЕШ 18 ; Регистр флагов будильника. BIT #765431210 XXXXX1XXY -> ALONOF. XXXXXXYX -> INAL. XXXXXYX1X -> SILNC. XXXXYXXX -> INAA. XXXYXXXX -> He используется. X1XYXXXXX -> He используется. XYXYXXXX -> He используется. YXXXXXXX1 -> He используется. OflG 0 (ЗОЮ INIT CLK ; Инициализация часов. Тест индикации, все светодиоды зажжены на две секунды. AAFLAG AATMR EQU 19 ЕШ 1А Определение функций портов. PORT А: PORT.B: , BIT О -> Выход на BEEPER (активный низкий). BIT 1-3 -> Не используются. все выходы. BIT 0&4 -> Общий катод старшей цифры (MSB) & светодиод ALARM. BIT 1&5 -> Общий катод второй цифры & и двоеточие. BIT 2&6 -> Общий катод третьей цифры & и светодиод РН. BIT 3&7 -> Общий катод младшей цифры (LSB) & светодиод АН. PORT C: При отображении все порты - выходы, управляющие сегментами. При сканировании клавиатуры COL - выходы, ROW - входы. BIT О -> сегмент А & столбец ((X)L) 4. BIT 1 -> сегмент В & столбец (COL) 3. BIT 2 -> сегмент С & столбец (COL) 2. BIT 3 ~> сегмент D & столбец (COL) 1. BIT 4 -> сегмент Е & строка (ROW) 4. - BIT 5 -> сегмент F & строка (ROW) 3. BIT 6 -> сегмент G & строка (ROW) 2. , BIT 7 -> Общий анод всех сигнализаторов (ALARM. РМ, АН, двоеточи, & строка (ROW) 1.
ESETJTW HOVF ANDLW BTFSS RETLW HIN SEC,W ; Загружаем MIN SEC в регистр W. ВООООШГ ; / STATUS, Z ; Если 0. пропускаем, О ; в противном случае возвращаемся. BTFSC RETLW FUG.O FLAG.ALRMLED ALFLAG,ALONOF FLAG,ALRMLED 0 UPDATE DISPLAY MOVLW MOVWF MOVLW XORWF BTFSC GOTO UP DSP 1 В 00000000 PORT.C BOOIIIIir PORTJ, 0 STATUS. Z SCAN KP
Последняя цифра? / Если не О, то пропускаем. В противном случае сканируем клавиатуру. Выбор цифры индикации.
MOVLW MOVWF RETLW СНК HALFJEC BTFSS MOVLW MOVWF RETLW B 11111111 PORTJ 0 FLAG,COLON В 00000000 DIGIT 0 Включаем все сегменты. / Возвращаемся. Если двоеточие включено, то возвращаемся, Выдаем О на все линии порта С. Посредством косвенной адресации (с использованием FSR),формируем табличным способом семисегментные коды для отображения минут. GEr 7JEG
|
© 2000 - 2025 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |