Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра КСА
Звіт
до лабораторної роботи № 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 і перехід якщо не нуль
; повернення з підпрограми
; закінчення програми
Результат роботи програми
Висновок: під час виконання цієї лабораторної роботи я ознайомився з системою переривань МК та особливостями опитування сенсорів з механічними контактами. В результаті виконання лабораторної, я закріпив практичні навики по опитуванню клавіатури.