Данная подпрограмма проверяет нажатие кнопок «Установка часов», «Установка минут», «+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 ; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-
Самое читаемое:
Непрерывный и квантованный объекты управления в пространстве состояний
1. Задана линейная стационарная дискретная система (параметры
непрерывных динамических звеньев в таблице 1 Приложения 2).
и .
Рисунок 1. Структурная схема линейной стационарной дискретной системы
. Составить описание непрерывного объекта управления в пространстве
состояний.
. Выбрать период дискретности и ...