Автор работы: Пользователь скрыл имя, 27 Декабря 2012 в 15:18, лабораторная работа
Мета роботи: вивчення функціональних можливостей навчально-налагоджувального стенду, внутрішньої структури та команд однокристального мікроконтролера сімейства MCS-51
PX0 - установка рівня пріоритету переривання від зовнішнього джерела /INT0;
PT0 - установка рівня
пріоритету переривання від Т/
PX1 - установка рівня
пріоритету переривання від
PT1 - установка рівня
пріоритету переривання від Т/
PS - установка рівня пріоритету переривання від послідовного порту;
X - резервний розряд.
Наявність в розряді IP "1" встановлює для відповідного джерела високий рівень пріоритету, а наявність в розряді IP "0" – низький рівень пріоритету.
Регістр дозволу переривання (IE) призначений для дозволу або заборони переривань від відповідних джерел. Позначення розрядів регістра IE показано в таблиці 2.
Таблиця 2 – Регістр дозволу переривань IE
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
EA |
X |
X |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
ЕА – керування всіма джерелами переривань одночасно. Якщо ЕА=0, то переривання заборонені. Якщо ЕА=1, то переривання можуть бути дозволені індивідуальними дозволами EX0, ET0, EX1, ET1, ES;
Х – резервний розряд;
ES – керування перериванням від послідовного порту: ES=1 – дозвіл; ES=0 – заборона;
ET1 – керування перериванням від Т/С1: ЕТ=1 – дозвіл; ЕТI=0 – заборона;
EX1 – керування перериванням від зовнішнього джерела /INT1: EX1=1 – дозвіл; EX1= – заборона;
ЕТ0 – керування перериванням від Т/С0: ЕТ0=1 – дозвіл; ЕТ0=0 – заборона;
EX0 – керування перериванням від зовнішнього джерела /INT0: EX0=1 – дозвіл; EX0=0 – заборона.
Структура переривань. Механізм переривань в ОЕОМ дозволяє автоматично реагувати на зовнішні і внутрішні події (переповнення таймерів/лічильників; завершення послідовного обміну).
Кожне із зовнішніх переривань /INT0, /INT1 може бути активізовано по рівню або по фронту сигналів Р3.2, Р3.3 встановленням бітів IT0 і IT1 регістра TCON. При надходженні запиту зовнішнього переривання /INTх встановлюється прапорець IEх регістра TCON. Очистка прапорця IEх здійснюється апаратно: при перериванні по фронту IEх скидається при звертанні до відповідної підпрограми обробки переривання; при перериванні по рівню прапорець IEх очищується при знятті запиту зовнішнього переривання.
Для розпізнання зовнішнього переривання по рівню необхідно, щоб низький рівень на виводі INTх утримувався не менше 12 періодів сигналу тактової частоти. Якщо ж переривання активізується по переходу із стану високого рівня в стан низького рівня, то перед циклом низького рівня повинен бути цикл високого рівня на виводі /INTх. Якщо зовнішнє переривання активізується по рівню, то запит повинен утримуватись до початку підпрограми обслуговування і зніматися перед завершенням цієї підпрограми для запобігання повторного обслуговування.
Переривання від таймерів/лічильників виконуються по прапорцям TF0 і TF1 регістра TCON, які встановлюються при переповненні відповідних регістрів таймерів/лічильників (за виключенням режиму 3). Очистка прапорців TF0 і TF1 здійснюється при переході до підпрограми обслуговування переривання.
Переривання від послідовного порту виконується по прапорцю закінчення прийому RI або по прапорцю завершення передачі TI, які встановлюються в регістрі SCON.
На відміну від інших прапорців, RI і TI скидаються тільки програмним шляхом зазвичай в межах підпрограми обробки переривання, в якій визначається, якому саме прапорцю – RI або TI – відповідає переривання.
У випадку одночасного
надходження запитів
IE0 → TF0 → TE1 → TF1 → (TI + RI)
Установка прапорців переривання здійснюється в кінці машинного циклу, а їх опитування – в наступному циклі. І тільки після виконання останнього циклу поточної команди виконується апаратний виклик відповідної підпрограми обслуговування, еквівалентний команді LCALL.
Звертання до підпрограми обслуговування затримується при виконанні хоча б однієї з наступних умов:
Прапорець переривання, встановлений під час дії блокування переривання по одній з трьох вказаних умов і скинутий до їх зняття, не викликає обслуговування відповідного запиту переривання.
Підпрограма обслуговування переривання продовжується до виконання команди RETI, за якою відновлюється стан логіки переривання і стан програмного лічильника PC із двох верхніх комірок стека. При використанні команди RET відновлюється тільки стан програмного лічильника, а стан логіки переривання не змінюється.
Початкові адреси векторів переривань наведені в таблиці 1.
Таблиця 1 – Початкові адреси векторів переривань
Джерело переривання |
Адреса |
Зовнішнє переривання 0 |
0003H |
Переповнення таймера 0 |
000BH |
Зовнішнє переривання 1 |
0013H |
Переповнення таймера 1 |
001BH |
Послідовний порт |
0023H |
У складі стенда є дві окремі кнопки S10-S11, які можуть опитуватись як програмно, так і з використанням функцій переривань INT0-INT1 відповідно.
Також до складу стенда входить матрична 3x4 клавіатура SW3-SW14. Клавіатура підключена до шини даних ОЕОМ через мікросхему буфера DD1 74245 (АП6).
Опитування всієї клавіатури здійснюється за три рази (за один раз зчитується стан тільки одного стовпця клавіатури).
Щоб виконати опитування стовпця клавіатури (SW3,SW6,SW9,SW12; SW4,SW7,SW10,S13; або SW5,SW8,SW11,SW14) необхідно виставити на відповідній лінії адреси (A0,A1,A2) для першого, другого і третього стовпця відповідно до таблиці 2) рівень логічного нуля, а на інших лініях рівень логічної одиниці, і зчитати стан буфера клавіатури, підключеного до шини даних ОЕОМ як доступну для читання комірку пам’яті з адресою 9000h. Якщо кнопка клавіатури натиснута, то відповідний біт в зчитуваному байті буде дорівнювати нулю, якщо не натиснута – то одиниці.
Таблиця 2 – Адреси стовпців (кнопок)
Столбец (кнопки) |
Адрес |
1 (SW3,SW6,SW9,SW12) |
9006h |
2 (SW4,SW7,SW10,SW13) |
9005h |
3 (SW5,SW8,SW11,SW14) |
9003h |
5 Послідовність виконання роботи
5.1 Підготовка до роботи
Вивчити функціональну схему підключення пристроїв системи переривання, визначити способи звертання світлодіодів. Вивчити особливості опитування дискретних датчиків з механічними контактами.
5.1.2 Розглянути варіант
програми програмного опитування
дискретного сигналу (натисканн
CSEG
ORG 0
jb p3.2,$ ;опитування про натискання кнопки SW15, якщо
;кнопка
натиснута, програма
Continue:
mov A,#0
mov DPTR,#0A004h
movx @DPTR,A ;відмінити гасіння знакомісць стат_інд
mov A,#04h ;записати в Акк. число 04
mov DPTR,#0A000h ;встановити в DPTR адресу лівої пари
;знакомісць стат_інд
movx @DPTR,A ;засвітити число 04
mov DPTR,#0B000h ;встановити в DPTR адресу правої пари
;знакомісць стат_інд
movx @DPTR,A ;засвітити число 04
CALL ZAТ ;виклик підпрограми затримки
mov A,#00001111b
mov DPTR,#0A004h
movx @DPTR,A ;загасити всі знакомісця стат_інд
CALL ZAТ
jmp Continue ;перехід на початок програми
ZAD: ;подпрограмма задержки
mov R1,#0FFh
C2: mov R2,#0FFh
C4: djnz R2, C4
djnz R1, C2
ret ;вихід з підпрограми
END
5.1.3 Розробити алгоритм
програми і програму для викона
І підгрупа: Реалізувати опитування кнопки 4 клавіатури з відображенням її номеру на лівій парі знакомісць статичної індикації.
ІІ підгрупа: Реалізувати опитування кнопки 9 клавіатури з відображенням її номеру на правій парі знакомісць статичної індикації.
5.2 Завантажити програму
в стенд ОЕОМ. Впевнитись в
правильному виконанні. При
5.3 Записати лістинг правильно працюючої програми.
6 Зміст звіту
7 Контрольні питання:
Література