Хелпикс

Главная

Контакты

Случайная статья





Задание. 1. Программа



Задание

Разработать МПС цифровой обрабоки сигналов, содержащую АЦП, таймер и цифровой индикатор требуемой разрядности: зарегистрировать в ОЗУ N моментов, в течение некоторого интервала времени (по таймеру), в которые исследуемый сигнал равен заданной константе.

Организовать периодический запуск АЦП с помощью таймера с программируемой частотой и ввод кодов АЦП по прерыванию.


 

 


1. Программа

 

Нач. адрес (Метка): Команда Комментарий

700h:           MOV AX, 80h      ; инициализация стека*

MOV SS, AX       ;

MOV AX, 00        ; инициализация указателя стека

MOV SP, AX       ;

 

                   MOV AL, 07h                  ; инициализация контроллера клавиатуры и

                   OUT 09h               ; дисплея

                   MOV AL, 39h      ;

                   OUT 09h               ;

 

                   MOV AL, 24h                  ; запись УС в нулевой канал таймера

                   OUT 07h               ;

MOV AL, 70h             ; запись УС в первый канал таймера

                   OUT 07h               ;                      

MOV AL, N         ; загружается константа пересчёта

                   OUT 04h               ; в нулевой канал

MOV AL, FFh      ; загружается константа пересчёта

                   OUT 05h               ; в первый канал

MOV AL, FFh           

OUT 05h

MOV CL, 04h                  ; CL=4

STI                        ; разрешение прерывания

HLT                      ; ожидание прерывания

748h:           POP AL                ; уменьшение указателя стека,

POP AL                ; чтобы не было переполнения

POP AL                ;

IN 10h                   ; считывание отсчёта с АЦП

                   CMP AL, M          ; сравниваем полученное значение с пороговым M

                   JE lab1                              ; переход на метку lab1, если AL=M

STI                   ; разрешение прерывания

HLT                      ; ожидание прерывания

lab1:            MOV AH, 00h      ;

ADD DX, 01h                  ; DX=DX+1

                   MOV AL, DL       ;

                   DAA                     ; коррекция результата сложения

                   MOV DL, AL       ;

                   CMP AH, 01h       ;

                   JE lab3                              ;

lab2:            MOV AL, 40h                       

OUT 07h               ; загрузка команды CLC в таймер

IN 05h                   ; чтение младшего байта счётчика

MOV CH, AL                       

IN 05h                   ; чтение cтаршего байта счётчика

MOV AH, AL                       

MOV AL, CH                       

CMP AX, 00h                        

JE kkk              ;

STI                        ; разрешение прерывания

                   HLT                      ; ожидание прерывания

lab3:            MOV AL, DH

                   ADD AL, 01h

                   DAA                   ; коррекция результата сложения

                   MOV DH, AL                  ;

                   JMP lab2               ;

Kkk:            MOV AL, 70h                  ;

                   OUT 09h               ; передача на ККД команды на прием данных

MOV AL, DH                  ;

SHR AL, CL        ; команда осуществляет логический сдвиг вправо на

; 4 бита содержимого регистра AL

OUT 08h               ; вывод на индикатор первой цифры (самый левый

                              ; разряд)

MOV AL, DH                  ;

OUT 08h               ; вывод на индикатор второй цифры

MOV AL, DL       ;

SHR AL, CL        ; команда осуществляет логический сдвиг вправо на

; 4 бита содержимого регистра AL

OUT 08h               ; вывод на индикатор третьей цифры

MOV AL, DL       ;

OUT 08h               ; вывод на индикатор четвёртой цифры

WAIT                    ; “зависание” системы

7F0h:           CLI                       ; запрещение прерывания

                   JMP 700h              ; переход на основную программу

 

Примечания: регистр DX в упакованном двоично-десятичном формате хранит информацию о числе моментов времени, в которые исследуемый сигнал равен M

(т. к. информацию на ККД необходимо выдавать в двоично-десятичном виде);

* Несмотря на то, что использование стековой памяти в системе не предусмотрено, SS необходимо инициализировать, т. к. при переходе на подпрограмму (по прерыванию) МП автоматически записывает в стек адрес возврата и регистр флагов, поэтому стек инициализируется на адрес 800h, при выставлении которого на ША все микросхемы закрываются и поэтому выдаваемая информация никаких изменений в системе не произведет


 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.