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

3.                 КР1821РУ55- микросхема, в состав которой входят: ОЗУ, таймер, два 8-разрядных (РА и РВ) порта ввода/вывода и один 6-разрядный порт (РС).

Выходной сигнал должен иметь аналоговый вид, для преобразования цифрового кода в аналоговый сигнал, используя ЦАП типа AD9708. Микросхема AD9708 представляет собой 8-разрядный ЦАП, построенный по схеме на транзисторных источниках тока, весовые токи формируются с помощью матрицы R-2R. В качестве опорного источника напряжения может выбираться либо внутренний – с напряжением +1,2 В, либо – внешний. Для обеспечения требуемого размаха напряжения ±5 В, к токовым выходам ЦАП подключаем операционный усилитель.


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


Рабочая программа фильтра разрабатывается на основе алгоритма функционирования устройства. Для настройки таймера/счетчика Т/С0, в качестве таймера, на работу в непрерывном режиме 2 (без блокировки сигналом  и с перезагрузкой после каждого цикла счета) необходимо управляющие биты GATE0=0, C/=0 и код режима 10 записать в состав управляющего слова (константа #02) для регистра TMOD при инициализации – команда MOV 89, #02.


Управляющее слово для регистра TMOD (прямой адрес 89)

TMOD.7

TMOD.6

TMOD.5

TMOD.4

TMOD.3

TMOD.2

TMOD.1

TMOD.0

GATE 1

C/ 1

M 1.1

M 0.1

GATE 0

C/ 0

M 1.0

M 0.0

X(0)

X(0)

X(0)

X(0)

0

0

1

0


Для обеспечения требуемой частоты дискретизации , при инициализации, константа #8Е должна быть записана в регистр TH0 – команда MOV 8C, #8Е. Пуск Т/С0 производится путем установке в управляющем регистре TCON бита TR0=1. Команда SETB 8C.

Для настройки порта РВ БИС РУ55 на ввод данных надо в состав регистра управляющего слова записать константу #00.


Управляющее слово для РУС БИС HE 55 (адрес 7000)

D7

D6

D5

D4

D3

D2

D1

D0

TM2

TM1

IE B

IE A

PC2

PC1

PB

PA

x(0)

x(0)

x(0)

x(0)

x(0)

x(0)

0

x(0)


При инициализации – команды MOV A, #00, MOV DPTR, #7000, MOVX @DPTR, A.

А для настройки порта РВ РФ 55 на вывод данных надо в регистр направления передачи порта РВ записать 1. При инициализации – команды MOV A, #01, MOV DPTR, #0803, MOVX @DPTR, A.

Формирование импульса запуска внешнего источника данных выполняется по прерывания от флага TF0, устанавливающегося при переполнении Т/С0. Подпрограмма обработки прерывания от флага TF0 имеет стартовый адрес 000В и содержит команды: CLR 90, SETB 90(сброс и установка бита по линии Р1.0).

Настройка прерываний необходима, так как в результате сброса МК все прерывания запрещены (управляющий регистр IE обнуляется). В первую очередь необходимо разрешить прерывания вообще (бит EA=1), также разрешить прерывания от Т/С0 (бит ET0=1) и по входу  (бит EXO=1).


Управляющее слово для регистра IE (прямой адрес А8)

IE 7

IE 6

IE 5

IE 4

IE 3

IE 2

IE 1

IE 0

EA

ES

ET1

EX1

ET0

EX0

1

0

0

0

0

0

1

1


При инициализации – команда MOV A8, #83.

Переопределять приоритеты прерываний не требуется, так как в результате задержки преобразования внешним устройством аналогового сигнала в цифровой код, запросы на прерывания от Т/С0 и по входу  по времени не совпадают (в результате сброса МК управляющий регистр IP – обнуляется).

Распределение памяти ОЗУ (КР1830ВЕ31).

70h-7Fh - стек;

30h, 31h, 32h – хранение отсчетов , , ;

40h, 41h – хранение выходных отсчетов , ;

50h, 51h – хранение отсчетов , .

Распределение памяти ПЗУ (КР1821РФ55).

0000h – команда перехода к программе инициализации по сигналу RST

0003h – команда перехода к программе вычисления и вывода выходного отсчета по сигналу на входе ;

000Bh – команда перехода к программе формирования импульса внешнего источника данных по сигналу переполнения от Т/С0;

00A0h … 00СFh – программа инициализации;

00D0h … 00FFh – программа формирования импульса запуска внешнего источника данных;

0100h … 07FFh – программа вычисления и вывода выходного отсчета на ЦАП.

Текст программы


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

Автор: Дмитриев Александр Юрьевич

Дата: 12 мая 2007 года

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

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

B0: .EQU 90h ;линия для вывода импульса запуска внешнего ;источника данных

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

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

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

PBRF: .EQU 0801h ;порт РВ РФ 55

RGRF: .EQU 0803h ;регистр направления передачи порта РВ РФ 55

SRF: .EQU 01h ;управляющее слово для регистра направления передачи порта РВ РФ 55

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

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

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

STH0: .EQU 8Eh ;управляющее слово для задания частоты переполнения Т/С0

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

IE: .EQU A8h ;регистр управления прерываниями

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

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

k1: .EQU F8h ;коэффициент =0,97

k2: .EQU D6h ;коэффициент =0,8394

Km: .EQU 5Bh ;коэффициент масштабирования

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

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

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

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

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

P1: .EQU 50h ;хранение отсчета

P2: .EQU 51h ;хранение отсчета

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

Инициализация по сигналу 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 ;РВ РУ 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 ;запоминание масштабированного отсчета  в памяти программный модуль вычисления произведения  

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.