GRAZR2T_ALARM, 7
BCF RAZR2, 6; Включення знака мінус при негативній температуреL10BCF FLAGS, 2; Відображення температури
BTFSC FLAGS, 3CONV_TFLAGS, 3
BTFSS FLAGS, 5L10
; Передається управління кожну секунду
BCF FLAGS, 5FLAGS, 3READ_TSTART_DS0xFFSTATUS, ZL10B'00000001'RAZR0RAZR1 RAZR2
BCF FLAGS, 3L10; Повертаємося на початок циклу
; ***************************************** ***************
; Процедура перетворення десяткового цифри з WREG в код 7-ми сегментного індикатора
DS7SEG ADDWF PCL, 1B'01000000 '; 0B'01111001'; 1B'00100100 '; 2B'00110000'; 3B'00011001 '; 4B'00010010'; 5B'00000010 '; 6B'01111000 '; 7B'00000000'; 8B'00010000 '; 9B'01111111'; ПробелB'00111111 '; Мінус
; ***************************************** ***************
; Процедура переведення числа формату HEX16 (змінні NumL, NumH) у формат BSD
; (змінні Thou, Hund, Tens, Ones) swapf NumH, wB'11110000'ThouThou, 10xE2Hund0x32OnesNumH, 00x0FHund, 1Hund, 1Ones, 10xE9TensTens, 1Tens, 1NumL, 00x0FTens, 1Ones, 1Tens, 1Ones, 1Ones, 1Ones, 1NumL, 00x0FOnes, 1Thou, 10x0A: addwf Ones, 1Tens, 13, 0Lb1: addwf Tens, 1Hund, 13, 0Lb2: addwf Hund, 1Thou, 13, 0Lb3: addwf Thou, 13, 0Lb4Thou; Видалення незначущих нулейFSR3IMOVF F0 , 00x0FSTATUS, Z; Розряд дорівнює 00x0AF0FSR IL54
; Процедура обчислення температури з точністю до 0.1 за даними отриманими від DS18В20
; Вхідні параметри: TEMP_READH, TEMP_READL, результат поміщається в екранний буфер
CONV_T MOVF TEMP_READL, 0NumLTEMP_READH, 0NumHTEMP_READH, 7; Обчислення цілої частини
GOTO L30; Температура нижче нуля.4; Виділяємо цілу частину значення температури діленням на.16d
MOVWF ABCF STATUS, CNumH, 1NumL, 1A, 1L61NumL, 0TH
MOVF TEMP_READL, 0; Обчислюємо десяткову частьB'00001111'L50MOVLW .4; Виділяємо цілу частину значення температури діленням на.16d
MOVWF ABCF STATUS, CNumH, 1NumL, 1A, 1L620xFFTHNumL, 0TH, 10xFFNumHTEMP_READL, 0; Обчислюємо десяткову частьB'00001111'NumH, 0B'00001111'MOVWF NumLNumH.6AMOVF NumL, 0NumH, 1A, 1L63NumH, 0NumLNumHConvert0x0ATens, 0STATUS, ZTens.5; ОкругленіеOnes, 0STATUS, CTens, 1
MOVF Tens, 0TL
; Порівняння температурT_ALARM, 7; Перевіряємо уставкуL72; Уставка нижче нуля, значить переходT_ALARM, 0; Уставка вище нуляNumL; Додамо до NumL значення уставки і.54; додамо 54, щоб не мучитися при сравненііNumL, 1; позитивної температури і негативною уставки (або навпаки) L73; ПереходMO...