addr_timer:
000Bh mov TL0, #11010000b
000Ch mov TH0, #00000111b
000Dh setb TR0
000Eh reti
3.2.6. Разработка обработчика прерывания от источника питания
При поступлении прерывания от источника питания, необходимо переписать регистры микропроцессора в энергонезависимое ОЗУ. Это можно осуществить командами записи в стек PUSH, т.к. стек был предварительно настроен на определенный адрес.
Текст обработчика прерывания от источника питания:
org addr_power
push ACC
push DPTR
push PSW
pop ACC
clr P1.1
hlt
ret
3.2.7. Разработка обработчика прерывания от клавиатуры
Сигнал прерывания от клавиатуры поступает с микросхемы ККД. В данном случае, микросхема ККД работает в режиме сканирования клавиатуры. В этом режиме номер строки, в которой нажата клавиша, возвращается в разрядах D3 – D5, а номер столбца в разрядах D0 – D2. Т.к. входы SH и CO/STB микросхемы ККД заземлены, то два старших разряда возвращаемого кода всегда равны 0.
При приходе запроса прерывания возможны две ситуации:
1) Система находится в режиме нормального функционирования;
2) Система находиться в режиме ввода уставки.
Наличие того или иного режима будем определять по состоянию ячейки памяти 0073h. Если там 0, значит режим нормального функционирования. В этом случае, анализируется код нажатой клавиши. Если нажата одна из клавиш: «УСТАВКА", «ВЫВОД», «ОСТАНОВ», то система выполняет соответствующие действия. В противном случае, система выходит из обработчика.
Если по адресу текущего состояния находится не 0, то система находится в режиме ввода уставки. Пусть ввод уставки состоит из ввода одной шестнадцатеричной цифры. После ввода, новое значение уставки заменяет старое в ОЗУ, и флаг текущего состояния сбрасывается.
Текст обработчика прерывания от клавиатуры:
org addr_keyboard
push ACC
mov A,01000000b;команда чтение ОЗУ датчиков
mov DPTR, #FF0Ch
movx @DPTR, A
inc DPTR
movx A, @DPTR; ввод кода нажатой клавиши
mov R0, A
mov A, 0073h; Текущее значение флага режима
cje A, #0, install;Если режим ввода уставки, то вызов ;процедуры по метке
cje A, #1, output;Если режим вывода, то вызов ;процедуры по метке
cjne A, #2, end
hlt
end:
pop ACC
clr P1.2
ret
Процедура ввода уставки:
Install:; Объявление процедуры
mov A, #0
mov 0073h, A; Сброс флага режима
mov A, R0
cje A, #0Eh, m1; Если клавиша от 1 до 6
subb A, #07h; то вычитаем 7, получаем цифру
mov 0073h, A; записываем новое К
ajmp instend
m1:
cje A, #16h, m2; Если клавиша 7 - С
subb A, #09h; Вычитаем 9, получаем цифру
mov 0073h, A; Записываем новое К
ajmp instend
m2:
cje A, #1Bh, m3; Если нажали D - F
subb A, #0Bh; Вычитаем 11, получаем цифру
mov 0073h, A; Записываем новое К
ajmp instend
m3:
cjne A, #1Ch, instend; Если нажата клавиша 0
mov A, #0 ; Формируем 0
mov 0073h, A; Записываем новое К
instend:
ret ; Возврат из процедуры
Процедура вывода:
Output:
mov A, 0070h; Текущие значения X1 – X4
сигнализации
mov DPTR, FF14h; Адрес регистра со светодиодами
movx @DPTR, A
; Вызов процедуры вывода на дисплей
mov A,0071h; A:=Q4
mov b,#10
div ab; a:=a div b; b:=a mod b
mov R0, A
mov R1, B
push ACC
mov A,10000000b;1-ый символ дисплея
mov DPTR, #FF0Ch
movx @DPTR, A
pop ACC
mov DPTR, #FF0Dh
movx @DPTR, A
pop DPTR
mov A, R1
push ACC
mov A,10000001b;2-ой символ дисплея
mov DPTR, #FF0Ch
movx @DPTR, A
ret
Таким образом, вся программа управления разместилась в адресном пространстве ПЗУ 0000h – 1675h, из них:
Следовательно, всего программы занимает 1536 байт.
4. Заключение
В результате данного проекта получили МПС но основе ОМЭВМ на микросхемах памяти серий К537 и К573 с применением в цепях управления микросхем серии КР1554.
При построении данной МПС используются 1 микросхема ОМЭВМ серии К1816, 1 микросхема памяти КР537РУ10, 1 микросхема памяти КР573РФ4, 15 корпусов логических элементов серии КР1554 , 1 ЦАП серии К594, 1 АЦП серии К572, индикаторы серии К490, светодиоды серии АЛ307, микропереключатели, а также 20 резисторов и 25 конденсаторов, при этом потребляемая МПС мощность не превышает 7.3 Вт.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.