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

4. Обоснование построения аппаратной части фильтра

Фильтр построен на основе микроконтроллера КР1830ВЕ31, ПЗУ КР1821РФ55, ОЗУ КР1821РУ55 (они составляют МП-систему) и АЦП AD7892AN-1. Перечисленных микросхем вполне достаточно для реализации поставленной задачи. Опишем каждую из них.

Микроконтроллер КР1830ВЕ31

Микросхема КР1830ВЕ31 включает в себя следующие основные блоки, которые необходимы для реализации фильтра:

  • 8-разрядный центральный процессор с возможностью обработки операндов: бит, нибл (4 бита), байт, 2 байта;

  • Память данных емкостью 128 байт;

  • Возможность добавления памяти программ до 64 Кбайт путем подключения внешних микросхем;

  • 32 – разрядный регистр общего назначения (РОН);

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

  • 4 программируемых порта параллельного обмена (ввода/вывода);

  • Многорежимный порт последовательного обмена (ввода/вывода) со скоростью передачи информации от 110 бит/с до 1 Мбит/с;

  • Программируемая двухуровневая система прерываний, допускающая переопределять приоритеты при обработке внешних прерываний;

  • Двоичная и десятичная арифметика;

  • 8-разрядный стек для хранения адресов возврата при выполнении подпрограмм и обработке прерываний;

  • Взаимодействие с внешней средой в стандарте ТТЛ-микросхем.

КР1821РФ55

КР1821РФ55 представляет собой постоянное запоминающее устройство емкостью 16384 бит и содержит ПЗУ емкостью 2Кх8 бит и два 8-разрядных порта ввода/вывода (РА и РВ). Каждый порт является независимым и может настраивается как на ввод, так и на вывод.

КР1821РУ55

КР1821РУ55 содержит статическое ОЗУ емкостью 2048 бит и содержит 256х8 бит, два 8-разрядных (РА, РВ) и один 6-разрядный (РС) порты ввода/вывода и 14-разрядный программируемый таймер/счетчик.Разряды портов РА и РВ могут настраиваться на ввод/вывод данных индивидуально и содержат буферные регистры для запоминания пересылаемого байта данных

AD7892AN-1

AD7892AN-1 представляет собой 12-разрядный АЦП с устройством выборки-хранения, генератором тактовых импульсов и многофункциональным интерфейсом, работающий от одного источника питания +5 В и реализующий алгоритм последовательных приближений с временем преобразования 1,3 мкс.

Устройство выборки-хранения имеет время хранения, позволяющее формировать цифровые коды с точностью до 12 разрядов для входной синусоиды с максимальной амплитудой ±10 В и частотой до 300 кГц. Для чтения цифрового кода можно использовать как параллельный 12-разрядный интерфейс, так и последовательный. Мы будем использовать параллельный интерфейс как более быстрый и простой с точки зрения программной реализации.

Выходной код является дополнительным. Числовые значения кода соответствуют значениям знакопеременного входного напряжения.

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

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

; Программа "Цифровой фильтр (режекторный)"

; Автор Котов В.А., гр. 912

; Дата 10 апреля 2012 года

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

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

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

;запуска АЦП

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

PA2: .EQU 0801h ;порт РA РФ55

RGRU: .EQU 7000h ;РУС РУ55

RGRF: .EQU 0800h ;РФ55

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

;портов РУ55

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

;портов РФ55

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

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

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

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

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

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

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

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

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

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

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

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

K1: .EQU 30h ;

K2: .EQU 04h ;

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

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

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

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

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

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

Y2: .EQU 42h ;ячейка хранения отсчета Yn-2

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

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

.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 ;настройка порта PA РУ55

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

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

MOV DPTR, #RGRF ;

MOVX @DPTR, A ;

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, #PA1 ;ввод отсчёта Xn из АЦП

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

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

;вычисление произведения Хn:= KM*Xn

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

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

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

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

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

;отсчета Xn на KM

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

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

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

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

MUL AB ;ния KM*Xn

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

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

;в памяти

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

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

;го отсчёта Xn

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

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

INC A ;отсчета Xn (смена знака)

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

MUL AB ;KM*Xn и пересылка в

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

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

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

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

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

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

;в памяти

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

;произведения PR1n:=K1*Xn-2

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

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

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

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

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

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

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

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

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

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

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

MUL AB ;K1*Xn-2

MOV PR1, B ;запоминание K1*Xn-2

;в памяти

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

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

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

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

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

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

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

MUL AB ;K1*Xn-2 и пересылка

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

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

INC A ;произведения K1*Xn-2

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

MOV PR1, A ;запоминание K1*Xn-2

;в памяти

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

;произведения PR2n:=K2*Yn-2

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

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

M4: MOV A, Y2 ;копирование Yn-2 в аккуму-

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

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

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

;отсчета Yn-2 на K2

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

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

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

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

MUL AB ;K2*Yn-2

MOV PR2, B ;запоминание K2*Yn-2

;в памяти

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

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

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

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

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

INC A ;отсчета Yn-2(смена

;знака)

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

MUL AB ;K2*Yn-2 и пересылка

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

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

INC A ;произведения K2*Yn-2

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

MOV PR2,A ;запоминание K2*Yn-2

;в памяти

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

;отсчета Yn= Xn + Xn-2 + PRn1 + PRn2

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

;записать в ячейку ОЗУ

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

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

ADD A, PR1 ;

ADD A, PR2 ;

MOV Y, A ;

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

MOVX @DPTR, A ;PA РФ55

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

MOV X2, X1 ;

MOV X1, X ;

MOV Y2, Y1 ;

MOV Y1, Y ;

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

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

;по ходу INT0

.END