Алгоритм работы МПС был приведен на рис. 2.2. Он заключается в инициализации (начальной установке) всех устройств системы, разрешения прерываний и затем останова МП. Дальнейшая работа МПС выполняется как реакция на запросы прерывания от различных устройств (таймера опроса, пульта управления, аварийного датчика, генератора импульсов с ЧИМ или ШИМ), т.е. с помощью подпрограмм обработки запросов прерываний.
При составлении программы на языке Ассемблера необходимо знать адреса, занимаемые ПЗУ и ОЗУ, и адреса портов. Желательно использовать символические адреса констант, портов и ячеек памяти, с которыми оперирует программа.
Будем считать, что модуль памяти проектируемой МПС выполнен по схеме рис. 3.3. ПЗУ имеет адреса 0000Н-07FFН, а ОЗУ – адреса 0800Н-0FFFН. Адреса и символические имена портов и регистров БИС даны в таблицах 1 и 2.
Для инициализации программируемого таймера, параллельного адаптера, контроллера прерываний необходимо определить управляющие слова для заданных режимов работы БИС [2,4].
Для счетчиков СТ0, СТ1 1-го таймера ПТ_1: режим 2 (делитель частоты), счет двоичный, загрузить 2 байта. Числа N0 и N1 равны 1000=03Е8Н. Управляющее слово для СТ0: 00110100В=34Н, для СТ1: 01110100В=74Н.
Для ПКП: адреса подпрограмм обслуживания прерываний равны 0020Н, 0024Н, 0028Н, 002СН. Управляющее слово 1: 00110110В=36Н, управляющее слово 2: 00000000В=00Н.
Для ППА: режим 0, порты РА и РВ работают на ввод, порт РС – на вывод. Управляющее слово: 10010010В=92Н.
Основную программу назовем CONTROL. Текст программы имеет следующий вид.
; CONTROL – основная программа работы МПС |
|||
СТ0_1 |
EQU 80H |
||
………………………… |
|||
IPORT |
EQU 90H |
||
OPORT1 |
EQU A0H |
||
STACK |
EQU 0FFFH |
; |
Адрес вершины стека |
ORG 0000H |
|||
CONTROL: |
LXI SP, STACK |
; |
Определить стек |
JMP MAIN |
|||
ORG 0020H |
; |
Вектор прерывания по INT0 |
|
JMP ISR0 |
|||
ORG 0024H |
; |
Вектор прерывания по INT1 |
|
JMP ISR1 |
|||
ORG 0028H |
; |
Вектор прерывания по INT2 |
|
JMP ISR2 |
|||
ORG 002CH |
; |
Вектор прерывания по INT3 |
|
JMP ISR3 |
|||
ORG 0050H |
|||
MAIN: |
MVI A, 92H |
||
OUT РУС55 |
; |
Инициализация ППА |
|
XRA A |
|||
OUT PC |
; |
Вывод нулей в порт PC |
|
OUT OPORT1 |
; |
Гашение светодиодов |
|
OUT OPORT2 |
; |
Гашение дисплея |
|
OUT OPORT3 |
|||
OUT OPORT4 |
|||
OUT OPORT5 |
|||
MVI A, 34H |
|||
OUT РУС53_1 |
; |
Режим CT0_1 |
|
MVI A, 74H |
|||
OUT РУС53_1 |
; |
Режим CT1_1 |
|
MVI A, 0E8H |
|||
OUT CT0_1 |
|||
MVI A, 03H |
|||
OUT CT0_1 |
; |
Число N0 в CT0_1 |
|
MVI A, 0E8H |
|||
OUT CT1_1 |
|||
MVI A, 03H |
|||
OUT CT1_1 |
; |
Число N1 в CT1_1 |
|
MVI A, 36H |
|||
OUT РУС59 |
|||
MVI A, 00H |
|||
OUT РУС59A |
; |
Инициализация ПКП |
|
EI |
; |
Разрешить прерывания |
|
HLT |
; |
Остановить МП |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.