Мегаобучалка Главная | О нас | Обратная связь  


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




Рабочая программа разрабатывается на основе алгоритма функционирования устройства. Порт PВ РУ 55 настраивается на вывод при помощи управляющего слова имеющего вид: , которое необходимо записать в регистр направления передачи порта.

Для настройки таймера на период переполнения  в третьем режиме работы необходимо в младший байт таймера записать , а в старший байт таймера записать .

Порт PA РУ 55 настраивается на ввод данных в режиме обмена. Для этого управляющее слово записывается в регистр управляющего слова.

PA и PB – задают направление передачи данных через порты PA и PB соответственно.

 “0” - ввод , “1” – вывод. PC2 и PC1 - варианты использования порта С , для режима работы порта РА условного с квитированием в РС2 записываем “1” , В РС1 записываем “0”, в этом случае линии порта С:

PC0 – INTR A PC2 – STB A

PC1 – BFA PC3..PC5 – вывод

IEA и IEB разрешают (IE=1) или запрещают выработку сигналов прерывания INTR портов А и В. TM2 , TM1 - биты которые содержат команды управления таймером , для запуска таймера в эти биты записываются единицы.

Управляющее слово будет иметь вид:

 

При настройке режимов прерываний необходимо разрешить прерывание МП типа TRAP. Используется команда SIM устанавливающая маску прерываний.



M 7.5, M 6.5, M 5.5 - маски запрещающие соответствующие прерывания.

R 7.5 - бит сбрасывающий триггер, где фиксируется запрос внешнего прерывания по входу TRAP.

MSEN - разрешение установки маски прерываний.

SDEN -разрешение вывода данных находящихся в разряде A7.

SOD - данные предназначенные для вывода через линию SOD.

Маска прерываний будет иметь вид:

Распределение памяти ПЗУ:

0000h…001Dh – программа инициализации;

003Ch…00A4 – программа реакции на прерывание типа RST 7.5;

Распределение памяти ОЗУ:

5000h, 5001h – хранение отсчетов ;

5002h, 5003h – хранение произведений ;

5004h, 5005h – хранение отсчетов ;

50FFh - начальный адрес стека.

 

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

****************************************************************

* Курсовой проект *

* на тему : Цифровой полосовой фильтр *

* выполнил: ст.гр.117 *

* Величко Андрей Викторович *

* Дата :09.04.04 г. *

****************************************************************

* Задание на курсовой проект: *

* линейное разностное уравнение : Y(n)=X(n)+0,04X(n-1)-0.96Х(n-2)- *

*-0,81Y(n-2) *

* частота дискретизации : Fд=6.5кГц *

* входной код - дополнительный *

* выходной сигнал - аналоговый, диапазон измерения (-1..+1) *

* ЦАП-К572ПА1 *

* микропроцессор-КР1821ВМ85 *

****************************************************************

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

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

PARU.EQU 7001h ;порт PA (РУ 55)

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

TL .EQU 7004h ;младший байт таймера

TH .EQU 7005h ;старший байт таймера

STL .EQU 77h ;младшее слово для загрузки

;в таймер

STH.EQU C2h ;старшее слово для загрузки

;в таймер

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

;портов и пуска таймера (РУ 55)

SRP .EQU 1Bh ;управляющее слово для настройки

;прерываний

AX .EQU 5000h ;адрес отсчета Xn

AX1 .EQU 5001h ;адрес отсчета X(n-1)

AX2 .EQU 5002h ;адрес отсчета Yn

AY .EQU 5003h ;адрес отсчета Y(n-1)

AY1 .EQU 5004h ;адрес произведения P1n

AY2 .EQU 5005h ;адрес произведения P2n

AP1.EQU 5006h ;адрес отсчета Y(n-1)

AP2 .EQU 5007h ;адрес произведения P1n

AP3 .EQU 5008h ;адрес произведения P2n

 

;Инициализация по сигналу "Сброс"

 .ORG 0 ;начальный адрес программного

;модуля инициализаций

LXI SP,50FFh ;организация стека

 MVI A,STL ;настройка таймера на частоту

 STA TL ;переполнения T=Tд в режиме 3

 MVI A,STH ;

 STA TH ;

 MVI A,SRU ;настройка порта PA (РУ 55)

 STA RGRU ;на ввод, РВ (РУ 55) на вывод и пуск таймера

M1:HLT ;останов.ожидания прерывания

 JMP M1 ;переход на команду останова

;процессор по окончании под-

;-программы обслуживания

;прерывания

 .ORG 24H;начальный адрес программной

;реакции на прерывание типа

;TRAP

 LDA PARU ;ввод текущего кода

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

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

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

;Xn:=0,0101101*Xn=

;

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

;масштабированный отсчет записать в ячейку

;ОЗУ с адресом AX

 MOV H,A ;Xn ® H

 ARHL ;арифметические сдвиги

 ARHL ;входного отсчета

;и накопление суммы

MOV A,H ;частичных произведений в

 ARHL аккумуляторе : (2^-2*Xn+2^-3*Xn+2^-4*Xn+ +2^-6*Xn+2^-8*Xn) ® A

 ARHL;

 ADD H

 ARHL;

 ADD H ;

 ARHL ;

 ARHL ;

 ADD H ;

STA AX ;запоминание отсчета

 ;Xn в памяти

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

;P1n:=0,04*X(n-1)@0,0000101*X(n-1)=

;=(2^0+2^-6+2^-7+2^-8)*X(n-1)

 LDA AX1 ;X(n-1) ® A

MOV H,A ;X(n-1) ® H

;арифметические сдвиги

;отсчета X(n-1) и

;накопление суммы

 ARHL ;частичных произведений:

 ARHL ;(2^0+2^-6+2^-7+

 ARHL ;+2^-8)*X(n-1) ® A

 ARHL ;

 ARHL ;

 MOV A,H ;

 ARHL;

 ARHL ;

ADD H;

 STA AP1 ;запоминание P1n в памяти

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

;P2n:=0,96*X(n-2)@0,1111010*Y(n-1)=

;=(2^-3+2^-4+2^-5+2^-8)*Y(n-1)

 LDA AX2 ;Y(n-1) ® A

 MOV H,A ;Y(n-1) ® H

 ARHL

MOV A,H ;арифметические сдвиги

 ARHL

ADD H;отсчета Y(n-1) и

 ARHL ;накопление суммы

 ADD H ;частичных произведений:

 ARHL ;(2^-3+2^-4+2^-5+

ADD H ;+2^-8)*Y(n-1) ® A

 ARHL

 ARHL ;

 ADD H;

 STA AP2 ;запоминание P2n в памяти

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

;P3n:=0,81*Y(n-2)@0,1100111*Y(n-1)=

 LDA AY2 ;Y(n-1) ® A

 MOV H,A ;Y(n-1) ® H

 ARHL

MOV A,H ;арифметические сдвиги

 ARHL

ADD H ;отсчета Y(n-1) и

 ARHL

 ARHL

 ARHL ;накопление суммы

 ADD H ;частичных произведений:

 ARHL;(2^-3+2^-4+2^-5+

 ADD H;+2^-8)*Y(n-1) ® A

 ARHL ;

 ADD H ;

STA AP3 ;запоминание P2n в памяти

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

;отсчета Yn=Xn+P1n-P2n-P3N

 LDA AX ;Xn ® A

 LXI H,AP1 ;загрузка адреса P1n

 ADD M ;Xn-P1n ® A

 INX H ;получение адреса P2n

 SUB M ;Xn-P1n-P2n ® A

INX H ;получение адреса P2n

 SUB M

 STA AY ;запоминание Yn в памяти

 ADI 80h ;получение смещенного

;входного кода ЦАП

 STA PВRU ;вывод кода на ЦАП через

;порт PВ (РУ 55)

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

;в памяти

 LHLD AX1 ;

 SHLD AX2

LHLD AX ;

 SHLD AX1 ;

 LHLD AY1 ;

SHLD AY2

 LHLD AY ;

 SHLD AY1 ;

 RET ;возврат из подпрограммы обслуживания прерывания

Отладку программы произведем на основе программного обеспечения в состав которого входит:

q  ассемблер, преобразующий написанную программу в машинный код ;

q отладчик – эмулятор, который эмитирует работу процессора ;

Произведем отладку фрагмента программы ( программный модуль вычисления Yn)

LDA AX ; Xn ® A

LXI H, AP1 ; AP1 ® H

SUB M; (A) - ([HL]) ®A

INX H ; (HL) + 1 ® HL

SUB M ; (A) - ([HL]) ®A

STA AY ; (A) ® AY

Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой



Читайте также:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (96)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.022 сек.)
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7