Подпрограмма обработки прерываний по входу INT
Данная подпрограмма проверяет нажатие кнопок выбора режима. При первом нажатии кнопки включается соответствующий режим и разрешаются прерывания по входам <RB4:RB7> от кнопок «Установка часов», «Установка минут», «+1» и «-1». При повторном нажатии этой же кнопки происходит выключение соответствующего режима, запрет прерываний по входам <RB4:RB7> и, при необходимости, производится запись установленных значений в EEPROM память данных. ;- INT_INT ; ОБРАБОТЧИК ПРЕРЫВАНИЙ ПО ВХОДУ INT ;- BCF INTCON, INTF ; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ПО ВХОДУ INT BTFSC PORTA, 2 ; НАЖАТА КНОПКА «УСТАНОВКА ТЕМПЕРАТУРЫ» GOTO B_TIME_START ; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ ; «УСТАНОВКА ВРЕМЕНИ ВКЛЮЧЕНИЯ» BTFSS FLAG_R, 0 ; РЕЖИМ УСТАНОВКИ ТЕМПЕРАТУРЫ ВКЛЮЧЕН GOTO START_UST_T ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ ВКЛЮЧЕНИЯ РЕЖИМА ; УСТАНОВКИ ТЕМПЕРАТУРЫ BCF FLAG_R, 0 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕМПЕРАТУРЫ BSF FLAG_R, 6 ; ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ BCF INTCON, RBIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> ;- ; ЗАПИСЬ В EEPROM BANC2 CLRF EEADR ; УСТАНОВКА НАЧАЛЬНОГО АДРЕСА 00h
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF MAX_TL, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА MAX_TL BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF MAX_TH, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА MAX_TH BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC0 GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;- START_UST_T ; ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ТЕМПЕРАТУРЫ MOVLW B'00000001' ; ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕМПЕРАТУРЫ MOVWF FLAG_R ; ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ BSF INTCON, RBIE ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ ;- B_TIME_START ; ПРОВЕРКА НАЖАТИЯ КНОПКИ «УСТАНОВКА ВРЕМЕНИ ; ВКЛЮЧЕНИЯ» BTFSC PORTA, 2 ; НАЖАТА КНОПКА «УСТАНОВКА ВРЕМЕНИ ВКЛЮЧЕНИЯ» GOTO B_TIME_STOP ; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ ; «УСТАНОВКА ВРЕМЕНИ ВЫКЛЮЧЕНИЯ» BTFSS FLAG_R, 1 ; РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВКЛЮЧЕНИЯ ВКЛЮЧЕН GOTO START_UST_T_ST ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ ВКЛЮЧЕНИЯ РЕЖИМА ; УСТАНОВКИ ВРЕМЕНИ ВКЛЮЧЕНИЯ BCF FLAG_R, 1 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ BSF FLAG_R, 6 ; ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ BCF INTCON, RBIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> ;- ; ЗАПИСЬ В EEPROM BANC2 MOVLW 0x02 MOVWF EEADR ; УСТАНОВКА НАЧАЛЬНОГО АДРЕСА 02h
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF START_ML, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА START_ML BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF START_MH, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА START_MH BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF START_HL, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА START_HL BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF START_HH, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА START_HH BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM
BANC0 GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;- START_UST_T_ST ; ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ВРЕМЕНИ ВКЛЮЧЕНИЯ MOVLW B'00000010' ; ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВКЛЮЧЕНИЯ MOVWF FLAG_R ; ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ BSF INTCON, RBIE ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ ;- B_TIME_STOP ; ПРОВЕРКА НАЖАТИЯ КНОПКИ «УСТАНОВКА ВРЕМЕНИ ; ВЫКЛЮЧЕНИЯ» BTFSC PORTA, 3 ; НАЖАТА КНОПКА «УСТАНОВКА ВРЕМЕНИ ВЫКЛЮЧЕНИЯ» GOTO B_TIME_CURR ; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ ; «УСТАНОВКА ТЕКУЩЕГО ВРЕМЕНИ» BTFSS FLAG_R, 2 ; РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ ВКЛЮЧЕН GOTO START_UST_T_SP ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ ВКЛЮЧЕНИЯ РЕЖИМА ; УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ BCF FLAG_R, 2 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ BSF FLAG_R, 6 ; ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ BCF INTCON, RBIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> ;- ; ЗАПИСЬ В EEPROM BANC2 MOVLW 0x06 MOVWF EEADR ; УСТАНОВКА НАЧАЛЬНОГО АДРЕСА 06h
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF STOP_ML, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_ML BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF STOP_MH, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_MH BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF STOP_HL, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_HL BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM BANC2 INCF EEADR, F ; УВЕЛИЧИТЬ АДРЕС НА 1
BANC3 BTFSC EECON1, WR ; ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM GOTO $+1 BANC0 MOVF STOP_HH, W ; ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_HH BANC2 MOVWF EEDATA BANC3 BCF EECON1, EEPGD ; ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM BSF EECON1, WREN ; РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM MOVLW 0x55 EECON2 0xAA EECON2 BSF EECON1, WR ; ИНИЦИАЛИЗАЦИЯ ЗАПИСИ BCF EECON1, WREN ; ЗАПРЕТ ЗАПИСИ ВEEPROM
BANC0 GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;- START_UST_T_SP ; ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ВРЕМЕНИ ; ВЫКЛЮЧЕНИЯ MOVLW B'00000100' ; ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ MOVWF FLAG_R ; ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ BSF INTCON, RBIE ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ ;- B_TIME_CURR ; ПРОВЕРКА НАЖАТИЯ КНОПКИ «УСТАНОВКА ТЕКУЩЕГО ; ВРЕМЕНИ» BTFSC PORTA, 4 ; НАЖАТА КНОПКА «УСТАНОВКА ТЕКУЩЕГО ВРЕМЕНИ» GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ BTFSS FLAG_R, 3 ; РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ ВКЛЮЧЕН GOTO START_UST_T_CUR ; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ ВКЛЮЧЕНИЯ РЕЖИМА ; УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ BCF FLAG_R, 3 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ BSF FLAG_R, 6 ; ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ MOVLW B'00001011' ; ВКЛЮЧИТЬ МОДУЛЬ CCP1 MOVWF CCP1CON BCF INTCON, RBIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7>
;- START_UST_T_CUR ; ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ CLRF CCP1CON ; ВЫКЛЮЧИТЬ МОДУЛЬ CCP1 MOVLW B'00001000' ; ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ MOVWF FLAG_R ; ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ CLRF SEC_L ; ОЧИСТИТЬ СЧЕТЧИКИ СЕКУНД CLRF SEC_H BSF INTCON, RBIE ; РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ ;- Подпрограмма обработки прерываний по входам < RB 4: RB 7> Данная подпрограмма проверяет нажатие кнопок «Установка часов», «Установка минут», «+1» и «-1». Если нажата кнопка «+1» или «-1», происходит запуск таймера TMR2 и переход к установке соответствующей величины (температуры, времени включения, времени выключения, текущего времени). Если же обе кнопки отпущены, происходит остановка таймера TMR2. Нажатие кнопок «Установка часов» и «Установка минут» приводит к включению соответствующего режима. Листинг подпрограммы приведен ниже.
;-_RB ; ОБРАБОТЧИК ПРЕРЫВАНИЙ ПО ВХОДАМ <RB4:RB7> INTCON, RBIF ; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ПО ВХОДАМ <RB4:RB7> PORTB, 5 ; НАЖАТА КНОПКА «УСТАНОВКА МИНУТ» $+4 FLAG_R, 5 ; ДА - ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ МИНУТ FLAG_R, 4 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ЧАСОВ $+5 PORTB, 4 ; НАЖАТА КНОПКА «УСТАНОВКА ЧАСОВ» $+3 FLAG_R, 4 ; ДА - ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ЧАСОВ FLAG_R, 5 ; ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ МИНУТ PORTB, 6 ; НАЖАТА КНОПКА «+1» $+2 $+3 PORTB, 7 $+3 T2CON, TMR2ON ; ЗАПУСК ТАЙМЕРА TMR2 DOWN_BUTT ; ПЕРЕХОД НА ПРОВЕРКУ СОСТОЯНИЙ КНОПОК T2CON, TMR2ON ; ОСТАНОВКА ТАЙМЕРА TMR2 COUNTER INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ ;-
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (156)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |