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

Рисунок 9 – Блок – схема части алгоритма вывода результата на индикаторы

3.3 Листинг программы

ORG 00h ; Начало программы.

SJMP TIMER ; Переход на установку таймера.

ORG 1Bh ; Переход на обработку

JMP SELECTOR ; прерывания от таймера.

ORG 30h

TIMER: MOV TMOD, #00010000b

; 1-ый режим работы таймера (16 разрядов).

MOV TCON, #01000000b ; Включение таймера 1.

MOV IE, #10001000b ; Разрешение прерывания от таймера.

MOV TH1, #0FFh ; Задаются старшие и младшие

MOV TL1, #0FFh ; 8 разрядов таймера 1.

MOV R3, #0h ; Значение регистра необходимое для

; перехода к метке START.

V1: SJMP V1 ; Бесконечный цикл.

; Работа с АЦП

START: CLR P1.2 ; Сигнал подается на первый АЦП -

SETB P1.2 ; начало преобразования аналогового

NOP ; сигнала в цифровой.

CLR P1.2

NOP ; Задержка на время преобразования 4,5мкс.

NOP

NOP

NOP

NOP

NOP

CLR P1.3 ; Сигналы /CS и /RD

CLR P1.4 ; (разрешения работы и чтения)

SETB P1.4 ; служат для передачи данных

SETB P1.3 ; с АЦП на порт 3.

MOV 53h, P3 ; Данные с порта (скорость) записываются

; в ячейку памяти.

CLR P1.5 ; Аналогично, сигнал начала преобразования

SETB P1.5 ; для второго АЦП.

NOP

CLR P1.5

NOP

NOP

NOP

NOP

NOP

NOP

CLR P1.6 ; Аналогичные сигналы для передачи

CLR P1.7 ; данных со второго АЦП на 3-ий порт.

SETB P1.7 ;

SETB P1.6

MOV 52h, P3 ; Данные с порта в ячейку (расход топлива).

MOV 50h, #10110100b ; Коэффициент 180 в формуле (4).

MOV A, 53h ; Проверка скорости на равенство нулю и

JZ NULL ; переход в метку NULL при его истинности.

MOV A, 52h ; Реализация по формуле (4)

MOV B, 50h

SJMP ALGORITM ; Переход к реализации формулы.

NULL: MOV 53h, #64h ; Реализация по формуле (6) .

MOV A, 52h

MOV B, #0Eh

; Реализация формул (4) и (6)

ALGORITM: MUL AB ; Произведение или .

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

MOV 51h, B ; Старший байт произведения.

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

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

DIV AB

MOV 54h, A ; Целая часть от деления.

MOV 55h, B ; Остаток от деления.

MOV A, 53h ; Деление делителя (значение скорости

MOV B, #0Ah ; или 100) на 10.

DIV AB

MOV 56h, A ; Целая часть от деления делителя на 10.

MOV 57h, B ; Остаток от деления делителя на 10.

JZ HELP ; Если целая часть от деления делителя на 10

; равна нулю, то переход в метку HELP.

MOV A, 57h

MOV B, #4h ; Если остаток от деления делителя на 10 равен

SUBB A, B ; 4, то переход в метку B5.

JZ B5

MOV A, 57h

MOV B, #6h ; Если остаток от деления делителя на 10 равен

SUBB A, B ; 6, то переход в метку B5.

JZ B5

MOV A, #4h ; Если остаток от деления делителя на 10

CJNE A, 57h, C1 ; больше 4, то переход в метку B1.

C1: JC B1

JNC B3 ; Если меньше 4, то в метку B3.

B1: MOV A, #6h ; Если остаток от деления делителя на 10

CJNE A, 57h, C ; больше 6, то переход в метку B7.

C2: JC B7

JNC B2 ; Если равен 5, то в метку B2.

B2: MOV A, 56h ; Получено, что остаток от деления делителя

MOV B, #2h ; на 10 равен 5, тогда целая часть от деления

MUL AB ; делителя на 10 умножается на 2.

MOV 52h, A

INC 52h ; Увеличение результата на 1. (новый делитель)

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

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

DIV AB

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

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

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

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

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

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

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

MUL AB

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

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

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

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

MOV 56h, 52h

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

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

B3: MOV A, #1h ; Если остаток от деления делителя на 10

CJNE A, 57h, C3 ; 0 или 1, то переход в метку HELP_1.

C3: JNC HELP_1

JC B4 ; Если больше 1, то в метку B4.

B4: MOV A, #2h ; Если остаток от деления делителя на 10

CJNE A, 57h, C4 ; равен 2, то переход в метку B5.

C4: JNC B5

JC B6 ; Если равен 3, то в метку B6.

HELP: JMP D_0 ; Переход в метку D_0.

B5: MOV A, 56h ; Если остаток от деления делителя на 10

MOV B, #5h ; равен 2, 4, 6 или 8, тогда целая часть от

MUL AB ; деления делителя на 10 умножается на 5.

MOV 52h, A

MOV A, 57h ; Остаток от деления делителя на 10

MOV B, #2h ; делится на 2 и складывается с предыдущим

DIV AB ; результатом. Получен новый делитель.

ADD A, 52h

MOV 52h, A

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

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

DIV AB

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

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

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

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

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

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

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

MUL AB

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

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

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

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

MOV 56h, 52h

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

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

B7: MOV A, #8h ; Если остаток от деления делителя на 10

CJNE A, 57h, C5 ; равен 9, то переход в метку HELP_1.

C5: JC DALEE

JNC B8 ; Если меньше или равен 8, то в метку B8.

B8: MOV A, #7h ; Если остаток от деления делителя на 10

CJNE A, 57h, C6 ; равен 8, то переход в метку B5.

C6: JC B5

JNC B6 ; Если равен 7, то переход в метку B6.

HELP_1: SJMP DALEE ; Переход в метку DALEE.

B6: MOV A, 56h ; Если остаток от деления делителя на 10

MOV B, #3h ; равен 3 или 7, тогда целая часть от

MUL AB ; деления делителя на 10 умножается на 3.

MOV 52h, A

MOV A, #5h ; Полученный результат в случае, если

CJNE A, 57h, RAZD ; остаток от деления делителя на 10 равен 7

RAZD: JC DEL1 ; увеличивается на 2. А если остаток равен

JNC DEL2 ; 3, то - на 1. Получен новый делитель.

DEL1: INC 52h

INC 52h

SJMP RETURN ; Переход в метку RETURN.

DEL2: INC 52h

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

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


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

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

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

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