Управление барокамерой
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?ПИСИ В EEPROM
GOTO$+1
BANC0
MOVFSTOP_HL,W;ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_HL
BANC2
MOVWFEEDATA
BANC3
BCFEECON1,EEPGD;ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM
BSFEECON1,WREN;РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM
MOVLW0x55EECON20xAAEECON2
BSFEECON1,WR;ИНИЦИАЛИЗАЦИЯ ЗАПИСИ
BCFEECON1,WREN;ЗАПРЕТ ЗАПИСИ ВEEPROM
BANC2
INCFEEADR,F;УВЕЛИЧИТЬ АДРЕС НА 1
BANC3
BTFSCEECON1,WR;ПРОВЕРКА ОКОНЧАНИЯ ЗАПИСИ В EEPROM
GOTO$+1
BANC0
MOVFSTOP_HH,W;ЧТЕНИЕ ДАННЫХ ИЗ РЕГИСТРА STOP_HH
BANC2
MOVWFEEDATA
BANC3
BCFEECON1,EEPGD;ЗАПИСЬ БУДЕТ ПРОИЗВОДИТЬСЯ В EEPROM
BSFEECON1,WREN;РАЗРЕШЕНИЕ ЗАПИСИ В EEPROM
MOVLW0x55EECON20xAAEECON2
BSFEECON1,WR;ИНИЦИАЛИЗАЦИЯ ЗАПИСИ
BCFEECON1,WREN;ЗАПРЕТ ЗАПИСИ ВEEPROM
BANC0
GOTOINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
START_UST_T_SP;ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ВРЕМЕНИ
;ВЫКЛЮЧЕНИЯ
MOVLWB00000100;ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ
MOVWFFLAG_R;ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ
BSFINTCON,RBIE;РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ
GOTOINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
B_TIME_CURR;ПРОВЕРКА НАЖАТИЯ КНОПКИ "УСТАНОВКА ТЕКУЩЕГО
;ВРЕМЕНИ"
BTFSCPORTA,4;НАЖАТА КНОПКА "УСТАНОВКА ТЕКУЩЕГО ВРЕМЕНИ"
GOTOINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
BTFSSFLAG_R,3;РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ ВКЛЮЧЕН
GOTOSTART_UST_T_CUR;НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ ВКЛЮЧЕНИЯ РЕЖИМА
;УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ
BCFFLAG_R,3;ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ
BSFFLAG_R,6;ВКЛЮЧИТЬ РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИ
MOVLWB00001011;ВКЛЮЧИТЬ МОДУЛЬ CCP1
MOVWFCCP1CON
BCFINTCON,RBIE;ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ
;-----------------------------------------------------------------
START_UST_T_CUR;ПОДПРОГРАММА ВКЛЮЧЕНИЯ РЕЖИМА УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ
CLRFCCP1CON;ВЫКЛЮЧИТЬ МОДУЛЬ CCP1
MOVLWB00001000;ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ТЕКУЩЕГО ВРЕМЕНИ
MOVWFFLAG_R;ОСТАЛЬНЫЕ ВЫКЛЮЧИТЬ
CLRFSEC_L;ОЧИСТИТЬ СЧЕТЧИКИ СЕКУНД
CLRFSEC_H
BSFINTCON,RBIE;РАЗРЕШИТЬ ПРЕРЫВАНИЯ ПО ВХОДАМ
GOTOINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
2.10.6 Подпрограмма обработки прерываний по входам
Данная подпрограмма проверяет нажатие кнопок Установка часов, Установка минут, +1 и -1. Если нажата кнопка +1 или -1, происходит запуск таймера TMR2 и переход к установке соответствующей величины (температуры, времени включения, времени выключения, текущего времени). Если же обе кнопки отпущены, происходит остановка таймера TMR2. Нажатие кнопок Установка часов и Установка минут приводит к включению соответствующего режима.
Листинг подпрограммы приведен ниже.
;-----------------------------------------------------------------_RB;ОБРАБОТЧИК ПРЕРЫВАНИЙ ПО ВХОДАМ PORTB,5;НАЖАТА КНОПКА "УСТАНОВКА МИНУТ"$+4FLAG_R,5;ДА - ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ МИНУТFLAG_R,4;ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ЧАСОВ$+5PORTB,4;НАЖАТА КНОПКА "УСТАНОВКА ЧАСОВ"$+3FLAG_R,4;ДА - ВКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ ЧАСОВFLAG_R,5;ВЫКЛЮЧИТЬ РЕЖИМ УСТАНОВКИ МИНУТ
PORTB,6;НАЖАТА КНОПКА "+1"$+2$+3PORTB,7$+3T2CON,TMR2ON;ЗАПУСК ТАЙМЕРА TMR2DOWN_BUTT;ПЕРЕХОД НА ПРОВЕРКУ СОСТОЯНИЙ КНОПОКT2CON,TMR2ON;ОСТАНОВКА ТАЙМЕРА TMR2COUNTERINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
.10.7 Подпрограмма приема/передачи данных через USART
Данная подпрограмма проверяет данные, записанные в буфер приемника USART, и, если они соответствуют коду запроса чтения EEPROM (константа CONST_COD), читает данные из EEPROM, а затем осуществляет передачу этих данных во внешнее устройство, используя модуль USART.
;-----------------------------------------------------------------_PRT;ПОДПРОГРАММА ПРИЕМА/ПЕРЕДАЧИ ДАННЫХ ЧЕРЕЗ USARTPIE1,RCIE;ЗАПРЕТИТЬ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USART
;-----------------------------------------------------------------
;ПРОВЕРКА НА ОТСУТСТВИЕ ОШИБОК КАДРАRCSTA,OERR;ПРОИЗОШЛА ОШИБКА КАДРА$+3;НЕТ - ПЕРЕХОД К ИДЕНТИФИКАЦИИ КОДА ЗАПРОСА
;ПЕРЕДАЧИ ДАННЫХRCSTA,OERR;СБРОСИТЬ ФЛАГ ОШИБКИ КАДРАINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
;ИДЕНТИФИКАЦИЯ КОДА ЗАПРОСА ПЕРЕДАЧИ ДАННЫХSTATUS,ZRCREG,W;ЧТЕНИЕ ДАННЫХ ИЗ БУФЕРА ПРИЕМНИКАPIR1,RCIF;СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USARTCONST_COD;СРАВНИТЬ КОДSTATUS,Z;КОД ВЕРНЫЙINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
;ЧТЕНИЕ ДАННЫХ ИЗ EEPROM И ПЕРЕДАЧА ЧЕРЕЗ USARTEEADR;ОЧИСТИТЬ РЕГИСТР АДРЕСАEECON1,EEPGD;УСТАНОВИТЬ ЧТЕНИЕ ИЗ EEPROMEECON1,RD;НАЧАТЬ ЧТЕНИЕEEDATA,W;ПРОЧИТАТЬ РЕГИСТР ДАННЫХTXREG;ПОМЕСТИТЬ СОДЕРЖИМОЕ ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
; В БУФЕР ПЕРЕДАТЧИКАTXSTA,TXEN;РАЗРЕШИТЬ ПЕРЕДАЧУEEADR,F;УВЕЛИЧИТЬ НА 1 АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ ПАМЯТИ
MOVFEEADR,W0x0A
BTFSCPIR1,TXIF;ОЖИДАТЬ ОКОНЧАНИЕ ПЕРЕДАЧИ
GOTO$-1STATUS,ZREAD
GOTOINT_SOURCE;ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-----------------------------------------------------------------
2.10.8 Подпрограмма восстановления контекста
Данная подпрограмма осуществляет восстановление содержимого аккумулятора и регистра STATUS перед выходом из обработчиков прерываний.
Листинг программы приведен ниже.
;-----------------------------------------------------------------_INT;ВОССТАНОВЛЕНИЕ АККУМУЛЯТОРА И РЕГИСТРА STATUSPIE1,RCIE;РАЗРЕШИТЬ ПРЕРЫВАНИЯ ОТ ПРИЕМНИКА USART
BANC0STATUS_TEMP,W;ВОССТАНОВИТЬ РЕГИСТР STATUS
MOVWFSTATUSSTATUS,RP0;ОПРЕДЕЛЕНИЕ ТЕКУЩЕГО БАНКА
GOTOREST_WREGSTATUS,RP0;ВЫБОР БАНКА 0W_TEMP,F;ВОССТАНОВИТЬ АККУМУЛЯТОР
SWAPFW_TEMP,WSTATUS,RP0;ВЫБОР БАНКА 1_WREGW_TEMP,F;ВОССТАНОВИТЬ АККУМУЛЯТОРW_TEMP,W
RETURN;ВЕРНУТЬСЯ ИЗ ПРЕРЫВАНИЯ
;-----------------------------------------------------------------
3 РАСЧЕТ ЭЛЕКТРИЧЕСКИХ ПАРАМЕТРОВ МПС
Р?/p>