Смекни!
smekni.com

Разработка микропроцессорной системы цифрового термометра на базе микроконтроллера (стр. 9 из 9)

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

;========================================