Измеритель расхода топлива
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.
Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:
- Разработка функциональной цифровой ячейки от функциональной логической схемы проектируемого узла до печатной платы узла
- Автоматизация квазидинамического расчёта напряженно-деформированного состояния газового стыка дизельного двигателя
- Расчет малошумящей однозеркальной параболической антенны
- Теория надежности
- Аналого-цифровое преобразование сигналов
Поиск рефератов
Последние рефераты раздела
- Микроконтроллер системы управления
- Разработка алгоритмического и программного обеспечения стандарта IEEE 1500 для тестирования гибкой автоматизированной системы в пакете кристаллов
- Разработка базы данных для информатизации деятельности предприятия малого бизнеса Delphi 7.0
- Разработка детектора высокочастотного излучения
- Разработка микропроцессорного устройства для проверки и диагностики двигателя внутреннего сгорания автомобиля
- Разработка микшерного пульта
- Математические основы теории систем