Курсовая работа: Разработка микропроцессорной системы цифрового термометра на базе микроконтроллера
MOVLW.253;-
MOVWFSOT1X;ЗНАК 1 MAX.
MOVWFSOT2X;ЗНАК 2 MAX.
MOVLW.55;-55.
MOVWFLSB1X;СОХРАНЕННОЕ
МАКСИМАЛЬНОЕ 1 ДАТЧИКА.
MOVWFLSB2X;-"-
2 ДАТЧИКА.
CLRFDST1X;СОХРАНЕННОЕ
МАКСИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
CLRFDST2X;-"-
2 ДАТЧИКА.
MOVLW.251;+
MOVWFSOT1N;ЗНАК
1 MIN.
MOVWFSOT2N;ЗНАК 2 MIN.
MOVLW.99;+99.
MOVWFLSB1N;СОХРАНЕННОЕ
МИНИМАЛЬНОЕ 1 ДАТЧИКА.40
MOVWFLSB2N;-"-
2 ДАТЧИКА.
MOVLW.9;0,9
MOVWFDST1N;СОХРАНЕННОЕ
МИНИМАЛЬНОЕ ДЕСЯТЫХ 1 ДАТЧИКА.
MOVWFDST2N;-"-
2 ДАТЧИКА.
RETURN
;=========================================
; 32.
ИНИЦИАЛИЗАЦИЯ ЖКИ.
;=========================================
JEKINI
MOVLW03;
CALLJEKOM;
CALLSTROB;
MOVLW03;
CALLJEKOM;
CALLSTROB;
MOVLW03;
CALLJEKOM;
CALLSTROB;
MOVLW03;
CALLJEKOM;
CALLSTROB;
MOVLW10;ВЫКЛЮЧЕНИЕ ДИСПЛЕЯ.
CALLJEKOM;
CALLSTROB;
MOVLW06;СМЕЩЕНИЕ КУРСОРА.
CALLJEKOM;
CALLSTROB;
MOVLW01;СТИРАНИЕ ПАМЯТИ ДИСПЛЕЯ.
CALLJEKOM;
CALLSTROB;
MOVLW28;ФОРМАТ ОБМЕНА: 4 РАЗР., 5х7, 2 СТРОКИ.
CALLJEKOM;
CALLSTROB;
MOVLW0C;ВКЛЮЧЕНИЕ ДИСПЛЕЯ, ЗАПРЕТ КУРСОРА.
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
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 |