VLW 0xFF; З'являємося тут за умови негативної уставки
MOVWF NumLT_ALARM, 0NumL, 1
L73 BTFSC TEMP_READH, 7; Перевіряємо лічений код з датчика температуриL74; Температура нижче нуляTH, 0; Температура вище нуля і знову додамо 54, ноNumH, не до лічених з датчика даними, .54; а до цілої частини обчисленої температуриNumH, 1L76; ПереходMOVF TH, 0; З'являємося тут за умови негативної температуриNumHPA, 3; Перевіримо, чи включений нагрівач! L2E; включений, значить сходимо, додамо гістерезис і вернемсяNumH, 0; Ні не включений значить порівнюємо, NumL, 1NumL, 0; віднімаючи з уставки температуру
BTFSC STATUS, CL2A; Перехід
L2B BSF PA, 3; якщо виміряна температура нижче-включення нагревателяPA, 0PORTAL31; Вихід з подпрограммиA BTFSC T_ALARM, 7; Перевіряємо ще раз уставку, на випадок позитивної температури, ноL2C; негативною уставки, щоб не було проблем при переході через 0L2B; відповідно відключаємо або включаємо нагревательC BCF PA, 3; якщо виміряна температура вище-вимикання нагревателяPA, 0PORTAL31; Вихід з подпрограммиBTFSC PA, 3; З'являємося тут за умови позитивної температуриL2D; Перевіримо, чи включений нагрівач? Так, збігаємо і додамо; гістерезісNumH, 0; Ні не включений, значить порівнюємо, NumL, 1NumL, 0STATUS, C; віднімаючи з уставки температуру
GOTO L88PA, 3PA, 0PORTA L31
L2D MOVF DT_ALARM, 0; Додамо 2 град. гістерезису, щоб вимкнути нагрівач
ADDWF NumL, 1; на 2 град.више
RETURN
L2E MOVF DT_ALARM, 0; Віднімемо 2 град. гістерезису, щоб вимкнути нагревательNumL, 1; на 2 град.више, при негативній температурі.
RETURNBSF PA, 3PA, 0
MOVWF PORTA
; Запис отриманого значення температури в екранний буферBTFSS TEMP_READH, 7L36; Температура вище нуля
MOVF TH, 0.19STATUS, C
GOTO L36; Температура вище мінус 19 градусів
; при температурі менше-19.9TH, 0; Занесення значення температури в екранний буфер
MOVWF NumLNumHConvertOnes, 0DS7SEGRAZR0Tens, 0DS7SEGRAZR10x0ADS7SEGRAZR2
BCF RAZR2, 6; Включення знака мінус при негативній температуреFLAGS, 6; Відключити висновок десяткового дробу
RETURNMOVF TH, 0.99
BTFSC STATUS, CL37; Температура вище плюс 99 градусовTH, 0; Занесення значення температури в екранний буфер
MOVWF NumLNumHConvertOnes, 0DS7SEGRAZR0Tens, 0DS7SEGRAZR1Hund, 0DS7SEGRAZR2
BCF FLAGS, 6; Відключити висновок десяткового дробу
; при температурі від -19.9 до 99.9MOVF TL, 0; Занесення значення температури в екранний буфер
MOVWF NumLNumHConvertOnes, 0DS7SEGRAZR0