MOVFWTEMP;ВРЕМЕННЫЙ
MOVWFMECE;В РЕГИСТР ИНДИКАЦИИ ЕДИНИЦ МЕСЯЦА.
RETURN;
ME1ME
MOVLW.1;1 ЯНВАРЯ.
MOVWFMEC;01-01.
MOVWFMECE;
CLRFMECD;
RETURN;
;=======================================
; 41. ПЕРЕКОДИРОВКА ИЗ 2-ГО В 2_10.
;=======================================
BIDE;ПЕРЕКОДИРОВКА ДЕСЯТКОВ
CLRFCOUN;ОБНУЛЯЕМ СЧЕТЧИК.
ADDLW-.10;ВЫЧТЕМ 10.
BTFSSSTATUS,0;ЕСЛИ ЕСТЬ ПЕРЕХОД ЧЕРЕЗ НОЛЬ,
GOTO$+4;ТО ЗАВЕРШАЕМ ПЕРЕКОДИРОВКУ.
MOVWFTEMP;ИНАЧЕ ПЕРЕПИШЕМ НОВОЕ ЗНАЧЕНИЕ ВО ВРЕМЕННЫЙ.
INCFCOUN,1;УВЕЛИЧИМ СЧЕТЧИК.
GOTO$-5;ПОВТОРИМ ВЫЧИТАНИЕ.
MOVFWCOUN;ЗНАЧЕНИЕ СЧЕТЧИКА (РАВНО ЧИСЛУ ДЕСЯТКОВ) ПЕРЕПИШЕМ В РАБОЧИЙ РЕГИСТР.
RETURN;ВЕРНЕМСЯ.
;================================
; 42. ЗАПИСЬ ЗНАЧЕНИЙ В ПАМЯТЬ.
;================================
SAPIS
CALLPERZAP;ПЕРЕПИШЕМ ТЕКУЩИЕ ЗНАЧЕНИЯ В РЕГИСТРЫ ЗАПИСИ.
BTFSCFLAG,0;ВВОДИМ ЗНАК В РЕГИСТРЫ.
BSFLSBZ1X,7;-
BTFSCFLAG,1;
BSFLSBZ1N,7;-
BTFSCFLAG2,3;
BSFLSBZ2X,7;-
BTFSCFLAG2,4;
BSFLSBZ2N,7;-
MOVLWHOUZ1X;ПЕРВЫЙ АДРЕС ЗАПИСЫВАЕМОГО РЕГИСТРА
MOVWFFSR;В РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.
MOVFWCOUZ;НАЧАЛЬНЫЙ АДРЕС ЗАПИСИ В РАБОЧИЙ РЕГИСТР.
BSFSTATUS,5;БАНК 1.
MOVWFEEADR;ИЗ РАБОЧЕГО В АДРЕС ЗАПИСИ.
BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.
CALLZAPIS;НА ЗАПИСЬ.
INCFEEADR,1;УВЕЛИЧИМ АДРЕС.
INCFFSR,1;ВЫБЕРЕМ СЛЕДУЮЩИЙ РЕГИСТР.
BTFSSFSR,7;ЕСЛИ РЕГИСТР НЕ ПОСЛЕДНИЙ,
GOTO$-4;ПОВТОРИМ ЗАПИСЬ.
BCFSTATUS,5;БАНК 0.
BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.
MOVLW.16;УСТАНОВИМ НАЧАЛЬНЫЙ АДРЕС
ADDWFCOUZ,1;СЛЕДУЮЩЕЙ ЗАПИСИ.
MOVLW.128;ЕСЛИ ЭТО ПОСЛЕДНИЙ АДРЕС,
SUBWFCOUZ,0;
SKPNC;
CLRFCOUZ;ТО НАЧНЕМ С НУЛЯ.
RETURN;ВОЗВРАТ.
ZAPIS
MOVFWINDF;ПЕРЕПИШЕМ ЗАПИСЫВАЕМОЕ ЗНАЧЕНИЕ
MOVWFEEDATA;В РЕГИСТР ДАННЫХ.
BSF EECON1,WREN;РАЗРЕШЕНИЕ ЗАПИСИ.
MOVLW 55H;ОБЯЗАТЕЛЬНАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ
MOVWF EECON2;/
MOVLW 0AAH;/
MOVWF EECON2;/
BSF EECON1,WR;ПРИ ЗАПИСИ ВО ФЛЕШ ПЗУ.
BTFSC EECON1,WR;ПОКА НЕ БУДЕТ ОКОНЧАНИЯ ЗАПИСИ
GOTO $-1;ХОДИМ ПО КРУГУ.
BCF EECON1,WREN;ЗАПРЕТ ЗАПИСИ.
RETURN;ВОЗВРАТ.
;=========================
; 43. ВЫБОРКА ИЗ ПАМЯТИ.
;=========================
CXUTKA
MOVLWHOUZ1X;ПЕРВЫЙ АДРЕС ЗАПИСЫВАЕМОГО РЕГИСТРА
MOVWFFSR;В РЕГИСТР КОСВЕННОЙ АДРЕСАЦИИ.
MOVFWCOUE;АДРЕС ЗАПИСИ В РАБОЧИЙ РЕГИСТР.
BSFSTATUS,5;БАНК 1.
MOVWFEEADR;ИЗ РАБОЧЕГО В АДРЕС ЗАПИСИ.
BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.
CALLAKT;НА СЧИТЫВАНИЕ.
MOVWFINDF;ПЕРЕПИШЕМ В РЕГИСТР.
INCFEEADR,1;УВЕЛИЧИМ АДРЕС.
INCFFSR,1;ВЫБЕРЕМ СЛЕДУЮЩИЙ РЕГИСТР.
BTFSSFSR,7;ЕСЛИ РЕГИСТР НЕ ПОСЛЕДНИЙ,
GOTO$-5;ПОВТОРИМ СЧИТЫВАНИЕ.
BCFSTATUS,5;БАНК 0.
BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT1X;
BTFSSLSBZ1X,7;ПО 7 РАЗРЯДУ УСТАНОВИМ ЗНАК.
GOTO$+4;
MOVLW.253;МИНУС.
MOVWFSOT1X;
BCFLSBZ1X,7;СОТРЕМ ЗНАК.
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT1N;
BTFSSLSBZ1N,7;
GOTO$+4;
MOVLW.253;МИНУС.
MOVWFSOT1N;
BCFLSBZ1N,7;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT2X;
BTFSSLSBZ2X,7;
GOTO$+4;
MOVLW.253;МИНУС.
MOVWFSOT2X;
BCFLSBZ2X,7;
MOVLW.251;ПО УМОЛЧАНИЮ ЗНАК ПЛЮС.
MOVWFSOT2N;
BTFSSLSBZ2N,7;
GOTO$+4;
MOVLW.253;МИНУС.
MOVWFSOT2N;
BCFLSBZ2N,7;
BCFFLAG2,5;СБРОС ФЛАГА УСТАНОВКИ МИНУС.
RETURN
AKT
BSFEECON1,RD;ЧТЕНИЕ.
BTFSCEECON1,RD;
GOTO$-1;
MOVLW.255;ЕСЛИ ПАМЯТЬ НЕ ЗАПОЛНЕНА,
SUBWFEEDATA,0;ЗАПИШЕМ -0.
BTFSCSTATUS,Z;
CLRFEEDATA;ОБНУЛИМ, Т.К. 255 НЕКОРРЕКТНО.
MOVFWEEDATA;ПЕРЕПИШЕМ В РАБОЧИЙ РЕГИСТР.
RETURN;ВОЗВРАТ.
;========================================
; 44. РАСПРЕДЕЛИТЕЛЬ.
;========================================
MYLTIK
CALLKHOP;ПРОВЕРИМ КНОПКИ.
BTFSSFLAG2,0;ЕСЛИ ИНДИКАЦИЯ ТЕКУЩАЯ,
GOTOCMOTP;ТО ПРОПУСКАЕМ УСТАНОВКУ.
CALLJEKIND;ПРОИНДИЦИРУЕМ.
BTFSSCEK,0;ЖДЕМ ЧЕТНОЙ СЕКУНДЫ.
GOTO$-1;
CALLINIDS1;ПРОВЕРИМ ДАТЧИК.
CALLKHOP;ПРОВЕРИМ КНОПКИ.
BTFSSFLAG2,0;ЕСЛИ ИНДИКАЦИЯ ТЕКУЩАЯ,
GOTOCMOTP;ТО ПРОПУСКАЕМ УСТАНОВКУ.
CALLJEKIND;ПРОИНДИЦИРУЕМ.
BTFSCCEK,0;ЖДЕМ НЕЧЕТНОЙ СЕКУНДЫ.
GOTO$-1;
CALLINIDS2;ТО ПРОВЕРИМ ВТОРОЙ ДАТЧИК.
GOTOMYLTIK;ВСЕ СНАЧАЛА.
CMOTP
BTFSCFLAG2,0;ЕСЛИ ИНДИКАЦИЯ ТЕКУЩАЯ,
GOTOMYLTIK;ТО ИДЕМ ИЗМЕРЯТЬ ТЕМПЕРАТУРУ.
BTFSCFLAG2,5;ПРИ УСТАНОВКЕ НЕТ ВЫБОРКИ ИЗ ПЗУ.
CALLCXUTKA;ВЫБОРКА ИЗ ПЗУ.
BTFSCFLAG1,2;ЕСЛИ ЗАПРЕТ ИНДИКАЦИИ, ТО ПРОПУСТИМ.
GOTO$+4;
BTFSSFLAG,7;КАЖДЫЕ 0,5 СЕК.
GOTO$-1
CALLJEKIND;ВЫВОДИМ НА ИНДИКАЦИЮ.
BTFSCFLAG,7;КАЖДЫЕ 0,5 СЕК.
GOTO$-1
CALLKHOP;ПРОВЕРИМ КНОПКИ.
GOTOCMOTP;
;========================================
END
;========================================