CALLJEKOM;
CALLSTROB;
GOTOMYLTIK;НАРАСПРЕДЕЛИТЕЛЬ.
;=========================================
; 33. ФОРМИРОВАНИЕ СТРОБИРУЮЩЕГО ИМПУЛЬСА.
;=========================================
STROB
BSF PORTB,E ;ВКЛЮЧАЕМ СТРОБ-ИМПУЛЬС.
NOP
BCF PORTB,E ;ВЫКЛЮЧАЕМ СТРОБ.
RETURN ;ВЕРНЕМСЯ.
;===============================================
; 34. ПЕРЕДАЧА КОМАНДЫ В ЖКИ.
;===============================================
JEKOM
MOVWF TEMP ;ПЕРЕПИШЕМ ЗНАЧЕНИЕ ВО ВРЕМЕННЫЙ РЕГИСТР.
ANDLW B'11110000';ЗАМАСКИРУЕМ МЛАДШИЕ РАЗРЯДЫ ПОД НОЛЬ.
MOVWF PORTB ;ОСТАЛЬНЫЕ РАЗРЯДЫ ПЕРЕПИШЕМ В ПОРТ "В".
CALL STROB ;ПРОСТРОБИРУЕМ.
CALL PAUSA ;ПАУЗА.
MOVFW TEMP
SWAPF TEMP,W ;ПОМЕНЯЕМ МЕСТАМИ ПОЛУБАЙТЫ.
ANDLW B'11110000';ЗАМАСКИРУЕМ СТАРШИЕ РАЗРЯДЫ ПОД НОЛЬ.
MOVWF PORTB ;ПЕРЕПИШЕМ В ПОРТ "В".
CALL STROB ;ПРОСТРОБИРУЕМ.
PAUSA
MOVLW .255;1 МС. ПАУЗА ДЛЯ ЗАПИСИ КОМАНДЫ.
ADDLW -1
BTFSS STATUS,2
GOTO $-2
RETURN
;=====================================
; 35. ЗАПИСЬДАННЫХВЖКИ.
;=====================================
JEDAT
MOVWF TEMP;ПЕРЕПИШЕМ ЗНАЧЕНИЕ ВО ВРЕМЕННЫЙ РЕГИСТР.
ANDLW B'11110000';ЗАМАСКИРУЕМ МЛАДШИЕ РАЗРЯДЫ ПОД НОЛЬ.
ADDLW 30;ПЕРЕВОД В КОД ASCII, ТОЛЬКО ДЛЯ ЦИФР!
MOVWF PORTB;ОСТАЛЬНЫЕ РАЗРЯДЫ ПЕРЕПИШЕМ В ПОРТ "В".
BSF PORTB,RS;УСТАНОВИМ R/S НА РАЗРЕШЕНИЕ ЗАПИСИ ДАННЫХ.
CALL STROB;ПРОСТРОБИРУЕМ.
CALL PAUS;ПАУЗА ДЛЯ ОСВОБОЖДЕНИЯ ЖКИ ОТ ЦИКЛА ЗАПИСИ.
MOVFW TEMP;
SWAPF TEMP,0;ПОМЕНЯЕМ МЕСТАМИ ПОЛУБАЙТЫ.
ANDLW B'11110000';ЗАМАСКИРУЕМ СТАРШИЕ РАЗРЯДЫ ПОД НОЛЬ.
MOVWF PORTB;ОСТАЛЬНЫЕ РАЗРЯДЫ ПЕРЕПИШЕМ В ПОРТ "В".
BSF PORTB,RS;УСТАНОВИМ R/S НА РАЗРЕШЕНИЕ ЗАПИСИ ДАННЫХ.
CALL STROB;ПРОСТРОБИРУЕМ.
PAUS
MOVLW .10;40 МКС. ПАУЗА ДЛЯ ЗАПИСИ ДАННЫХ.
ADDLW -1
BTFSS STATUS,2
GOTO $-2
RETURN
;========================================
; 36. ПЕРЕЗАПИСЬ В РЕГИСТРЫ ИНДИКАЦИИ.
;========================================
CTP1
BTFSCFLAG2,0;
GOTOTEK1;ТЕКУЩАЯ ИНДИКАЦИЯ.
BTFSCFLAG2,1;
GOTOINDYC1;УСТАНОВКА ЧАСОВ И ДНЕЙ.
GOTOCMOTP1;ПРОСМОТР.
CTP2
BTFSCFLAG2,0;
GOTOTEK2;ТЕКУЩАЯ ИНДИКАЦИЯ.
BTFSCFLAG2,1;
GOTOINDYC2;УСТАНОВКА ЧАСОВ И ДНЕЙ.
GOTOCMOTP2;ПРОСМОТР.
TEK1
MOVFWDHUDI;ТЕКУЩАЯ ИНДИКАЦИЯ 1 СТРОКИ, ДЕСЯТКИ ДНЕЙ.
MOVWFR1;
MOVFWDHUEI;ЕДИНИЦЫ ДНЕЙ.
MOVWFR2;
MOVLW.240;ПУСТО.
MOVWFR3;
MOVWFR9;
MOVFWHOUH;ДЕСЯТКИ ЧАСОВ.
MOVWFR4;
MOVFWHOUL;ЕДИНИЦЫ ЧАСОВ.
MOVWFR5;
MOVLW.240;ПУСТО.
BTFSCCEK,0;ДВОЕТОЧИЕ ВКЛЮЧАЕТСЯ ЧЕРЕЗ 1 СЕКУНДУ.
MOVLW.10;ДВОЕТОЧИЕ.
MOVWFR6;
MOVFWMINH;ДЕСЯТКИ МИНУТ.
MOVWFR7;
MOVFWMINL;ЕДИНИЦЫ МИНУТ.
MOVWFR8;
MOVFWSOT1;ЗНАК.
MOVWFR10;
MOVFWDES1;ДЕСЯТКИ ТЕМПЕРАТУРЫ 1.
MOVWFR11;
MOVFWEDI1;ЕДИНИЦЫ ТЕМПЕРАТУРЫ 1.
MOVWFR12;
MOVLW.252;ЗАПЯТАЯ 1.
MOVWFR13;
MOVFWDST1;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ 1.
MOVWFR14;
MOVLW.14;>.
MOVWFR15;
MOVLW.1;1.
MOVWFR16;
RETURN
TEK2
MOVFWMECDI;ТЕКУЩАЯ ИНДИКАЦИЯ 2 СТРОКИ, ДЕСЯТКИ МЕСЯЦА.
MOVWFR1;
MOVFWMECEI;ЕДИНИЦЫ МЕСЯЦА.
MOVWFR2;
MOVLW.240;ПУСТО.
MOVWFR3;
MOVWFR4;
MOVWFR5;
MOVWFR6;
MOVWFR7;
MOVWFR8;
MOVWFR9;
MOVFWSOT2;ЗНАК 2.
MOVWFR10;
MOVFWDES2;ДЕСЯТКИ ТЕМПЕРАТУРЫ 2.
MOVWFR11;
MOVFWEDI2;ЕДИНИЦЫ ТЕМПЕРАТУРЫ 2.
MOVWFR12;
MOVLW.252;ЗАПЯТАЯ 2.
MOVWFR13;
MOVFWDST2;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ 2.
MOVWFR14;
MOVLW.14;>.
MOVWFR15;
MOVLW.2;2.
MOVWFR16;
RETURN
INDYC1
BTFSSPORTA,HOL;ЕСЛИ НАЖАТА КНОПКА "СБРОС",
CALLYC00;ТО ОБНУЛИМ СЕКУНДЫ И МИНУТЫ.
MOVLW.123;УСТАНОВКА ЧАСОВ И ДАТЫ 1 СТРОКА.
MOVWFR1;Ч.
MOVLW.17;А.
MOVWFR2;
MOVLW.19;С.
MOVWFR3;
MOVLW.126;Ы.
MOVWFR4;
MOVLW.240;ПУСТО.
MOVWFR5;
MOVWFR11;
MOVWFR12;
MOVWFR13;
MOVWFR14;
MOVWFR15;
MOVWFR16;
MOVFWHOUH;ТЕКУЩИЕ ЗНАЧЕНИЯ: ДЕСЯТКИ ЧАСОВ,
MOVWFR6;
MOVFWHOUL;ЕДИНИЦЫ ЧАСОВ.
MOVWFR7;
MOVLW.10;ДВОЕТОЧИЕ.
MOVWFR8;
MOVFWMINH;ДЕСЯТКИ МИНУТ.
MOVWFR9;
MOVFWMINL;ЕДИНИЦЫ МИНУТ.
MOVWFR10;
RETURN
INDYC2
MOVLW.176;Д.
MOVWFR1;
MOVLW.17;А.
MOVWFR2;
MOVLW.36;Т.
MOVWFR3;
MOVLW.17;А.
MOVWFR4;
MOVLW.240;ПУСТО.
MOVWFR5;
MOVWFR11;
MOVWFR12;
MOVWFR13;
MOVWFR14;
MOVWFR15;
MOVWFR16;
MOVFWDHUDI;ДЕСЯТКИДНЕЙ.
MOVWFR6;
MOVFWDHUEI;ЕДИНИЦЫДНЕЙ.
MOVWFR7;
MOVLW.253;ПРОЧЕРК.
MOVWFR8;
MOVFWMECDI;ДЕСЯТКИ МЕСЯЦА.
MOVWFR9;
MOVFWMECEI;ЕДИНИЦЫ МЕСЯЦА.
MOVWFR10;
RETURN
CMOTP1
MOVFWDHUDI;ЕСЛИ ПРОСМОТР
ADDWFDHUEI,0;СЕГОДНЯШНЕЙ ДАТЫ,
SUBWFDHU,0;ТО РЕГИСТРЫ ИНДИКАЦИИ НЕ МЕНЯЕМ.
SKPC;
GOTO$+5;
MOVFWMECDI;
ADDWFMECEI,0;
SUBWFMEC,0;
SKPNC;
CALLBDINZ1;ИНАЧЕ УСТАНОВИМ СЧИТАННЫЕ ЗНАЧЕНИЯ 1 СТРОКИ.
MOVFWDHUDI;ДЕСЯТКИ ДНЕЙ.
MOVWFR1;
MOVFWDHUEI;ЕДИНИЦЫ ДНЕЙ.
MOVWFR2;
MOVLW.14;>.
MOVWFR3;ПО УМОЛЧАНИЮ
MOVLW.1;1.
BTFSCFLAG1,1;ЕСЛИ ФЛАГ УСТАНОВЛЕН,
MOVLW.2;ТО - 2.
MOVWFR4;
MOVLW.240;ПУСТО.
MOVWFR5;
MOVWFR11;
MOVLW.253;ПРОЧЕРК.
MOVWFR8;
MOVFWDES1;ДЕСЯТКИ ТЕМПЕРАТУРЫ.
MOVWFR13;
MOVFWEDI1;ЕДИНИЦЫ ТЕМПЕРАТУРЫ.
MOVWFR14;
MOVLW.252;ЗАПЯТАЯ 1.
MOVWFR15;
MOVFWDST1;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ.
MOVWFR16;
RETURN
CMOTP2
MOVFWDHUDI;ЕСЛИ ПРОСМОТР
ADDWFDHUEI,0;СЕГОДНЯШНЕЙ ДАТЫ,
SUBWFDHU,0;ТО РЕГИСТРЫ ИНДИКАЦИИ НЕ МЕНЯЕМ.
SKPC;
GOTO$+5;
MOVFWMECDI;
ADDWFMECEI,0;
SUBWFMEC,0;
SKPNC;
CALLBDIN12;ИНАЧЕ УСТАНОВИМ СЧИТАННЫЕ ЗНАЧЕНИЯ 2 СТРОКИ.
MOVFWMECDI;ДЕСЯТКИ МЕСЯЦА.
MOVWFR1;
MOVFWMECEI;ЕДИНИЦЫ МЕСЯЦА.
MOVWFR2;
MOVLW.240;ПУСТО.
MOVWFR3;
MOVWFR4;
MOVWFR5;
MOVWFR11;
MOVLW.253;ПРОЧЕРК.
MOVWFR8;
MOVFWDES2;ДЕСЯТКИ ТЕМПЕРАТУРЫ 2.
MOVWFR13;
MOVFWEDI2;ЕДИНИЦЫ ТЕМПЕРАТУРЫ 2.
MOVWFR14;
MOVLW.252;ЗАПЯТАЯ 2.
MOVWFR15;
MOVFWDST2;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ 2.
MOVWFR16;
RETURN
;======================================================
; 37. ВЫВОД ЗНАЧЕНИЙ РЕГИСТРОВ НА ИНДИКАЦИЮ.
;======================================================
JEKIND
BSFSTATUS,5;ПЕРЕХОДИМ В БАНК 1.
BCFTRISB^80H,YCMI;НА ВЫХОД.
BCFTRISB^80H,YCPL;НА ВЫХОД.
BCFSTATUS,5;ПЕРЕХОДИМ В БАНК 0.
BTFSSFLAG1,0;ЕСЛИ ТЕКУЩАЯ ИНДИКАЦИЯ,
GOTO$+3;ТО ПРОПУСКАЕМ ИНДИКАЦИЮ КУРСОРА.
BTFSSFLAG,6;ЕСЛИ ИНДИКАЦИЯ КУРСОРА ВЫПОЛНЕНА, ТО ПРОПУСКАЕМ ЕЕ.
GOTO JEKYC;ПРОИНДИЦИРУЕМ КУРСОР.
MOVLW 02;ВОЗВРАТ КУРСОРА В ИСХОДНОЕ СОСТОЯНИЕ.
CALL JEKOM;ЗАПИШЕМ КОМАНДУ.
MOVLW B'10000000';КУРСОР НА 0 ПОЗИЦИЮ ПЕРВОЙ СТРОКИ.
CALL JEKOM;ЗАПИШЕМ КОМАНДУ.
CALLCTP1;ПЕРЕПИШЕМ В РЕГИСТРЫ ИНДИКАЦИИ 1 СТРОКУ.
CALLJEKCTP;ЗАПИШЕМ В ИНДИКАТОР 1 СТРОКУ.
MOVLW B'11000000';ВТОРАЯ СТРОКА. 0x0C0
CALL JEKOM;ЗАПИШЕМ КОМАНДУ.
CALLCTP2;ПЕРЕПИШЕМ В РЕГИСТРЫ ИНДИКАЦИИ 2 СТРОКУ.
CALLJEKCTP;ЗАПИШЕМ В ИНДИКАТОР 2 СТРОКУ.
BCFFLAG,6;
RETURN
JEKCTP
MOVLW.16;
MOVWFCOUN;УСТАНОВИМ СЧЕТЧИК ИНДИКАЦИИ ЗНАКОМЕСТ.
MOVLW R1;АДРЕС ПЕРВОГО РЕГИСТРА ИНДИКАЦИИ.
MOVWFFSR;ПО КОСВЕННОЙ АДРЕСАЦИИ
MOVFWINDF;УСТАНОВИМ ЗНАЧЕНИЕ РЕГИСТРА.
CALL JEDAT;ЗАПИШЕМ В ИНДИКАТОР.
DECFCOUN,1;УМЕНЬШИМ СЧЕТЧИК.
BTFSCSTATUS,2;ЕСЛИ НЕТ НУЛЯ,
RETURN;
INCFFSR,1;ТО ВЫБЕРЕМ СЛЕДУЮЩИЙ РЕГИСТР.
GOTO$-6;ПОВТОРИМ ВЫВОД НА ИНДИКАЦИЮ.
;=======================================
; 38. ПРОВЕРКА КНОПОК.
;=======================================
KHOP
BSFSTATUS,5;ПЕРЕХОДИМ В БАНК 1.
BSFTRISB^80H,YCMI;НА ВХОД.
BSFTRISB^80H,YCPL;НА ВХОД.
BCFSTATUS,5;ПЕРЕХОДИМ В БАНК 0.
BTFSSFLAG1,0;ЕСЛИ НЕТ УСТАНОВКИ,
GOTOKHOP1;КНОПКИ НЕ ПРОВЕРЯЮТСЯ.
BTFSCFLAG2,2;ПРИ ПРОСМОТРЕ
GOTO$+0x0D;НЕ ПРОВЕРЯЕТСЯ РАЗРЯД И ПЛЮС.
BTFSCFLAG,3;ЕСЛИ РАНЕЕ БЫЛА НАЖАТА КНОПКА,
CALLYCTAL;ТО ИДЕМ НА УСТАНОВКУ РАЗРЯДА.
BTFSSPORTB,YCPL;ЕСЛИ КНОПКА ПЛЮС НАЖАТА,
BSFFLAG,3;ПОСТАВИМ ФЛАГ.
BTFSSPORTB,YCPL;ЕСЛИ КНОПКА ПЛЮС НАЖАТА,
BSFFLAG1,2;ЗАПРЕЩАЕМ ИНДИКАЦИЮ.
BTFSCFLAG,5;ЕСЛИ РАНЕЕ БЫЛА НАЖАТА КНОПКА "РАЗРЯД",
CALLKYPCY;ТО ИДЕМ НА УСТАНОВКУ КУРСОРА.
BTFSSPORTB,PAZ;ЕСЛИ КНОПКА "РАЗРЯД" НАЖАТА,
BSFFLAG,5;ПОСТАВИМ ФЛАГ.
BTFSCFLAG2,1;ПРИ УСТАНОВКЕ ДАТЫ
GOTOKHOP1;КНОПКА МИНУС НЕ ПРОВЕРЯЕТСЯ.
BTFSCFLAG,2;ЕСЛИ РАНЕЕ БЫЛА НАЖАТА КНОПКА МИНУС,
CALLYCTAM;ТО ИДЕМ НА УСТАНОВКУ РАЗРЯДА.
BTFSSPORTB,YCMI;ЕСЛИ КНОПКА МИНУС НАЖАТА,
BSFFLAG,2;ПОСТАВИМ ФЛАГ.
BTFSSPORTB,YCMI;ЕСЛИ КНОПКА МИНУС НАЖАТА,
BSFFLAG1,2;ЗАПРЕЩАЕМ ИНДИКАЦИЮ.
KHOP1
BTFSSPORTB,PEJ;ЕСЛИ КНОПКА "РЕЖИМ" НАЖАТА,
BSFFLAG,4;ПОСТАВИМ ФЛАГ.
BTFSSFLAG,4;ЕСЛИ КНОПКА "РЕЖИМ" НЕ БЫЛА НАЖАТА,
GOTOVUBOR;ТО ИДЕМ НА ВЫБОР РЕЖИМА ИНДИКАЦИИ.
BTFSSPORTB,PEJ;ЕСЛИ КНОПКА "РЕЖИМ" НАЖАТА,
GOTOVUBOR;ТО ИДЕМ НА ВЫБОР РЕЖИМА ИНДИКАЦИИ.
BCFFLAG,4;СБРОСИМ ФЛАГ КНОПКИ.
INCFREID,1;ИЗМЕНЕНИЕ РЕЖИМА ИНДИКАЦИИ.
MOVLW.3;3 РЕЖИМА ИНДИКАЦИИ.
SUBWFREID,0;ЕСЛИ БОЛЬШЕ,
BTFSSSTATUS,2;ТО ПОЙДЕМ НА СБРОС.
GOTOVUBOR;НА ЗАПИСЬ В РЕГИСТРЫ ИНДИКАЦИИ.
CLRFREID;СБРОС РЕЖИМА.
GOTOVUBOR;НА ВЫБОР РЕЖИМА ИНДИКАЦИИ.
;======================================================
; 39. СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ ПРИ ПРЕРЫВАНИИ.
;======================================================
PRER
MOVWFWTEMP;СОХРАНЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ W И
MOVFWSTATUS;STATUS,
MOVWFSTEMP;
MOVFWFSR;FSR.
MOVWFFTEMP;
CALLS1;
REPER ;ВОССТАНОВЛЕНИЕ СОХРАНЕННЫХ ЗНАЧЕНИЙ.
MOVFWSTEMP;ВОССТАНОВЛЕНИЕ РЕГИСТРОВ:
MOVWFSTATUS;STATUS,
MOVFWFTEMP;
MOVWFFSR;FSR,
MOVFWWTEMP;W.
BCFINTCON,2;СБРАСЫВАЕМ ФЛАГ ПРЕРЫВАНИЯ ОТ TMR0.
RETFIE ;ВОЗВРАТ ИЗ ПРЕРЫВАНИЯ.
;=============================================
; 40. СЧЕТ И ПЕРЕКОДИРОВКА РЕГИСТРОВ Ч-М-С.
;=============================================
S1
INCFMCK,1;ПРИБАВИМ 1 В РЕГИСТР МИЛЛИСЕКУНД.
MOVFWMCK;
ADDLW-0x7D;СЧИТАЕМ ДО 125.
BTFSSSTATUS,2;
RETURN;
CLRFMCK;ОБНУЛИМ.
BTFSCFLAG,7;РАЗДЕЛИМ НА 2.
GOTO$+3;
BSFFLAG,7;
RETURN;
BCFFLAG,7;ОБНУЛИМ ДЕЛИТЕЛЬ.
MOVFWCEK;ЗАГРУЗКА ЗНАЧЕНИЙ СЕКУНД В РАБ. РЕГИСТР.
ADDLW-3BH;ВЫЧЕСТЬ ИЗ РЕГИСТРА 59.236:4=59-0x0EC;
BZM1;СРАВНИТЬ НА 0, ЕСЛИ РАВНО, ПЕРЕЙТИ НА M1,
INCFCEK,1;ИНАЧЕ ПРИБАВИТЬ 1 В РЕГИСТР СЕКУНД.
RETURN;
M1
CLRFCEK;ОБНУЛЕНИЕ РЕГИСТРА СЕКУНД.
MOVFWMIN;ЗАГРУЗКА МИНУТ В РАБ. РЕГИСТР.
ADDLW-3BH;-59.
BZH1;СРАВНИТЬ НА 0, ЕСЛИ РАВНО, ПЕРЕЙТИ НА H1.
INCFMIN,1;ПРИБАВИТЬ 1 В МИНУТЫ.
MOVFWMIN;MIN >W.
MOVWFTEMP;.
CALLBIDE;ПЕРЕКОДИРУЕМ.
MOVWFMINH;W > В РЕГИСТР ИНДИКАЦИИ ДЕСЯТКОВ МИНУТ.
MOVFWTEMP;ВРЕМЕННЫЙ
MOVWFMINL;В РЕГИСТР ИНДИКАЦИИ ЕДИНИЦ МИНУТ.
RETURN;
H1
CLRFMIN;ОБНУЛЯЕМ РЕГИСТР МИНУТ.
CLRFMINL;ОБНУЛЯЕМ ЕДИНИЦЫ МИНУТ ИНДИКАЦИИ.
CLRFMINH;ОБНУЛЯЕМ ДЕСЯТКИ МИНУТ ИНДИКАЦИИ.
MOVFWHOU;ЗАГРУЗКА ЧАСОВ В РАБ. РЕГИСТР.
ADDLW-17H;- 23.
BZD1;СРАВНИТЬ НА 0, ЕСЛИ РАВНО, ПЕРЕЙТИ НА H10.
INCFHOU,1;ПРИБАВИТЬ 1 В ЧАСЫ.
MOVFWHOU;HOU >W.
MOVWFTEMP;
CALLBIDE;ПЕРЕКОДИРУЕМ.
MOVWFHOUH;W > В РЕГИСТР ИНДИКАЦИИ ДЕСЯТКОВ ЧАСОВ.
MOVFWTEMP;ВРЕМЕННЫЙ
MOVWFHOUL;В РЕГИСТР ИНДИКАЦИИ ЕДИНИЦ ЧАСОВ.
RETURN;
D1
CLRFHOU;ОБНУЛЕНИЕ РЕГИСТРА ЧАСОВ.
CLRFHOUL;ОБНУЛЕНИЕ ЕДИНИЦ ЧАСОВ.
CLRFHOUH;ОБНУЛЕНИЕ ДЕСЯТКОВ ЧАСОВ.
CALLSAPIS;НА ЗАПИСЬ.
CALLPOLNO;НА УСТАНОВКУ ПРЕДЕЛЬНЫХ ЗНАЧЕНИЙ.
INCFDHU,1;ПРИБАВИТЬ 1 В ДНИ.
MOVFWMEC;ЧИСЛО ДНЕЙ НЕ ДОЛЖНО ПРЕВЫШАТЬ
CALLDAYMON;ЧИСЛА ДАННОГО МЕСЯЦА.
SUBWFDHU,0;
SKPNC;
GOTOME1;ИНАЧЕ УВЕЛИЧИМ МЕСЯЦ.
MOVFWDHU;
MOVWFTEMP;
CALLBIDE;ПЕРЕКОДИРУЕМ.
MOVWFDHUD;W > В РЕГИСТР ИНДИКАЦИИ ДЕСЯТКОВ ДНЕЙ.
MOVFWTEMP;ВРЕМЕННЫЙ
MOVWFDHUE;В РЕГИСТР ИНДИКАЦИИ ЕДИНИЦ ДНЕЙ.
RETURN;
ME1
MOVLW.1;УСТАНОВИМ ПЕРВОЕ ЧИСЛО.
MOVWFDHU;
MOVWFDHUE;
CLRFDHUD;
INCFMEC,1;ПРИБАВИМ МЕСЯЦ.
MOVLW.13;НЕ БОЛЕЕ 12.
SUBWFMEC,0;
SKPNC;
GOTOME1ME;ЕСЛИ БОЛЬШЕ, ТО УСТАНОВИМ 1 ЯНВАРЯ.
MOVFWMEC;
MOVWFTEMP;
CALLBIDE;ПЕРЕКОДИРУЕМ.
MOVWFMECD;W > В РЕГИСТР ИНДИКАЦИИ ДЕСЯТКОВ МЕСЯЦА.