Программное обеспечение микроконтроллера

Страницы работы

Содержание работы

4. Программное обеспечение микроконтроллера.

4.1. Основная программа.

При запуске основной программы происходит инициализация портов:

-  INPORT – счетчик числа импульсов;

-  OUTPORT1 – первый индикатор;

-  OUTPORT2 – второй индикатор;

-  OUTPORT3 – третий индикатор;

-  OUTPORT4 – четвертый индикатор;

После этого программа производит обнуление порта INPORT и переходит к подпрограмме RASCH - расчета частоты импульсов поступивших на вход микроконтроллера. После выхода из подпрограммы результаты вычислений сохраняются в ячейках памяти: 3000Н – целая часть числа, 3002Н – дробная часть числа. Затем программа переходит к преобразованию результатов вычислений в 2-10 код, а после этого в ВСD – код.  ВСD – код храниться в ячейках памяти: 3020Н – 1 разряд целого числа, 3021Н – 2 разряд целого числа, 3022Н – 3 разряд целого числа, 3023Н – 4 разряд целого числа, 3024Н – 1 разряд дробной части числа, 3025Н – 2 разряд дробной части числа и 3026Н – 3 разряд дробной части числа. После преобразования в ВСD – код программа переходит в подпрограмму INDIK, которая производит индикацию измеренной частоты. Затем программа зацикливается и  снова производит чтение из порта INPORT.

MVI A,10H

Инициализация портов

OUT INPORT

M1:

IN INPORT1

Считывание числа импульсов из порта INPORT и сохранение в R(C)

MVI C,A

LDA 00H

Обнуление порта INPORT

OUT INPORT

CALL RASCH

SHLD 0230H

Сохранение результатов вычислений:

3000Н – целая часть числа

3002Н – дробная часть числа

XCHG

SHLD 0030H

LXI B,0030H

Преобразование целой части числа в 2-10 код

CALL PREOBR

STA 0430H

SHLD 0530H

LXI B,0230H

Преобразование дробной части числа в 2-10 код

CALL PREOBR

STA 0830H

SHLD 0930H

LDA A,0530H

Преобразование целой части числа в BCD-код

CALL TRANSCODE2

STA 2030H

1 разряд целого числа

LDA A,0530H

CALL TRANSCODE1

LXI A,2130H

2 разряд целого числа

LDA A,0630H

CALL TRANSCODE2

STA 2230H

3 разряд целого числа

LDA A,0630H

CALL TRANSCODE1

STA 2330H

4 разряд целого числа

LDA A,0830H

Преобразование дробной части числа в BCD-код

CALL TRANSCODE2

STA 2430H

2 разряд дробной части числа

LDA A,0830H

CALL TRANSCODE1

LXI A,2530H

3 разряд дробной части числа

LDA A,0930H

CALL TRANSCODE2

LXI A,2630H

4 разряд дробной части числа

CALL INDIK

JMP M1

END.

4.2 Подпрограмма RACH.

Подпрограмма RACH предназначена для вычисления частоты измеряемого сигнала. Расчет производиться по формуле , где fтакт – тактовая частота микропроцессора – F4240H, а Nимп – число импульсов пришедших на счетчик за определенный период времени. Входными параметрами для данной программы являются регистры H,L,D,E – делимое, B,С – делитель, а выходными D,E – частное, H,L – остаток.

RASCH:

LXI D, 4240H

Вводим делимое F4240

LXI H, 000FH

MOV A,L

SUB C

MOV A,H

SBB B

RNC

Если переполнение, CY=0

MVI A,16

Счетчик циклов

M:

DAD H

Сдвиг влево остатка и частного в H,L,D,E

PUSH PSW

Сохранение счетчика переноса

XCHG

DAD H

XCHG

JNC M1

INX H

Учет переноса

M1:

MOV A,L

Вычитание делителя из остатка

SUB C

MOV L,A

MOV A,H

SBB B

MOV H,A

JC M2

Проверка знака разности, если разность <0

POP PSW

Восстановление счетчика

M3:

INX D

Разряд частного =1

JMP M4

M2:

POP PSW

Проверка переноса от сдвига остатка, восстановление переноса

JC M3

Если был перенос

DAD B

Восстановление остатка

M4:

DCR A

Проверка конца цикла

JNZ M

Зацикливание

STC

CY=1

RET

END

4.3 Подпрограмма TRANSCODE1.

Подпрограмма TRANSCODE1 предназначена для преобразования младшей тетрады 2-10 кода в BCD-код. Входные параметры: R(A) - 2-10 код, выходе параметры - R(A) – ВСD – код.

Похожие материалы

Информация о работе