Измеритель расхода топлива

MOV B, 52h ; (4) или (6) делится на новый делитель.

DIV AB

MOV 41h, B ; Остаток от деления на новый делитель.

MOV B, #3h ; Умножение целой части от деления на

MUL AB ; новый делитель на 3.

MOV 57h, A ; В результате получены десятые доли

; деление старшего байта произведения.

MOV A, 41h ; Умножение остатка от деления на новый

MOV B, #3h ; делитель на 3.

MUL AB

MOV B, 52h ; Результат этого умножения снова делится

DIV AB ; на новый делитель и целая часть этого

ADD A, 57h ; деления складывается с десятыми долями

MOV 57h, A ; деления старшего байта произведения.

MOV 56h, 52h

MOV 42h, B ; Остаток последнего деления фиксируется.

SJMP VPERED ; Переход к нахождения сотых долей.

D_0: MOV A, 55h ; Если целая часть от деления делителя на

MOV B, #0Ah ; 10 равна нулю, то остаток от деления

MUL AB ; числителя формул (4) или (6) умножается

MOV B, 53h ; на 10 и делится на значение скорости.

DIV AB

MOV 56h, 53h ; Делитель не меняется(значение скорости).

MOV 57h, A ; В результате получены десятые доли

; деления старшего байта произведения.

MOV 42h, B ; Остаток последнего деления фиксируется.

SJMP VPERED ; Переход к нахождения сотых долей.

DALEE: MOV A, #5h ; Остаток от деления делителя на 10

CJNE A, 57h, RAZD2 ; равен 0, 1 или 9. В случае если остаток

RAZD2: JC DEL3 ; равен 9, то целая часть от деления

SJMP RETURN1 ; увеличивается на 1. В противном случае

DEL3: INC 56h ; она не меняется.

RETURN1: MOV A, 55h ; Остаток от деления числителя формул

MOV B, 56h ; (4) или (6) делится на новый делитель.

DIV AB

MOV 57h, A ; В результате получены десятые доли

; деления старшего байта произведения.

MOV 42h, B ; Остаток последнего деления фиксируется.

VPERED: MOV A, #0Ah ; Для нахождения сотых долей деления

MOV B, 42h ; старшего байта произведения, остаток

MUL AB ; предыдущего деления умножается на 10.

MOV 42h, A

MOV A, #0h ; Если данное произведение выходит за

CJNE A, B, OSH ; рамки одного байта, то в целях

OSH: JC OSH1 ; уменьшения погрешности конечного

MOV 58h, #0h ; результата, этот факт учитывается как

SJMP DALSE ; 5 сотых долей.

OSH1: MOV 58h, #5h

DALSE: MOV A, 42h ; Полученное произведение делится на

MOV B, 56h ; делитель.

DIV AB

ADD A, 58h ; Учет 5 сотых (если они есть).

MOV 58h, A ; В результате получены сотые доли

; деления старшего байта произведения.

MOV A, #0Ah ; Для нахождения тысячных долей деления

MUL AB ; старшего байта произведения, остаток

MOV 42h, A ; от деления снова умножается на 10.

MOV A, #0h

CJNE A, B, OSH2 ; Аналогичный способ уменьшения

OSH2: JC OSH4 ; погрешности в результате.

MOV 58h, #0h

SJMP DALSE2

OSH4: MOV 59h, #5h

DALSE2: MOV A, 42h ; Полученное произведение делится на

MOV B, 56h ; делитель.

DIV AB

ADD A, 59h ; Учет 5 тысячных (если они есть).

MOV 59h, A ; В результате получены тысячные доли

; деления старшего байта произведения.

MOV A, 54h ; Умножение полученного частного от

; деления старшего байта произведения

MOV B, #0FFh ; на 256 (т.к. старший байт).

MUL AB ; Сначала умножается, целая часть от

ADD A, 54h ; деления старшего байта произведения.

JC PER

SJMP NPER

PER: INC B

NPER: MOV 60h, B ; Старший байт конечного результата.

MOV 61h, A ; Младший байт конечного результата.

MOV A, 57h ; Умножаются десятые доли на 25,6 и

MOV B, #19h ; результат суммируется с младшим байтом

MUL AB ; конечного результата.

ADD A, 61h

MOV 61h, A

MOV A, 57h

MOV B, #6h

MUL AB

MOV B, #0Ah

DIV AB

ADD A, 61h

MOV 61h, A

MOV A, #4h ; Округление результата. Если остаток

CJNE A, B, OKR1 ; больше 4, то значение увеличивается на 1.

OKR1: JC OKR2

SJMP DALEE1

OKR2: INC 61h

DALEE1: MOV A, 58h ; Умножаются сотые доли на 2,6 и

MOV B, #2h ; результат суммируется с младшим

MUL AB ; байтом конечного результата.

ADD A, 61h

MOV 61h, A

MOV A, 58h

MOV B, #6h

MUL AB

MOV B, #0Ah

DIV AB

ADD A, 61h

MOV 61h, A

MOV A, #4h ; Округление результата.

CJNE A, B, OKR3

OKR3: JC OKR4

SJMP DALEE2

OKR4: INC 61h

DALEE2: MOV A, 59h ; Умножаются тысячные доли на 0,2 и

MOV B, #3h ; результат суммируется с младшим

MUL AB ; байтом конечного результата.

MOV B, #0Ah

DIV AB

ADD A, 61h

JC PER1

SJMP NPER1

PER1: INC 60h

NPER1: MOV 61h, A

MOV A, #4h ; Округление результата.

CJNE A, B, OKR5

OKR5 JC OKR6

SJMP DALE

OKR6: INC 61h

DALE: MOV A, 50h ; Деление младшего байта произведения

MOV B, 53h ; на значение скорости или на 100.

DIV AB

ADD A, 61h ; Результат суммируется с младшим

; байтом конечного результата.

JC PER2

SJMP NPER2

PER2: INC 60h

NPER2: MOV 61h, A ; Для уменьшения погрешности

MOV A, B ; конечного результата остаток от

MOV B, #2h ; деления младшего байта участвует

MUL AB ; в округлении.

MOV B, 53h

DIV AB

MOV B, A

MOV A, #0h

CJNE A, B, OK

OK: JC OK1

SJMP DALEE3

OK1: INC 61h

; Преобразование в десятичную форму записи

DALEE3: MOV A, 61h ; Разбиваем наше 16-разрядное значение

CLR ACC.7 ; на 3 4-разрядных.

CLR ACC.6

CLR ACC.5

CLR ACC.4

MOV 42h, A ; Младшее 4-разрядное значение.

MOV A, 61h

CLR ACC.3

CLR ACC.2

CLR ACC.1

CLR ACC.0

SWAP A

MOV 41h, A ; Среднее 4-разрядное значение.

MOV 40h, 60h ; Старшее 4-разрядное значение.

MOV A, 41h ; Среднее 4-разрядное значение

MOV B, #06h ; умножается на 6.

MUL AB

MOV B, #0Ah ; Затем делится на 10. Целая часть - число

DIV AB ; десятков, остаток - число единиц.

MOV 45h, A ; Число десятков.

MOV 46h, B ; Число единиц.

MOV A, 40h ; Старшее 4-разрядное значение

MOV B, #06h ; умножается на 6.

MUL AB

ADD A, 46h ; Результат складывается с числом единиц.

ADD A, 42h

MOV B, #0Ah ; Потом делится на 10.

DIV AB

ADD A, 45h ; Целая часть от деления складывается с

MOV 45h, A ; числом десятков.

MOV 46h, B ; Остаток - окончательное число единиц.

MOV A, 40h ; Старшее 4-разрядное значение

MOV B, #5h ; умножается на 5.

MUL AB

ADD A, 41h ; Результат складывается с числом десятков

ADD A, 45h

MOV B, #0Ah ; Потом делится на 10.

DIV AB

MOV 44h, A ; Число сотен.

MOV 45h, B ; Окончательное число десятков.

MOV A, 40h ; Старшее 4-разрядное значение

MOV B, #2h ; умножается на 2.

MUL AB

ADD A, 44h ; Результат складывается с числом сотен

MOV 44h, A ; Окончательное число сотен.

; Вывод результата на трехразрядный семисегментный индикатор

MOV 60h, #11000000b ; Цифра 0.

MOV 61h, #11111001b ; Цифра 1.

MOV 62h, #10100100b ; Цифра 2.

MOV 63h, #10110000b ; Цифра 3.

MOV 64h, #10011001b ; Цифра 4.

MOV 65h, #10010010b ; Цифра 5.

MOV 66h, #10000010b ; Цифра 6.

Страница:  1  2  3  4  5 


Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы