ify"> MOVF TH, 0; Занесення значення температури в екранний буфер
MOVWF NumLNumHConvertOnes, 0DS7SEGRAZR1Tens, 0DS7SEGRAZR2
BTFSC TEMP_READH, 7; Включення знака мінус при негативній температуреRAZR2, 6FLAGS, 6; Включити висновок десяткового дробу
; Процедура зчитує дані про виміряної температурі з DS18В20
READ_T CALL INIT0xCC; Skip ROMO_BYTEOUT_BYTE0xBE; Read ScratchpadO_BYTEOUT_BYTE
; Прийом даннихIN_BYTETEMP_READL; 0IN_BYTETEMP_READH; 1IN_BYTE; 2IN_BYTE; 3IN_BYTE; 4IN_BYTE; 5IN_BYTE; 6IN_BYTE; 7IN_BYTE; 8
; Підрахунок і порівняння контрольної суми пропущено0xFF
; Процедура видає команду на старт вимірювання температури для датчика DS18В20
START_DSINIT0xCC; Skip ROMO_BYTEOUT_BYTE0x44; Convert TO_BYTEOUT_BYTE0xFF
; The following are common 1-Wire routines used in all applications: CALL PIN_HIPIN_LO.50; 500 us delayDELAY_10USECPIN_HI.50; 500 usec delayDELAY_10USEC_BYTE:; returns byte in W.8_NI_BYTE_BYTE_1: PIN_LO; momentary low on DATA_PINPIN_HIPORTB, W; 7 usecs later, fetch from DATA_PINTEMPTEMP, DATA_PINSTATUS, C; its a zeroTEMP, DATA_PINSTATUS, C; its a oneI_BYTE, F.6; now delay 60 usecsDELAY_10USEC_N, FIN_BYTE_1I_BYTE, 0; return the result in W_BYTE: .8 _N_BYTE_1: O_BYTE, FSTATUS, COUT_0OUT_1_BYTE_2: _N, FOUT_BYTE_1_0: CALL PIN_LO; bring DATA_PIN low.6; for 60 usecsDELAY_10USECPIN_HIOUT_BYTE_2_1: CALL PIN_LO; momentary lowPIN_HI.6DELAY_10USECOUT_BYTE_2_HI: BCF INTCON, GIESTATUS, RP0TRISB, DATA_PIN; high impedanceSTATUS, RP0INTCON, GIE_LO: BCF INTCON, GIEPORTB, DATA_PINSTATUS, RP0TRISB, DATA_PIN; low impedance zeroSTATUS, RP0INTCON, GIE_LONG.250; 250 msec delayLOOP1_N_MS: MOVLW.110; close to 1.0 msec delay when set to.110LOOP2NOPLOOP2, F; decrement and leave result in LOOP2INNER; skip next statement if zeroLOOP1, FOUTTER_10USEC:; provides a delay equal to W * 10 usecsLOOP1_100USEC_1: LOOP1, F
GOTO DELAY_100USEC_1
; ***************************************** **************
; Процедура зберігає значення змінної T_ALARM
; в незалежній пам'яті даннихMOVLW.50
MOVWF EEADRT_ALARM, 0L21MOVWF EEDATA; Підпрограма записи EEROM
BCF INTCON, GIE; Заборона всіх прериванійSTATUS, RP0; Встановлюємо сторінку пам'яті 1EECON1, WREN; Дозволяємо запис в EEROM0x55; Даємо набір команд для запису
MOVWF EECON20xAAEECON2
BSF EECON1, WRNOP; Очікуємо завершення запісіEECON1, WRL20EECON1, WREN; Забороняємо запис в EEROMSTATUS, RP0; Встановлюємо сторінку пам'яті 0INTCON, GIE; Дозвіл всіх прериванійEEADR, 1
; Процедура завантажує значення змінної T_ALARM
; з незалежної пам'яті даннихMOVLW.50