JZ L$01 ; Если «0» ничего не делать
ADD TEN_K,MRESLT_LW ;Если «1»добавить множитель к резул
ADDC MLTPLR_HW,MRESLT_HW
L$01 RLA TEN_K ; Множитель X 2
RLC MLTPLR_HW
RLA BITTEST ; Проверить следующий бит
JNC L$002 ;Если бит в CARRY: завершить
; Подпрограмма беззнакового деления 32–бита на 16-бит
; Использованы регистры (MSTACK+2),MRESLT_LW,RESULT, LPCNTR, MRESLT_HW
; MRESLT_HW MRESLT_LW / (MSTACK+2) RESULT Остаток в MRESLT_HW
; По выходу: CARRY = 0: OK CARRY = 1: Частное > 16 Бит
DIVIDE CLR RESULT ; Очистить RESULT
MOV #17,LPCNTR ; Инициализация счётчика
DIV1 CMP MSTACK+2,MRESLT_HW
JLO DIV2
SUB MSTACK+2,MRESLT_HW
DIV2 RLC RESULT
JC RES_2_F ;Ошибка: RESULT > 16 Бит
DEC LPCNTR ; Декремент счётчика
JZ DIV3 ; 0: выход без ошибки
RLA MRESLT_LW
RLC MRESLT_HW
JNC DIV1
SUB MSTACK+2,MRESLT_HW
SETC
JMP DIV2
DIV3 CLRC ;Ошибки нет, C = 0
; Перевод сопротивления датчика в градусы Цельсия для отображения RES_2_F
CLR R12 ;Указат.на значение в табл.R
MOV #064H,R13 ;Поместить мин.темп.-1 в индик
JMP FIRST_CMP ;При первом сравн.1 не добав.
CHECK_R INCD R12 ;INC указат.на знач.в таб.cопрот.
DADD #1,R13 ;Десятичный инкремент счётчика
FIRST_CMP CMP RESIS_TAB(R12),RESULT
;Сравнить табличное значение с вычисленным сопротивлением
JNC CHECK_R ;Переход,если R датч.<табличного
;по адресу указателя
;Отобразить ”С” и знак «°» на ЖКИ
DISPLAY MOV.B #A+E+F+D,LCDM1+1 ;”С” ? дисплейная память ЖК
MOV.B #A+B+F+D,LCDM1+2 ;” °” (знак градуса)
; Отобразить значение, хранящееся в R13 в формате BCD на ЖКИ
MOV R13,R12 ;Копир.число в виде BCD в R12
MOV #LCDM1+4,R14 ;Младшая цифра в памяти ЖКИ; R14
BIC #0FFF0H,R13 ;Погасить всё,кроме младшей цифры
MOV.B LCD_TAB(R13),0(R14) ; Отпр.мл.цифру в ЖКИ
MOV R12,R13 ; Восстановить значение в R13
RRA R13 ; 4 сдвига
RRA R13
RRA R13
RRA R13
BIC #0FFF0H,R13 ; Погасить всё, кроме млад.цифры
MOV.B LCD_TAB(R13),1(R14) ;Отправить старшую цифру в ЖКИ
JMP BEGIN ; Переход к началу программы
; ЖКИ модуля STK
LCD_TYPE
A EQU01H
B EQU02H
C EQU10H
D EQU04H
E EQU80H
F EQU20H
G EQU08H
H EQU40H
LCD_TAB BYTE A+B+C+D+E+F ; Отображает”0”
.BYTE B+C ; Отображает”1”
.BYTE A+B+D+E+G ; Отображает”2”
.BYTE A+B+C+D+G ; Отображает”3”
.BYTE B+C+F+G ; Отображает”4”
.BYTE A+C+D+F+G ; Отображает”5”
.BYTE A+C+D+E+F+G ; Отображает”6”
.BYTE A+B+C ; Отображает”7”
.BYTE A+B+C+D+E+F+G ; Отображает”8”
.BYTE A+B+C+D+F+G ; Отображает”9”
; Табл.сопротив.30–40 °C. Значения = KОмыX1000–в 3 децимальных цифры
.EVEN ; Выравнивание по чётному адресу
RESIS_TAB
.WORD 12953 ;300C
.WORD 12666
.WORD 12378
.WORD 12090
.WORD 11858
.WORD 11626
.WORD 11393
.WORD 11161
.WORD 10929
.WORD 10353 ;400C
; Вектора прерываний
.EVEN ; Выравнивание по чётному адресу
.SECT ”INT_VECT”,I_VECTORS–31
.WORD RESET ; PORT0, Биты 2 .. 7
.WORD BTINT ; BASIC TIMER
.WORD RESET ; Нет источника
.WORD RESET ; Нет источника
.WORD RESET ; Нет источника
.WORD TPINT ; TIMER PORT
.WORD RESET ; Нет источника
.WORD RESET ; Нет источника
.WORD RESET ; Нет источника
.WORD RESET ; Нет источника
.WORD RESET ; WATCHDOG/TIMER, Режим таймера
.WORD RESET ; Нет источника
.WORD RESET ; UART
.WORD RESET ; P0.0
.WORD RESET ; NMI, Сбой генератора
.WORD RESET ; POR,Внеш. Reset, WATCHDOG
.END