Смекни!
smekni.com

Реализация цифрового фильтра нижних частот (стр. 3 из 5)

FILLCHAR 00h ;записать в пропуски между секциями 00

Инициализация по сигналу RST

S0: .SECTION

ORG 0000h ;переход к программе инициализации

LJMP INIT

S1: .SECTION

ORG 00A0h

INIT: MOVTMOD, #STMOD;настройка режима Т/С0

MOVTH0, #STH0 ;задание частоты дискретизации

SETB TR0 ;пуск Т/С0

MOV A, #SRU ;настройка порта

MOV DPTR, #RGRU ;РВ РУ 55

MOVX @DPTR, A ;на ввод данных

MOV A, #SRF ;настройка порта

MOV DPTR, #RGRF ;РВ РФ 55

MOVX @DPTR, A ;на вывод данных

MOV IE, #SIE ;настройка прерываний

STOP: SJMP STOP ;останов МК

Формирование импульса по внутреннему прерыванию от Т/С0

S2: .SECTION

ORG 000Bh

LJMP START ;переход к п/п формирования импульсазапуска внешнего источника данных

S3: .SECTION

ORG 00D0h

START: CLR B0 ;сброс бита В0

SETB B0 ;установка бита В0

RETI ;возврат из п/п обслуживанияпрерывания от Т/С0

Вычисление выходного отсчета по сигналу внешнего прерывания по входу

, рабочий цикл фильтра

S4: .SECTION

ORG 0003h

LJMP XYOUT

S5: .SECTION

ORG 0100h

XYOUT: MOV DPTR, #PBRU ;вводданныхчерез

MOVX A, @DPTR ;РВРУ 55

Программный модуль масштабирования:

вычисление произведения

=

входной отсчет - в аккумуляторе, масштабированныйотсчет записать в ОЗУ

RLC A ;анализ знака

JC M1 ;переход к программе умножения отрицательного отсчета

на

RRC A ;восстановление положительного отсета

в аккумуляторе

MOV B, #Km ;вычисление произведения

MUL AB ;

MOV X, B ;запоминание масштабированногоотсчета

в памяти

SJMP M2 ;переход к продолжению

M1: RRC A ;восстановление отрицательного отсчета

в аккумуляторе

CPL A ;получение положительного

INC A ;отсчета

(смена знака)

MOV B, #Km ;вычисление произведе-

MUL AB ;ния

и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательного

INC A ;произведения

(смена знака) MOV X, A ;запоминание масштабированного отсчета
в памяти программный модуль вычисленияпроизведения

хранится в ячейке ОЗУ с адресом X2

записать в ячейку ОЗУ с адресом P1

M2: MOV A, X2 ;копирование

в аккуму-

RLC A ;лятор и анализ знака

JC M3 ;переход к программеумножения отрицательногоотсчета

на

RRC A ;восстановление положительного отсчета

в аккумуляторе

MOV B, #k1 ;вычисление произведе-

MUL AB ;ния

MOV P1, B ;запоминание

в памяти

SJMP M4 ;переход к продолжению

M3: RRC A ;восстановление отрицательного отсчета

в аккумуляторе

CPL A ;получение положительного

INC A ;отсчета

(смена знака)

MOV B, #k1 ;вычисление произведе-

MUL AB ;ния

и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательного

INC A ;отсчета

(смена знака)

MOV P1, A ;запоминание

в памяти

программный модуль вычисленияпроизведения

хранится в ячейке ОЗУ с адресом Y1

записать в ячейку ОЗУ с адресом P2

M4: MOV A, Y1 ;копирование

в акку-

RLC A ;мулятор и анализ знака

JC M5 ;переход к программе умножения отрицательногоотсчета

на

RRC A ;восстановление положительного отсчета

в аккумуляторе

MOV B, #k2 ;вычисление произведе-

MUL AB ;ния

MOV P2, B ;запоминание

в памяти

SJMP M6 ;переход к продолжению

M5: RRC A ;восстановление отрицательного отсчета

в аккумуляторе

CPL A ;получение положительного

INC A ;отсчета

(смена знака)

MOV B, #k2 ;вычисление произведе-

MUL AB ;ния

и пересылка

MOV A, B ;в аккумулятор

CPL A ;получение отрицательного

INC A ;произведения

(смена знака)

MOV P2, A ;запоминание

в памяти

программный модуль вычисления выходного

отсчета

, слагаемые

хранятся в ячейках ОЗУ, результат записать

в ячейку ОЗУ и вывести на ЦАП

M6: MOV A, X ;вычисление отсчета

ADD A, P1 ;и сохранение в памяти

ADD A, P2 ;

MOV Y, A ;

ADD A, #80h ;получение смещённого

кода

для ЦАП

MOV DPTR, #PBRF ;вывод кода Y через порт

MOVX @DPTR, A ;РВ РФ55

программный модуль сдвига отсчетовв памяти, подготовка следующего рабочегоцикла

MOV X2, X1 ;

MOV X1, X ;

MOV Y1, Y ;

RETI ;возврат из подпрограммы

обслуживания прерывания

по входу

END

Исходные определения и ручной расчёт результатов работы программы: "Цифровой фильтр (нижних частот)".

Разностное уравнение имеет вид:

Представим уравнение в виде:

, где
,

1)Реализуемый коэффициент масштабирования

(число без знака) при 8-разрядном формате беззнаковых коэффициентов:

;
,

=
=
=

2)Реализуемые коэффициенты разностного уравнения

и
(числа без знака ) при 8-разрядном формате беззнаковых коэффициентов:

;

;

3) Входной положительный отсчет максимальной амплитуды (немасштабированный отсчет):

4)Масштабированный входной положительный отсчет максимальной амплитуды:

:=
=