Управление барокамерой

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?ПИСИ В 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>