Материал: Функциональная организация микро-ЭВМ К1816ВЕ48

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

MOV

 

SEC,A

 

;из таблицы

 

INC

TABTIME

 

;TIME

 

MOV

 

TIK,#0

 

;сброс счетчика тиков

 

SEL

 

RB0

 

 

 

 

EN

 

TCNTI

 

;разрешение прерываний и

STRT

T

 

 

;запуск таймера

 

WAIT:

CALL

CMPTIME

;ожидание

заданного

момента

 

 

 

 

 

 

JF1

MAIN

 

;переход по истечении часа

 

JNC

 

WAIT

 

 

 

CALL

PROCESS

 

;переход к обработке данных

JMP

WAIT

 

;переход к ожиданию

 

;Подпрограмма обработки данных

 

 

PROCESS: SEL

 

RB0

 

 

 

;ввод в первый вектор из порта P1

 

 

MOV R2,#MAXSIZE

 

 

 

MOV R0,#VECT1

 

 

 

 

LOOP1:

IN

A,P1

 

 

 

 

MOV

 

@R0,A

 

 

 

INC

 

R0

 

 

 

 

DJNZ

 

R2,LOOP1

 

 

 

;ввод во второй вектор из порта P2

 

 

MOV R2,#MAXSIZE

 

 

 

MOV

 

R0,#VECT2

 

 

 

LOOP2:

IN

A,P2

 

 

 

 

MOV

 

@R0,A

 

 

 

INC

 

R0

 

 

 

 

DJNZ

 

R2,LOOP2

 

 

 

;получение суммы и вывод в порт BUS

 

MOV R2,#MAXSIZE

 

 

 

MOV R0,#VECT1

 

 

 

 

MOV

 

R1,#VECT2

 

 

 

LOOP3:

MOV

 

A,@R1

 

 

ADD

 

A,@R0

 

 

 

MOV @R0,A

 

 

 

 

OUTL

BUS,A

 

 

 

INC

R0

 

 

 

 

 

DJNZR2,LOOP3

RET

;Обработка прерывания от таймера каждые 20,48 мсек

;и перевод текущего времени в минуты и секунды

TINT:

SEL

RB1

 

INC

TIK

 

;увеличение счетчика тиков и

MOV

 

A,TIK

;преобразование в

CPL

A

;дополнительный

INC

A

;код для сравнения

ADD

A,#49

 

;счетчик = 49

JNZ

M

;переход, если нет

MOV

 

TIK,#0

;иначе сброс счетчика тиков и

INC

SEC1

 

;увеличение счетчика секунд

MOV A,SEC1

;преобразование в

CPL

A

;дополнительный код

INC

A

;счетчика секунд

ADD

A,#60

 

;тек. секунды = 60

JNZ

M

;переход, если нет

MOV

 

SEC1,#0

;иначе сброс счетчика секунд и

INC

MIN1

 

;увеличение счетчика минут

MOV

 

A,MIN1

;преобразование в

CPL

A

;дополнительный код

INC

 

A

;минут

ADD A,#60

 

;тек. минуты = 60

JNZ

M

;переход если нет

MOV MIN1,#0

;иначе сброс счетчика минут и

CPL

F1

;конца часа

;установить признак

 

 

 

M:RETR

;Подпрограмма сравнения текущего времени с заданным ;возвращает С=1, если времена равны и С=0 - если нет

CMPTIME:

JF1 C0

;переход,если конец часа

SEL

RB1

 

MOV A,SEC1

;перевод счетчика

CPL

A

;секунд в

INC

A

;дополнительный

MOV

R2,A

;код

MOV A,SEC

;и сравнение с

ADD A,R2

;табличным значением

CLR

C

;и возврат С = 0

JNZ

C0

;переход если не равны

 

MOV

A,MIN1

;перевод счетчика

 

CPL

A

;минут в

 

 

INC

A

;дополнительный

 

 

MOV

R2,A

 

;код

 

 

MOV A,MIN

 

;и сравнение с

 

ADD A,R2

 

;табличным значением

 

CLR

C

;и возврат С = 0

 

 

JNZ

C0

 

;переход если не равны

C1:

 

MOV

A,@TABTIME

;подготовка новых

 

MOV

MIN,A

;значений минут и

 

INC

TABTIME

 

;секунд,

 

 

MOV A,@TABTIME

;заданных в таблице

 

MOV SEC,A

 

;моментов времени для

 

INC

TABTIME

 

;ввода данных

 

CLR

C

;и возврат

 

 

CPL

C

;С = 1

 

 

C0:

 

RET

 

 

 

;Заполнение векторов прерываний

 

DEFSEG ZERO,START=0

 

 

SEG

ZERO

 

 

 

 

JMP

MAIN

 

;Переход к началу

 

 

 

 

;программы при запуске

DEFSEG TINTR,START=7

 

 

SEG

TINTR

 

 

 

 

JMP

TINT

 

;Переход к программе обработке

 

END

 

;прерываний от таймера

 

 

 

 

 

При отладке этой программы удобно использовать batфайл:

avmac48.exe prim.asm avlink prim=prim.obj -SY avsim48 aflprim.cmd -c1

вкотором используется командный файл prim.cmd, подключающий

кпортам Р1 и Р2 внешние воздействия из файлов p1.dat и p2.dat :

laprim IOP1.DAT Y

Op1

IOP2.DAT

Y

Op2

SY

Список литературы

1. Однокристальные микроЭВМ.М.:МИКАП,1994.-400с.

2. Сташин В.А., Урусов А.В., Мологонцева О.Ф. Проектирование цифровых устройств на однокристальных микроконтроллерах.- М.:Энергоатомиздат, 1990.-224с.