Nб – число байт; Nт – число тактов;
В знаменателе дроби указано число тактов на выполнение операции при выполнении условия, в числителе – при невыполнении.
Рассмотрим примеры записи программ на языке ассемблера ASM80 (разработанного в соответствии с системой команд процессора i8080).
7. Программирование БИС параллельного интерфейса
При программировании БИС в регистр РУС1 командой OUT 83H записывается управляющее слово, которое определяет один из трех режимов работы портов параллельного интерфейса:
режим 0 - программно управляемый ввод/вывод данных в синхронном режиме по трем 8-разрядным каналам РА, РВ и PC. Каждый канал может быть использован только для ввода или вывода информации, а канал PC дополнительно может быть разделен на два 4-разрядных канала;
режим 1 - обмен данными с ВУ по каналам РА и РВ в асинхронном режиме и режиме прерывания программы. Управляющие сигналы при этом передаются по каналу PC;
режим 2 - двунаправленный обмен данными с ВУ по каналу РА в режиме прерывания программы. Каналу РC придается пять линий канала PC для передачи и приема управляющих сигналов. Канал РВ может быть при этом запрограммирован на работу в режимах 0 или 1.
При программировании БИС используются два формата управляющего слова: первый предназначен для задания режимов работы и направления включения каналов, второй - для установки или сброса произвольного разряда канала PC. Признак формата содержится в старшем бите управляющего слова: 1 соответствует формату 1, а 0 -формату 2. В схеме, изображенной на рис.4, порты РА и РВ работают в режиме 0 и для программирования параллельного интерфейса нам понадобятся управляющие слова обоих форматов для режима 0.
Управляющее слово первого формата:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | PA | PC4-PC7 | 0 | PB | PC0-PC3 |
Логическая «1» в соответствующем разряде настраивает обозначенный канал на ввод, логический «0» - на вывод информации. Порт С позволяет производить независимую настройку полупортов на ввод-вывод в режиме 0.
Управляющее слово второго формата:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | Х | Х | Х | D3 | D2 | D1 | D0 |
В битах D6-D4 управляющего слова может быть произвольная информация.
8. Программирование таймера и контроллера прерываний
Контроллер прерываний (КП) содержит регистры: запросов RGI, приоритетов RGB, обслуживания ISR и масок прерывания RGM. Запросы поступают на входы IR0-IR7 и устанавливают соответствующие разряды регистра запросов RGI. КП оценивает их приоритет и формирует запрос INT. Микропроцессор принимает INT, и если прерывания разрешены, то подтверждает прием выдачей флага INTA. КП устанавливает разряд ISR с наивысшим приоритетом, сбрасывает запрос в RGI и выдает на шину данных код команды CALL (0CDH). МП выдает еще два сигнала INTA, по которым КП выдает на ШД последовательно сначала младший, а затем старший байт адреса подпрограммы обслуживания прерываний.
Установка КП в исходное состояние и настройка его на определенный режим работы по обслуживанию прерываний программируются двумя типами команд:
командами инициализации ICW1, ICW2;
командами управления режимом OCW1, OCW2, OCW3.
Команды ICW загружаются по команде OUT с учетом разряда АО. ICW1 используется при формировании младшего байта адреса подпрограммы, ICW2 задает старший байт адреса:
КП готов работать в режиме с фиксированными приоритетами запросов: IR0 - наивысший, IR7 - низший. Для задания других режимов в любой момент загружаются команды-приказы OCW (Operate Control Word):
Mi=1 – запрет прерывания по i-му каналу.
Сброс разряда регистра обслуживания ISR и циклический сдвиг приоритета. Записывается в подпрограмме обслуживания прерывания перед RET. Варианты приказа OCW2:
00100000 – сброс бита регистра обслуживания ISR с максимальным приоритетом;
10100000 - сброс бита ISR с максимальным приоритетом и назначение соответствующему входу низшего приоритета;
01100L2L1L0 – сброс бита ISR, определяемого полем L2L1L0;
11000L2L1L0 - назначение входу L2L1L0 низшего приоритета.
Режим опроса, считывания состояния КП