Курсовая работа: Микропроцессорная система управления предназначенная для использования на лесопильном заводе
В программе этого теста читается порт ввода статуса фотоэлементов (адрес 0B) и проверяются на ноль два его младших бита. Если хотя бы один не равен нулю, то происходит переход на обработчик ошибки. Причем для обработки ошибки можно использовать ту же процедуру E_ROM, перед вызовом загрузив в регистр E код ошибки 3 (экономия памяти).
Листинг 5 : тест фотоэлементов
; – – – проверка двух младших битов порта ФЭЛ на 0
TST_FEL IN A, (#0B) ; прочесть слово статуса ФЭЛ
AND 3 ; наложить на него маску 000000112
LD E, 3 ;
JP NZ, E_ROM ; если не ноль, то ошибка
… ; иначе продолжаем тесты
Инициализация программируемого контроллера прерываний
Для инициализации контроллера надо переслать ему два управляющих слова ICW1 и ICW2, первое по адресу 0CН (A0 =0), второе – по адресу 0DН (A0 =1).
Пересылаются следующие управляющие слова:
Рис. 6 Применяемые управляющие слова инициализации ПКП
Слово ICW1 установит одиночный (без каскадного соединения) режим работы ПКП (бит 1), 4-хбайтный интервал для начальных адресов обработчиков прерываний (бит 2).
Биты 5–7 слова ICW1 вместе со всем словом ICW2 сообщат контроллеру, что первый обработчик (запроса IR0) начинается с адреса 0020Н .
Контроллер накладывает определенные ограничения на расположение обработчиков в памяти. Первое из них в том, подпрограммы обработки прерываний должны располагаться по порядку, начиная с адреса обработчика запроса IR0, и с постоянным интервалом, т.е. образовывать в памяти таблицу. Интервал расположения может составлять 4 байта (если бит 2 ICW1 равен единице, как в нашем случае), или 8 байт (если бит 2 равен нулю). При постоянном интервале адреса всех обработчиков определятся расположением первого (IR0).
Адрес первого обработчика составляется из полного слова ICW2 (старший байт) и битов 7,6,5 слова ICW1 (старшие три бита младшего байта адреса).
В нашем случае старший байт равен 00Н , младший байт равен 0010 0000 = 20Н . Обработчики имеют начальные адреса: 0020H , 0024H , 0028H , 002CH , 0030H , 0034H (6 обработчиков).
Процедура INI_PIC инициализирует контроллер.
Листинг 6 : инициализация программируемого контроллера прерываний
; – – – переслать 38H в порт 0CH и 0 в порт 0DH
INI_PIC LD A, #38 ;
OUT (#0C), A ;
XORA ;
OUT (#0D), A ;
Инициализация переменных системы
В системе за некоторыми ячейками памяти закреплена функция хранения переменных. Например, подсчитанный суммарный объем древесины V S в двоичном формате хранится в отдельных двух байтах памяти с адресами V_SUM, V_SUM+1.
Требуют инициализации только две переменные (инициализируются нулем):
V S (2 байта) – начальный адрес V_SUM;
Время (4 байта) – начальный адрес TIME.