Разработка и отладка программы на языке команд микропроцессора
12 Рабочая программа разрабатывается на основе алгоритма функционирования устройства. Порт 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
12
Популярное: Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (158)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |