Устройство для измерения угла опережения зажигания четырехтактных карбюраторных двигателей

Страница: 3/7

Рис. 3.

выхода таймера значение Счетчика1. Затем проверяет наличие сигнала с переключателя рода роботы, и если такой имеется, то программа вычисляет количество оборотов в минуту коленчатого вала, и передает результат основной программе, которая выводит его на индикатор. Количество оборотов можно вычислить по следующей формуле, зная частоту счетных импульсов и значение Счетчика1:

В случае если переключатель не нажат, то микропроцессор считывает с выхода таймера значение Счетчика2. Затем, пользуясь значениями счетчиков 1 и 2, вычисляет угол опережения зажигания, и после этого так же как и в предыдущем случае процессор передает результат основной программе, которая выводит его на индикатор. Следует отметить, что перед тем как результат будет выведен на индикатор он разбивается на десятки, для того, чтобы затем можно было перевести каждую цифру в отдельности из двоичной системы в код сегментного индикатора.

Ниже приводится программа на ассемблере для микропроцессора Z-80.

Основной блок:

; начальный блок, программирующий таймер.

LD A, 00111010 ; запись управляющего слова в счетчик 0: Режим работы 5; загрузка сначала младшего, затем старшего байта; код - двоичный.

OUT 3,A

LD A, FFH

OUT 3,A

LD A, FFH

OUT 3,A

LD A,01111010 ; запись управляющего слова в счетчик 1.

OUT 3,A

LD A, FFH

OUT 3,A

LD A, FFH

OUT 3,A

LD A, 10111010 ; запись управляющего слова в счетчик 3.

OUT 3,A

LD A, C4

OUT 3,A ;запись числа 2500.

LD A,9

OUT 3,A

; основной блок - вывод информации на индикатор.

N: LD D,0

LD B, (R4) ; загрузка количества десятков.

L: LD A,B

OUT 8,A ; выбор разряда.

LD HL, (R5)

LD E, B

ADD HL, DE

LD E, (HL) ; выбор цифры.

LD HL, (R6)

ADD HL, DE

LD A, (HL) ; выбор кода сегментного индикатора.

LD (R8), A

INC (R9)

M: LD A, (R9) ; ожидание прихода сигнала на вход немаскируемого прерывания.

JR NZ, M;

DJNZ L;

JP N;

Программа обработки прерывания вывода на индикатор:

LD A, (R9)

OUT 16,A ; вывод данных о сегментах.

LD (R9),0

RETI

Программа обработки прерывания с датчика:

EXX ; обмен с альтернативными регистрами.

LD A, (R7) ; проверка состояния счетчика[1][AK1][AK2][AK3]

JR NZ N; на выходе таймера истинное значение счетчика

LD (R7),1 ; на выходе таймера ложное значение счетчика

EXX

RETI

N: LD (R7),0

IN A,0 ; ввод значения Счетчика1 с выхода таймера.

XOR FFH ; инверсия, так как счетчик таймера считает в отрицательном направлении.

LD L,A

IN A,0

XOR FFH

LD H,A

LD (R1), HL

IN A,4 ; ввод состояния переключателя.

CPS 1

JP NZ A; если не нажат, то переход к А.

LD BC, (R1) ; вычисление количества оборотов.

LD (A1), BC

LD (A2),10

CALL DEL ; вызов процедуры деления.

LD BC, (A2)

LD (A2), BC

LD (A1), 50000

CALL DEL

LD (A2),6

CALL YMH ; вызов процедуры умножения.

LD BC, (A1)

LD (R3), BC

LD (R10),0

CALL DECT ; вызов процедуры разбиения на десятки.

EXX

RETI

A: IN A, 1 ; ввод значения Счетчика2 с выхода таймера.

XOR FFH

LD L, A

IN A, 1

XOR FFH

LD H, A

LD (R2), HL ; вычисление угла опережения зажигания.

LD (A1), 36 (10)

LD (A2), HL

CALL YMH

LD HL, (A1)

LD BC, (R1)

LD (A1), BC

LD (A2), 10

Реферат опубликован: 17/03/2010