;---------------------------------------------------------------------------------------------------------------
OutputData: MACRO
DK_PK_Rez
MOV OutPort, SumH
SETB WR
CLR WR
ENDM
************************ ПРОГРАММА ************************
.CODE ;Секция кода, располагается в СSEG
;Таблица векторов прерываний
;Прерывание RESET - стартовый адрес при сбросе микроконтроллера
ORG 0h
LJMP Init ;инициализация программы
;Прерывание TIMER0 - Прерывание таймера/счетчика 0
ORG 000Bh
LJMP Run
*****************************************************************
;Программа инициализации
InitSect: SECTION ;Секция инициализации
Init: InitSteck
InitInt
InitTimer
InitCoeff
InitPSW
ClearXn
ReloadTimer
MainProgramm
*****************************************************************
RunSect: SECTION ;Секцияисполнения
Run: RunACP
ReloadTimer
SavePSW
CheckACP
InputData
PrepareData
ComputeSample
ShiftL
OutputData
PrepareCycl
ReloadPSW
RETI
4. Оценка быстродействия и определение импульсной и переходной характеристик
Сосчитаем число машинных циклов, необходимых для вычисления положительного и отрицательного входных отсчетов:
Положительный: 400 машинных циклов
Отрицательный: 418 машинных циклов
Построим импульсную и переходную характеристики фильтра в программе MatLab и сравним их со значениями вычисленными программно:
№ отчета | g(t)MatLab | g(t)3Ch (6010) | g(t) | g(t)Округл | g(t) |
0 | 0,0234 | 0168h | 0,0234375 | 0100h | 0,0166 |
1 | 0,0117 | 00B4h | 0,01171875 | 0000h | 0 |
2 | -0,0664 | 83FCh | -0,06640625 | 8300h | -0,05 |
3 | 0,0547 | 0348h | 0,0546875 | 0300h | 0.05 |
4 | 0,0859 | 0528h | 0,0859375 | 0500h | 0,0833 |
5 | -0,293 | 9194h | -0,29296875 | 9100h | -0,2833 |
6 | 0,395 | 97ACh | переполнение | 9700h | переполнение |
7 | -0,293 | 9194h | -0,29296875 | 9100h | -0,2833 |
8 | 0,0859 | 0528h | 0,0859375 | 0500h | 0,0833 |
9 | 0,0547 | 0348h | 0,0546875 | 0300h | 0.05 |
10 | 0,0664 | 83FCh | -0,06640625 | 8300h | -0,05 |
11 | 0,0117 | 00B4h | 0,01171875 | 0000h | 0 |
12 | 0,0234 | 0168h | 0,0234375 | 0100h | 0,002037 |
№ отчета | h(t)MatLab | h(t)3Ch (6010) | h(t) | h(t)Округл | h(t) |
0 | 0,0234 | 0168h | 0,0234375 | 0100h | 0,0166 |
1 | 0,0352 | 021Сh | 0,03515625 | 0200h | 0,0333 |
2 | -0,0313 | 81E0h | -0,03125 | 8100h | -0,0166 |
3 | 0,0234 | 0168h | 0,0234375 | 0100h | 0,0166 |
4 | 0,109 | 0690h | 0,109375 | 0600h | 0,1 |
5 | -0,184 | 8B04h | -0,18359375 | 8B00h | - 0,1833 |
6 | 0,211 | A2B0h | переполнение | A200h | переполнение |
7 | -0,082 | B444h | переполнение | B400h | переполнение |
8 | 0,00391 | AF1Ch | переполнение | AF00h | переполнение |
9 | 0.0586 | ABD4h | переполнение | AB00h | переполнение |
10 | -0.00781 | AFD0h | переполнение | AF00h | переполнение |
11 | 0.00391 | AF1Ch | переполнение | AF00h | переполнение |
12 | 0,0273 | ADB4h | переполнение | AD00h | переполнение |
По полученным результатам можно сказать, что программа фильтра работает правильно. Однако при относительно больших значениях, происходит переполнение. Из этого следует вывод, что фильтр будет функционировать только при малых входных отсчетах. Или же следует предусмотреть защиту от переполнения, однако это не входит в задачу курсового проекта.
Заключение
В данном курсовом проекте мной был разработан цифровой, нерекурсивный фильтр высоких частот. В процессе выполнения курсового проекта были выполнены все пункты теоретического задания.
Список литературы
1. Л.М. Гольденберг, Ю.П. Левчук, М.Н. Поляк Цифровые фильтры. М.: Связь, 1974
2. Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1989
3. Соколов Ю.П. Микроконтроллеры семейства MSC-51: Архитектура, программирование, отладка: Учебное пособие / Рязанский государственная радиотехническая академия. Рязань, 2007
4. Сальников Н.И. Цифровые устройства и микропроцессоры: Методические указания к курсовому проекту / Рязанский государственные радиотехнический университет. Рязань, 2007
* Графические материалы взяты из соответствующей номеру литературы.