Микропроцессорныая система. Автоматический чайник
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?ЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮHOUR_L, W0x0A; СЧЕТЧИК ДОСЧИТАЛ ДО 10STATUS, ZCURR_TIME; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮHOUR_L; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВHOUR_H; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК ЧАСОВ
;-_TIME; ПОДПРОГРАММА УПРАВЛЕНИЯ ВЫВОДОМ ТЕКУЩЕГО
; ВРЕМЕНИ НА ИНДИКАЦИЮ
;-
; ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ РЕЖИМА ПОДДЕРЖАНИЯ ТЕМПЕРАТУРЫ
BCFSTATUS, ZSTART_ML, WMIN_L, WSTATUS, ZM4
STATUS, ZSTART_MH, WMIN_H, WSTATUS, ZM4
STATUS, ZSTART_HL, WHOUR_L, WSTATUS, ZM4
STATUS, ZSTART_HH, WHOUR_H, WSTATUS, ZM4
FLAG_R1,0STATUS, ZSTOP_ML, WMIN_L, WSTATUS, ZM5
STATUS, ZSTOP_MH, WMIN_H, WSTATUS, ZM5
STATUS, ZSTOP_HL, WHOUR_L, WSTATUS, ZM5
STATUS, ZSTOP_HH, WHOUR_H, WSTATUS, ZM5
FLAG_R1,0
;-FLAG_R, 6; ВКЛЮЧЕН РЕЖИМ ОТОБРАЖЕНИЯ ТЕКУЩЕГО ВРЕМЕНИINT_SOURCE; НЕТ - ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
; -
; ВКЛЮЧЕНИЕ/ВЫКЛЮЧЕНИЕ РАЗДЕЛЯЮЩЕЙ ТОЧКИPOINT, 2POINT, 1; ДЕЦИМАЛЬНАЯ ТОЧКА ВКЛЮЧЕНА$+3POINT, 1; ДА - ВЫКЛЮЧИТЬ ТОЧКУ$+2POINT, 1; НЕТ - ВКЛЮЧИТЬ ТОЧКУ
; -
MOVFMIN_L, WIND_0MIN_H, WIND_1HOUR_L, WIND_2HOUR_H, WIND_3
GOTOINT_SOURCE; НЕТ - ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-
Подпрограмма обработки прерываний от таймера TMR2
Данная подпрограмма осуществляет опрос состояния кнопок +1 и -1 через промежутки времени, определяемые таймером TMR2. Если нажата и удерживается одна из кнопок +1 и -1, происходит инкрементирование или декрементирование соответствующих регистров с частотой прерываний от таймера TMR2. При кратковременном нажатии происходит однократное изменение значений регистров.
Если ни одна из кнопок +1 и -1 не нажата, то таймер TMR2 выключается.
Листинг подпрограммы приведен ниже.
;-_TMR2; ОБРАБОТЧИК ПРЕРЫВАНИЙ ОТ TMR2PIR1, TMR2IF; СБРОСИТЬ ФЛАГ ПРЕРЫВАНИЯ ОТ ТАЙМЕРА TMR2
BCFSTATUS, ZCOUNTER, WCOUNTSTATUS, Z; СЧЕТЧИК ЗАКОНЧИЛ СЧЕТ
GOTODOWN_BUTT; ДА - ПЕРЕХОД К ПРОВЕРКЕ СОСТОЯНИЙ КНОПОКCOUNTER, F; НЕТ - ИНКРЕМЕНТИРОВАНИЕ СЧЕТЧИКАINT_SOURCE; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
_BUTT; ПРОВЕРКА СОСТОЯНИЙ КНОПОК
; -FLAG_R, 0; РЕЖИМ УСТАНОВКИ ТЕМПЕРАТУРЫ ВКЛЮЧЕНSTART_TIME; НЕТ - ПЕРЕХОД К УСТАНОВКЕ ВРЕМЕНИ ВКЛЮЧЕНИЯ
PORTB, 6; НАЖАТА КНОПКА +1M6; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ - 1MAX_TL; ИНКРЕМЕНТИРОВАТЬ РЕГИСТР MAX_TL
MOVFMAX_TH, WMAX_THMAX_TH, FMAX_TH, F; ПРИБАВИТЬ К РЕГИСТРУ MAX_TH ФЛАГ ПЕРЕНОСА
STATUS, ZMAX_TL, WTEMP_MAXL; ЗНАЧЕНИЕ В MAX_TL ДОСТИГЛО TEMP_MAXL
BTFSSSTATUS, ZM6; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ - 1
BCFSTATUS, ZMAX_TH, WTEMP_MAXH; ЗНАЧЕНИЕ В MAX_TH ДОСТИГЛО TEMP_MAXH
BTFSSSTATUS, ZM6; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ - 1STATUS, ZMAX_TH; ДА - ОБНУЛИТЬ РЕГИСТРЫ MAX_TH И MAX_TL
CLRFMAX_TLCALL_BIN_DECPORTB, 7; НАЖАТА КНОПКА - 1
GOTOSTOP_TMR2; НЕТ - ПЕРЕХОД К ОСТАНОВКЕ TMR2MAX_TL; ДЕКРЕМЕНТИРОВАТЬ РЕГИСТР MAX_TLSTATUS, C; ЕСЛИ БЫЛ ЗАЕМMAX_TH, W; ДЕКРЕМЕНТИРОВАТЬ РЕГИСТР MAX_TH
BCFSTATUS, C
STATUS, Z
MOVFMAX_TL, F; ЗНАЧЕНИЕ В MAX_TL ДОСТИГЛО 0STATUS, ZSTOP_TMR2; НЕТ - ПЕРЕХОД К ОСТАНОВКЕ TMR2STATUS, ZMAX_TH, F; ЗНАЧЕНИЕ В MAX_TH ДОСТИГЛО 0STATUS, ZSTOP_TMR2; НЕТ - ПЕРЕХОД К ОСТАНОВКЕ TMR2
BCFSTATUS, ZTEMP_MAXLMAX_TLTEMP_MAXHMAX_TH
_BIN_DECMAX_TL, WTEMP_TLMAX_TH, WTEMP_TH
CALLBIN_DEC; ВЫЗОВ ПОДПРОГРАММЫ ДВОИЧНО-ДЕСЯТИЧНОЙ КОРРЕКЦИИ_TMR2T2CON, TMR2ON; ОСТАНОВКА ТАЙМЕРА TMR2INT_SOURCE; ВЕРНУТЬСЯ К ПОИСКУ ИСТОЧНИКОВ ПРЕРЫВАНИЙ
;-_TIME; УСТАНОВКА ВРЕМЕНИ ВКЛЮЧЕНИЯFLAG_R, 1; РЕЖИМ УСТАНОВКИ ВРЕМЕНИ ВКЛЮЧЕНИЯ ВКЛЮЧЕНSTOP_TIME; НЕТ - ПЕРЕХОД К УСТАНОВКЕ ВРЕМЕНИ ВЫКЛЮЧЕНИЯ
FLAG_R, 5; РЕЖИМ УСТАНОВКИ МИНУТ ВКЛЮЧЕНSET_HOUR; НЕТ - ПЕРЕХОД К УСТАНОВКЕ ЧАСОВ
PORTB, 6; НАЖАТА КНОПКА +1M7; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ - 1
;-
; СЧЕТЧИК ЕДИНИЦ МИНУТSTART_ML, F; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК МИНУТSTATUS, ZSTART_ML, W; СЧЕТЧИК ДОСЧИТАЛ ДО 100x0ASTATUS, ZSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮSTART_ML; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК МИНУТ
;-
; СЧЕТЧИК ДЕСЯТКОВ МИНУТSTART_MH, F; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК МИНУТSTATUS, ZSTART_MH, W; СЧЕТЧИК ДОСЧИТАЛ ДО 6
XORLW0x06STATUS, Z
GOTOSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮSTART_MH; ДА - ОЧИСТИТЬ СТАРШИЙ СЧЕТЧИК МИНУТSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮ
;-
PORTB, 7; НАЖАТА КНОПКА - 1STOP_TMR2_2; ПЕРЕХОД НА ПОДПРОГРАММУ ОСТАНОВКИ ТАЙМЕРА TMR2
;-
; СЧЕТЧИК ЕДИНИЦ МИНУТSTATUS, CSTART_ML, F; ДЕКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК МИНУТSTATUS, C; ПРОИЗОШЕЛ ЗАЕМSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮSTATUS, C0x09; ДА - ЗАГРУЗКА НАЧАЛЬНОГО ЗНАЧЕНИЯSTART_ML
;-
; СЧЕТЧИК ДЕСЯТКОВ МИНУТSTART_MH, F; ДЕКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК МИНУТSTATUS, C; ПРОИЗОШЕЛ ЗАЕМSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮSTATUS, C0x05; ДА - ЗАПИСАТЬ НАЧАЛЬНОЕ ЗНАЧЕНИЕSTART_MHSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮ
;-
FLAG_R, 4; РЕЖИМ УСТАНОВКИ ЧАСОВ ВКЛЮЧЕНSTOP_TMR2_2; ПЕРЕХОД НА ПОДПРОГРАММУ ОСТАНОВКИ ТАЙМЕРА TMR2
;-PORTB, 6; НАЖАТА КНОПКА +1M8; НЕТ - ПЕРЕХОД К ПРОВЕРКЕ НАЖАТИЯ КНОПКИ - 1
; СЧЕТЧИКИ ЧАСОВSTART_HL, F; ИНКРЕМЕНТИРОВАТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВSTATUS, ZSTART_HH, W; СТАРШИЙ СЧЕТЧИК ДОСЧИТАЛ ДО 20x02STATUS, ZM9; НЕТ - ПЕРЕХОД НА ПРОВЕРКУ МЛАДШЕГО СЧЕТЧИКА
BCFSTATUS, ZSTART_HL, W0x04STATUS, ZM9STATUS, ZSTART_HL; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВ
CLRFSTART_HHSET_REG_LCD; ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ТЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮSTART_HL, W0x0A; СЧЕТЧИК ДОСЧИТАЛ ДО 10STATUS, ZSET_REG_LCD; НЕТ - ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮSTART_HL; ДА - ОЧИСТИТЬ МЛАДШИЙ СЧЕТЧИК ЧАСОВSTART_HH; ИНКРЕМЕНТИРОВАТЬ СТАРШИЙ СЧЕТЧИК ЧАСОВSET_REG_LCD; ПЕРЕХОД НА ПОДПРОГРАММУ УПРАВЛЕНИЯ ВЫВОДОМ
; ВРЕМЕНИ ВКЛЮЧЕНИЯ НА ИНДИКАЦИЮ
;-PORTB, 6; НАЖАТА КНОПКА - 1STOP_TMR2_2; ПЕРЕХОД НА ПОДПРОГРАММУ ОСТАНОВКИ ТАЙМЕРА TMR2
; СЧЕТЧИ