Міністерство  освіти  та  науки  України
Національний  університет «Львівська  політехніка»
Кафедра КСА
Звіт
до лабораторної роботи № 4
з курсу “Мікропроцесорні пристрої”
Система переривань. Опитування дискретних сенсорів.
Мета роботи: вивчення режимів роботи системи переривання мікроконтролера сімейства MCS-51 фірми Atmel (AT90S8515 та АТ89С51), режимів вводу дискретної інформації та розроблення програм опитування сигналів сенсорів.
Короткі теоретичні відомості
Для введення інформації широко застосовуються клавішні перемикачі з механічними контактами і побудовані на їх основі контактні клавіатури. Сигнал таких перемикачів формується шляхом замикання (розмикання) електричного кола. Замикання (розмикання) електричного кола супроводжується вібрацією механічних контактів, тривалість якоі складає від 8до12мс. Це спричинює дрижання фронтів отриманого таким чином сигналу (рис. 1).
Pиc.1 Дрижання фронтів сигналу на виході пари з механічними контактами.
Для усунення впливу вібрації на фронти сигналу на и.:оді контактної пари встановлюють спеціальні формувачі. Приклад такого формуувача, в ролі якого використовується звичайний RS-тригер; подано на рис. 2
Рис.2.Схема усунення впливу вібрації на фронти сигналу за допомогою RS-триггера.
Таблиця 1. Початкові адреси векторів переривань
Джерело переривання
Адреса
Зовнішнє переривання 0
0003Н
Переповнення таймера 0
000ВН
Зовнішнє переривання 1
0013Н
Переповнення таймера 1
001ВН
Таблиця 2. Адреси пам’яті для стовпців матричної клавіатури.
Стовпець (кнопки)
Адреса
1 (SW3, SW6, SW9, SW12)
9006H
2 (SW4, SW7, SW10, SW13)
9005H
3 (SW5, SW8, SW11, SW14)
9003H
Програми виконані в лабораторії
№
Текст індивідуального завдання
3
Реалізувати опитування клавіатури. Номер клавіші послідовно відображати в кожному розряді статичного індикатора.
Мнемокод
Операнди
Коментарі
ORG
mov 
mov 
mov 
movx 
mov 
mov 
movx 
mov 
mov 
movx 
mov 
mov
movx 
mov 
mov
movx 
mov 
mov 
movx 
mov 
mov 
movx 
mov 
mov
movx 
mov 
mov 
movx 
mov 
mov A, 
movx 
mov 
mov 
movx 
mov 
mov
movx 
mov 
mov 
movx 
mov 
mov
movx 
mov 
mov 
movx 
continue:
mov 
mov 
movx 
mov 
movc 
mov 
movx 
mov 
mov 
movx 
CALL 
mov 
mov 
movx 
mov 
movc 
mov 
movx 
mov 
mov 
movx 
CALL 
mov 
mov 
movx 
mov 
movc 
mov 
movx 
mov 
mov 
movx 
CALL 
jmp 
ZAT:
mov 
C2:	mov 
C4:	djnz 
djnz 
ret
END
0
A,#00h
DPTR,#00FEh
A, #06h
@DPTR,A
DPTR,#00FDh
A, #66h
@DPTR,A
DPTR,#00FBh
A, #07h
@DPTR,A
DPTR,#00F7h
A, #01h
@DPTR,A
DPTR,#00FFh
A, #00h
@DPTR,A
DPTR,#10FEh
A, #5Bh
@DPTR,A
DPTR,#10FDh
A, #6Dh
@DPTR,A
DPTR,#10FBh
A, #7Fh
@DPTR,A
DPTR,#10F7h
A, #3Fh
@DPTR,A
DPTR,#10FFh
A, #00h
@DPTR,A
DPTR,#20FEh
A, #4Fh
@DPTR,A
DPTR,#20FDh
A, #7Dh
@DPTR,A
DPTR,#20FBh
A, #6Fh
@DPTR,A
DPTR,#20F7h
A, #FFh
@DPTR,A
DPTR,#20FFh
A, #00h
@DPTR,A
A,#00h
DPTR,#9006h
A,@DPTR
DPTR,#0000h
A, @A+DPTR
DPTR,#8001h
@DPTR,A
A,#00h
DPTR,#8002h
@DPTR,A
ZAT
A,#00h
DPTR,#9005h
A,@DPTR
DPTR,#1000h
A, @A+DPTR
DPTR,#8001h
@DPTR,A
A,#00h
DPTR,#8002h
@DPTR,A
ZAT
A,#00h
DPTR,#9003h
A,@DPTR
DPTR,#2000h
A, @A+DPTR
DPTR,#8001h
@DPTR,A
A,#00h
DPTR,#8002h
@DPTR,A
ZAT
continue 
R1,#0Fh
R2,#0FFh
R2,C4
R1,C2
; початок роботи програми
; записати в акумулятор число 00h
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 06h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 66h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 07h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 01h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 00h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 5Вh
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 6Dh
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 7Fh
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 3Fh
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 00h
; передача за посиланням вмісту акумулятора
;занести в реєстр DPTR вказівника на адресу
; записати в акумулятор число 4Fh
;мітка
; команда виклику підпрограми переривання
; команда виклику підпрограми переривання
; команда виклику підпрограми переривання
перехід на мітку continue
;мітка
; записати в реєстр R1 число 0Fh
; записати в реєстр R2 число 0FFh
; декремент R2 і перехід якщо не нуль
; декремент R1 і перехід якщо не нуль
; повернення з підпрограми
; закінчення програми
Результат роботи програми                       
Висновок: під час виконання цієї лабораторної роботи я ознайомився з системою переривань МК та особливостями опитування сенсорів з механічними контактами. В результаті виконання лабораторної, я закріпив практичні навики по опитуванню клавіатури.