Курсовая работа: Микропроцессорная система управления предназначенная для использования на лесопильном заводе
На вход выбора кристалла CS подается дешифрованный адрес. На вход A0 подается нулевой разряд адреса. Выводы каскадирования CAS0–CAS2 остаются неподключенными. Выводы D0–D7 подключены к шине данных.
Перед работой ПКП нужно инициализировать. Управляющая программа делает это во время самотестирования системы. При инициализации нужно сообщить контроллеру адреса процедур обработки прерываний.
Программная часть микропроцессорной системы
Тестирующие программы
Тестовые программы запускаются сразу по включении питания микропроцессорной системы перед началом работы. Это тест ОЗУ, ПЗУ, тест фотоэлементов, инициализация программируемого контроллера прерываний, инициализация переменных системы.
Тест ОЗУ
Тест ОЗУ состоит в проверке всех ячеек ОЗУ на запись и верное считывание байтов 00Н и FFН . Если для какой-то ячейки совпадение записанного и прочитанного значений не состоялось, происходит переход на подпрограмму E_RAM, в регистровой паре HL при этом адрес неисправной ячейки.
Листинг 1 : тест ОЗУ
; – – – тест ОЗУ (адреса 0800…17FF)
TST_RAM LD HL, 0800 ; HL¬начало области ОЗУ
TST_RAM1 XOR A ; A=0
LD (HL), A ; записать 0 в ячейку памяти
LD A, (HL) ; прочитать эту ячейку
OR A ;
JP NZ, E_RAM ; если в ячейке не ноль, то выход
CPL ; инвертировать A (A=FF)
LD (HL), A ; записать FF в ячейку памяти
LD A, (HL) ; прочитать эту ячейку
INC A ; если прочитано A=FF, то A=FF+1=0
JP NZ, E_RAM ; иначе выход
INC HL ; к следующему адресу
LD A, H ; проверить на достижение конца ОЗУ
CP #18 ;
JR NZ, TST_RAM1 ; конец цикла
… ; тест ОЗУ успешен, продолжение тестов
Подпрограмма E_RAM – это бесконечный цикл вывода на индикаторы признака ошибки ОЗУ (строки “Е1”) и адреса неисправной ячейки (например, “Е1 12AF”). Естественно, при этом дальнейшее выполнение управляющей программы и функционирование системы отменяется (поэтому переход на E_RAM выполняется командой JP, а не CALL). По адресу можно определить, какая именно (из двух) микросхема памяти подлежит замене.
Независимый от кнопок управления индикацией вывод на индикаторы семисегментным кодом производится через 8-байтный порт вывода 03..0A и через порт 13..1A одновременно (см. п.3.3). Адрес 0A (он же 1A) соответствует самому левому индикатору, адрес 03 (он же 13) – самому правому.
Декодирование из двоичного в семисегментный код делается с помощью массива перекодировки длиной 16 байт, расположенного в ПЗУ по начальному адресу 0700Н :
0700 3F 06 5B 4F 66 6D 7D 07 ; “0”–“7”
0708 7F 6F 77 7C 39 5E 79 71 ; “8”–“F”