Разделы сайта

Подпрограмма обработки прерываний по входам <RB4:RB7>

Данная подпрограмма проверяет нажатие кнопок «Установка часов», «Установка минут», «+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 ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-

Подпрограмма приема / передачи данных через

USART

Данная подпрограмма проверяет данные, записанные в буфер приемника USART, и, если они соответствуют коду запроса чтения EEPROM (константа CONST_COD), читает данные из EEPROM, а затем осуществляет передачу этих данных во внешнее устройство, используя модуль USART.

;-_PRT ; ПОДПРОГРАММА ПРИЕМА/ПЕРЕДАЧИ ДАННЫХ ЧЕРЕЗ USART PIE1, RCIE ; ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USART

;-

; ПРОВЕРКА НА ОТСУТСТВИЕ ОШИБОК КАДРА RCSTA, OERR ; ПРОИЗОШЛА ОШИБКА КАДРА $+3 ; НЕТ - ПЕРЕХОД К ИДЕНТИФИКАЦИИ КОДА ЗАПРОСА

; ПЕРЕДАЧИ ДАННЫХ RCSTA, OERR ; СБРОСИТЬ ФЛАГ ОШИБКИ КАДРА INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-

; ИДЕНТИФИКАЦИЯ КОДА ЗАПРОСА ПЕРЕДАЧИ ДАННЫХ STATUS, Z RCREG, W ; ЧТЕНИЕ ДАННЫХ ИЗ БУФЕРА ПРИЕМНИКА PIR1, RCIF ; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USART CONST_COD ; СРАВНИТЬ КОД STATUS, Z ; КОД ВЕРНЫЙ INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-

; ЧТЕНИЕ ДАННЫХ ИЗ EEPROM И ПЕРЕДАЧА ЧЕРЕЗ USART EEADR ; ОЧИСТИТЬ РЕГИСТР АДРЕСА EECON1, EEPGD; УСТАНОВИТЬ ЧТЕНИЕ ИЗ EEPROM EECON1, RD ; НАЧАТЬ ЧТЕНИЕ EEDATA, W ; ПРОЧИТАТЬ РЕГИСТР ДАННЫХ TXREG ; ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ

; В БУФЕР ПЕРЕДАТЧИКА TXSTA, TXEN ; РАЗРЕШИТЬ ПЕРЕДАЧУ EEADR, F ; УВЕЛИЧИТЬ НА 1 АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ

MOVF EEADR, W 0x0A

BTFSC PIR1, TXIF ; ОЖИДАТЬ ОКОНЧАНИЕ ПЕРЕДАЧИ

GOTO $-1 STATUS, Z READ

GOTO INT_SOURCE ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ

;-

Самое читаемое:

Активный фильтр нижних частот каскадного типа
Используя в качестве элемента схемы ОУ, можно синтезировать характеристику любого RLC-фильтра без применения катушек индуктивности. Такие безындукционные фильтры известны под названием «активные фильтра» благодаря включению в их схему активного элемента (усилителя). Активные фильтры можно использовать в качестве фильтров низких ...

www.techstages.ru : Все права защищены! 2024