Informatics Point

Информатика и проектирование

Исходный текст программы на языке ассемблера с комментариями

; Реализация КИХ фильтра (N-1) порядка (19 коэффициентов)

. version 50

. global BUFFER2

. mmregs

; Задание значений символов, используемых в программе

N. set 19; к-во коэффициентов фильтра

OUTPORT. set 51h; параллельный порт, используемый для вывода отсчетов фильтра

INPORT. set 50h; параллельный порт, используемый для ввода отсчетов сигнала

. data

; данные для фильтра

INAD. word 0. word 0. word 32768*850/1000; масштабный множитель на входе 0.85

. sect "Vectors"

; Таблица векторов прерываний

B START BEGIN; INT1 внешние прерывания

B BEGIN; INT2BEGIN; INT3 BEGIN; TINT прерывание по таймеру

. sect "Initmain"

; Инициализация процессора и основная программа

START:

; установка режимов работы

SETC INTM; запрет прерываний на время установки режимов работы

CLRC OVM; режим переполнения

SPM 1; режим сдвига значений при передаче (PREG) - АЛУ

SETC SXM; режим расширения знака

LDP #0; установка разрешения необходимых прерываний

SPLK #1000h,PRD; ввод таймера#1000,TIM#08h, IMR

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

LOOP:; основная программа - бесконечная петля ожидания прихода запроса на; прерывания

B LOOP

; подпрограмма прерывания, которая состоит из трех основных частей

. sect "Vvod"

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

BEGIN:#0 # (N-2),BRCR; установка повторений блока команд

LDP #INAD INAD, INPORT; прием отсчета через входной порт

; умножение отсчета на ММ

LT INADMM#BUFFER2 BUFFER2; запись отсчета в буфер

. sect "Filter"

; программа реализации фильтра

LAR AR2,# (BUFFER2+N-1); загрузка начального (для вычислений) адреса; отсчетов в регистр AR2

LAR AR1,# (BUFFER1+N-1); загрузка начального адреса коэффициентов в AR1

MAR *,AR1; установка текущего ARn

ZAP; (PREG) = (ACC) = 0

RPTB B_END-1; задание блока команд для повторения

LT *-,AR2; к-т B - регистр Т, начиная с B (n-1)

MPYA *-; В*Х - PREG; предыдущее (PREG) добавляется к (ACC)

DMOV *,AR1; сдвиг отсчета Х в буфер, необходимый для вычисления следующего; выходного значения фильтра Y

B_END:

; перемножение и добавление в ACC последнего произведения В*Х без сдвига Х

LT *,AR2*#OUTAD OUTAD; сохранение полученного выходного отсчета

. sect "Vivod"

; вывод выходного отсчета фильтра

OUT OUTAD,OUTPORT INTM; разрешение прерывания для приема следующего отсчета

RET

; резервирование памяти для хранения входных отсчетов

. sect "BUFFER2"2. space N*16

; секция данных с к-тами фильтра, начиная с b0

. sect "BUFFER1"

. word32768*51/10000

. word- (32768*478/10000)

. word- (32768*410/10000)

. word- (32768*596/10000)

. word32768*854/10000

. word32768*1223/100000

. word- (32768*846/10000)

. word- (32768*1903/100000)

. word32768*350/10000

. word32768*2196/100000

. word32768*350/10000

. word- (32768*1903/100000)

. word- (32768*846/10000)

. word32768*1223/100000

. word32768*854/10000

. word- (32768*596/10000)

. word- (32768*410/10000)

. word- (32768*478/10000)

. word32768*51/10000

. end

Лучшие статьи по информатике

Таймер на микроконтроллере MSP430F2013
Практически в любой современной электронной технике можно найти микроконтроллеры. Столь широкое применение этих микросхем обусловлено чрезвычайно удачным со ...

Расчет усилительного каскада на биполярном транзисторе
Транзистор - это полупроводниковый прибор с двумя или несколькими р-n-переходами, позволяющий усиливать электрические сигналы и имеющий три вывода или более ...

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

Меню сайта