|
|||||
Задание. 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, при выставлении которого на ША все микросхемы закрываются и поэтому выдаваемая информация никаких изменений в системе не произведет
|
|||||
|