---------------
; ВИЗНАЧЕННЯ ДЖЕРЕЛА ПЕРЕРИВАННЯ
INT_SOURCE STATUS ; ОЧИСТИТИ РЕГІСТР STATUS
BTFSC PIR1, CCP1IF ; ЯКЩО ПЕРЕРИВАННЯ ВІД МОДУЛЯ CCP1 CLOCK ; ПЕРЕХІД НА підпрограми ГОДИН
PIR1, TMR2IF ; ЯКЩО ПЕРЕРИВАННЯ ВІД ТАЙМЕРА TMR2 INT_TMR2 ; ПЕРЕХІД НА підпрограми обробника переривання ВІД
; TMR2
INTCON, INTF ; якщо переривання за ВХОДУ INT INT_INT ; ПЕРЕХІД НА підпрограми обробника переривання ПЗ
; INT
INTCON, RBIF ; якщо переривання за ВХОДАМ INT_RB ; ПЕРЕХІД НА підпрограми обробника переривання ПЗ
; ВХОДАМ PIR1, RCIF ; ЯКЩО ПЕРЕРИВАННЯ ВІД ПРИЙМАЧА USART < span align = "justify"> SERIAL_PRT ; ПЕРЕХІД НА підпрограми вживання/ПЕРЕДАЧІ
; ДАНИХ ЧЕРЕЗ USART END_INT ; ІНАКШЕ ПЕРЕХІД НА підпрограми ВІДНОВЛЕННЯ
; КОНТЕКСТУ
; ----------------------------------------- ------------------------
2.10.3 Підпрограма годин
Ця підпрограма здійснює рахунок і виведення на індикацію (у разі включення режиму відображення поточного часу) поточного часу. Крім того підпрограма перевіряє збіг поточного часу з часом початку і підтримки температури. У разі їх збігу підпрограма включає або вимикає режим підтримки температури. Для рахунку використовується 6 регістрів-лічильників:
SEC_L - лічильник одиниць секунд;
SEC_H - лічильник десятків секунд;
MIN_L - лічильник одиниць хвилин;
MIN_H - лічильник десятків хвилин;
HOUR_L - лічильник одиниць годин;
HOUR_H - лічильник десятків годин.
Лічильники SEC_L, MIN_L, HOUR_L инкрементируется від 0х00 до 0х0А. При досягненні 0х0А лічильники скидаються. Лічильники SEC_H і MIN_H инкрементируется від 0х00 до 0х06. При досягненні 0х06 лічильники скидаються. Лічильник HOUR_H инкрементируется від 0х00 до 0х02. Лічильник скидається, коли в ньому записано значення 0х02, а лічильник HOUR_L дорахував до 0х04. p align="justify"> Лістинг підпрограми годин наведено нижче.
<...