Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
цифра моя.doc
Скачиваний:
13
Добавлен:
17.09.2019
Размер:
553.98 Кб
Скачать

5 Разработка и отладка программы на языке команд мк

Рабочая программа разработана на основе спроектированного алгоритма функционирования фильтра, результатов анализа и формализации.

;Программа "Цифровой фильтр (нижних частот)"

;Автор Акимов А.В.

;Дата 24 марта 2012 года

;Разностное уравнение Yn = Xn + Xn-1 + 0,9 Xn-2 + 0,9 Xn-3 + 0,4 Yn-1

;Определение символических имён операндов

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

;запуска АЦП

PA: .EQU 7001h ;порт PА РУ55

PB: .EQU 7002h ;порт PB РУ55

RGRU: .EQU 7000h ;регистр управляющего слова РУ55

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

;портов РУ55

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

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

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

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

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

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

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

TR0: .EQU 8Ch ;управляющий бит пуска T/C0

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

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

;от T/C0 и входа INT0

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

K1: .EQU E6h ;первый коэффициент разностного уравнения

K2: .EQU 66h ;второй коэффициент разностного уравнения

KM: .EQU 3Ch ;коэффициент масштабирования

X: .EQU 30h ;ячейка хранения отсчёта Xn

X1: .EQU 31h ;ячейка хранения отсчёта Xn-1

X2: .EQU 32h ;ячейка хранения отсчёта Xn-2

X3: .EQU 33h ;ячейка хранения отсчёта Xn-3

Y: .EQU 40h ;ячейка хранения отсчёта Yn

Y1: .EQU 41h ;ячейка хранения отсчёта Yn-1

PR1: .EQU 50h ;ячейка хранения произведения PR1

PR2: .EQU 51h ;ячейка хранения произведения PR2

PR3: .EQU 52h ;ячейка хранения произведения PR3

.FILLCHAR 00h ;записать в пропусках

;между секциями нули

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

S0: .SECTION

.ORG 0000h

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

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

S1: SECTION

.ORG 00A0h

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

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

;тизации

SETB TR0 ;пуск Т/С0

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

MOV DPTR, #RGRU ;порта PA РУ55 на ввод, порта

MOVX @DPTR, A ;PB РУ55 на вывод

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

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

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

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

;нию от Т/С0

S2: .SECTION

.ORG 000Bh

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

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

;пуска АЦП

S3: .SECTION

.ORG 00D0h

START:CLR B0 ;сброс бита Р1.0

SETB B0 ;установка бита Р1.0

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

;мы обработки прерыва-

;ния

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

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

S4: .SECTION

.ORG 0003h

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

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

S5: .SECTION

.ORG 0100h

XYOUT:MOV DPTR, #PA ;ввод отсчёта Xn

MOVX A, @DPTR ;через порт РA РУ55

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

;вычисление произведения Xn := KмXn

;входной отсчёт - в аккумуляторе, масштаби-

;рованный отсчёт записать в ячейку ОЗУ

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

JC M1 ;переход к программе ум-

;ножения отрицательного

;отсчёта Xn на Kм

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

;тельного отсчёта Xn

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

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

MUL AB ;ния KмXn

MOV X, B ;запоминание масштаби-

;рованного отсчёта Xn

;в памяти

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

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

;тельного отсчёта Xn

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

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

INC A ;го отсчёта Xn (смена зна-

;ка)

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

MUL AB ;ния KмXn и пересылка

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

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

INC A ;го произведения KмXn

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

MOV X, A ;запоминание масштаби-

;рованного отсчёта Xn

;в памяти

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

;произведения PR1 := K1Xn-2

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

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

M2: MOV A, X2 ;копирование Xn-2 в аккуму-

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

JC M3 ;переход к программе ум-

;ножения отрицательного

;отсчёта Xn-2 на K1

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

;тельного отсчёта Xn-1

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

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

MUL AB ;ния K1Xn-2

MOV PR1, B ;запоминание KXn-2

;в памяти

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

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

;тельного отсчёта Xn-2

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

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

INC A ;го отсчёта Xn-2 (смена зна-

;ка)

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

MUL AB ;ния K1Xn-2 и пересылка

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

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

INC A ;го произведения K1Xn-2

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

MOV PR1, A ;запоминание K1Xn-2 в па-

;мяти

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

;произведения PR2 := K1Xn-3

;Xn-3 хранится в ячейке ОЗУ с адресом X3

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

M4: MOV A, X3 ;копирование Xn-3 в акку-

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

JC M5 ;переход к программе ум-

;ножения отрицательного

;отсчёта Xn-3 на K1

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

;тельного отсчёта Xn-3

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

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

MUL AB ;ния K1Xn-3

MOV PR2, B ;запоминание K2Xn-3

;в памяти

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

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

;тельного отсчёта Xn-3

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

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

INC A ;го отсчёта Xn-3 (смена

;знака)

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

MUL AB ;ния K1Xn-3 и пересылка

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

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

INC A ;го произведения K2Xn-3

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

MOV PR2, A ;запоминание K1Xn-3 в па-

;мяти

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

;произведения PR3 := K2Yn-1

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

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

M6: MOV A, Y1 ;копирование Yn-1 в аккуму-

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

JC M5 ;переход к программе ум-

;ножения отрицательного

;отсчёта Yn-1 на K2

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

;тельного отсчёта Yn-1

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

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

MUL AB ;ния K2Yn-1

MOV PR2, B ;запоминание K2Yn-1

;в памяти

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

M7: RRC A ;восстановление отрица-

;тельного отсчёта Yn-1

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

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

INC A ;го отсчёта Yn-1 (смена зна-

;ка)

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

MUL AB ;ния KYn-1 и пересылка

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

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

INC A ;го произведения K2Yn-1

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

MOV PR2, A ;запоминание K2Yn-1 в па-

;мяти

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

;отсчёта Yn = Xn+Xn-1+PR1+PR2+ PR3, слагаемые

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

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

;квитирования

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

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

ADD A, PR1 ;

ADD A, PR2 ;

ADD A, PR3 ;

MOV Y, A ;

MOV DPTR, #PB ;вывод Yn

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

;РB РУ55

;программный модуль сдвига отсчётов

;в памяти, подготовка следующего рабочего

;цикла

MOV X3, X2 ;

MOV X2, X1 ;

MOV X1, X ;

MOV Y1, Y ;

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

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

;по входу INT0

.END

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]