Электрокардиомонитор. Подсистема фильтрации на основе рекурсивного цифрового фильтра

курсовая работа

Алгоритм работы

Программа

; реализация фильтра посредством решения уравнения y(n)=y(n-1)+0.5(x(n)-y(n-1))

mydata SEGMENT DATA

RSEG mydata

B0: EQU 90h ;линия для вывода импульса

P0: EQU 80h ;порт ввода

P2: EQU 00A0h ;порт вывода

SRU: EQU 19h ;управляющее слово для настройки

;портов

TMOD: EQU 89h ;регистр управления режимами

;таймеров-счетчиков

STMOD: EQU 02h ;управляющее слово настройки

;таймеров-счетчиков

TH0: EQU 8Ch ;старший байт Т/С0

STH0: EQU 38h ;управляющее слово для задания

;частоты переполнения

TR0: EQU 8Ch ;управляющий бит пуска Т/С0

IE: EQU 00A8h ;регистр разрешения прерываний

SIE: EQU 83h ;слово разрешения прерываний

;от Т/С0 и входа INT0

B: EQU 00F0h ;регистр В

k: EQU 08h ;коэффициент масштабирования

y: DS 1 ;вых.сигн.

myprog SEGMENT CODE

RSEG myprog

; программа

; инициализации

ORG 00h

LJMP INIT ;переход к программе

;инициализации

ORG 00A0h

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

MOV TH0, #STH0 ;задание частоты

;дискретизации

SETB TR0 ;пуск Т/С0

MOV IE, #SIE ;разрешение прерываний

;от Т/С0 и входа INT0

STOP: SJMP STOP ;останов программы

;Формирование импульса пуска АЦП по

;внутреннему прерыванию от Т/С0

ORG 00Bh

LJMP START ;переход к программе

;формирования импульса

;пуска АЦП

ORG 00D0h

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

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

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

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

;от Т/С0

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

;прерывания от входа INT0, рабочий цикл фильтра

ORG 30h

LJMP XYOUT ;переход к программе

;рабочего цикла фильтра

ORG 100h

XYOUT: MOV y, #0

MOV DPTR, #P0 ;ввод отсчета Хn из АЦП

MOVX A ,@DPTR ;через порт P0

; основная программа фильтрации

main: OV k,#01h

CLR C ; подготовка к вычитанию

SUBB A,y ; вычитание предыдущего сигнала

MOV F0,C ; запоминание знака разности

JNC dp ; переход по положительной разности

CPL A ; вычисление обратного кода

INC A ; получение модуля разности

dp: MOV B,k ; загрузка коэффициента

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

JNB A.7, nc ; переход если младший байт < 1/2

INC B ; добавление 1 в стар.байт

nc: MOV A,y ; загрузка предыдущего вых. сигнала

JNB F0,pos ; по положительному приращению

CLR C ; подготовка к вычитанию

SUBB A,B ; вычитание модуля приращения

SJMP str ; на запоминание вых. сигн.

pos: ADD A,B ; добавление модуля приращения

str: MOV y,A ; запоминание выход. сигнала

MOV DPTR, #P2 ; вывод Yn через порт

MOVX @DPTR, y ; P2

RETI ; возврат к программе инициализации.

END

электрокардиомонитор микроконтроллер фильтр

Делись добром ;)