Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128

; Вычисление сопротивления датчика

;Подпрограмма беззнакового умножения:MSTACK X TEN_K MRESLT_HW/MRESLT_LW

;Использованы рег.MSTACK,TEN_K,MLTPLR_HW,MRESLT_LW, MRESLT_HW, BITTEST

;Подпрограмма беззнакового умножения с накоплением

;(MSTACK X TEN_K) + MRESLT_HW|MRESLT_LW –> MRESLT_HW|MRESLT_LW

CALC_RES

MOV #10000,TEN_K ;Загрузить 10,000 десятичное в TEN_K

MPYU CLR MRESLT_LW ; 0 ? LSBS результата

CLR MRESLT_HW ; 0 ? MSBS результата

MACU CLR MLTPLR_HW ; 0 ? MSBS множителя

MOV #1,BITTEST ; Регистр проверки бит

L$002 BIT BITTEST,MSTACK ; Проверить текущий бит

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

К-во Просмотров: 571
Бесплатно скачать Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128