Мегаобучалка Главная | О нас | Обратная связь


Подпрограмма обработки прерываний по входу INT



2020-03-19 156 Обсуждений (0)
Подпрограмма обработки прерываний по входу INT 0.00 из 5.00 0 оценок




Данная подпрограмма проверяет нажатие кнопок выбора режима. При первом нажатии кнопки включается соответствующий режим и разрешаются прерывания по входам <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         ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-




2020-03-19 156 Обсуждений (0)
Подпрограмма обработки прерываний по входу INT 0.00 из 5.00 0 оценок









Обсуждение в статье: Подпрограмма обработки прерываний по входу INT

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (156)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)