Микропроцессорныая система. Автоматический чайник

Дипломная работа - Компьютеры, программирование

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

?ЕКУЩЕГО ВРЕМЕНИ НА ИНДИКАЦИЮ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

 

; СЧЕТЧИ