Лабораторна робода №5 Зчитування інформації з матричної клавіатури
Лабораторна робода №5 Зчитування інформації з матричної клавіатури Тема: Зчитування інформації з матричної клавіатури.
Мета: Вивчити взаємодію контролера із засобами вводу даних, вивід даних на засоби відображення інформації.
Порядок виконання роботи: 1. Вивчити алгоритми зчитування даних із клавіатури. 2. Розробити алгоритм індивідуального завдання до початку заняття. 3. Розробити програму і скомпілювати її. 4. Завантажити програму в стенд, переконатись в правильності її роботи, при негативному результаті виявити допущені помилки і виправити їх. Повторити завантаження програми в стенд.
Рисунок 5. 1 – Схема для лабораторної роботи №5
Короткі теоретичні відомості Зчитування із клавіатури відбувається методом сканування по рядках. Для здійснення зчитування із першого стовпця потрібно записати в порт Р2 адресу 0EFh, і зчитати дані із старшого півбайта порту Р0. Для цього необхідно задати напрям передачі даних буфера DD6 на прийом інформації (встановити вивід DIR в логічний нуль), це значення задається портом мікроконтролера Р3. 6. Для роботи на прийом від шини до контролера встановити P3. 6 в логічний 0. При цьому якщо натиснута кнопка із першого рядка, то значення порту Р0. 0 буде рівне логічному 0, якщо натиснута кнопка із другого рядка, то Р0. 1=0 і т. д. Для зчитування із другого стовпця в порт Р2 записується адрес 0DFh, третього – 0BFh. Зчитування із рядків клавіатури слід проводити не частіше ніж через 50мс, через те, що для будь-якого механічного контакту характерне явище вібрації контактної пари, протягом якої контакт декількаразово розмикається-замикається, протягом приблизно 8-12мс.
Приклад програми для лабораторної роботи №5 Програма зчитує дані з клавіатури і засвічує відповідний світлодіод. dat Equ R0 adr Equ R1 Temp1 Equ R2 Temp2 Equ R3 ; key1 Equ R4 ; key2 Equ R5 stec Equ 0x02
Org 0x000 jmp run
cseg org 0x033
run:
stovb1: mov adr, #01100000b mov P2, adr clr p3. 6 mov a, p0 next0: jb p0. 0, next1 call svit8 jmp run next1: jb p0. 1, next2 call svit5 jmp run next2: jb p0. 2, next3 call svit2 jmp run next3: jb p0. 3, stovb2 call gas1 jmp run
stovb2: mov adr, #01010000b mov P2, adr clr p3. 6 mov a, p0 next02: jb p0. 0, next12 call svit7 jmp run next12: jb p0. 1, next22 call svit4 jmp run next22: jb p0. 2, next32 call svit1 jmp run next32: jb p0. 3, stovb3 call svit7 call svit6 call svit5 call svit4 call svit3 call svit2 call svit1 jmp run
stovb3: mov adr, #00110000b mov P2, adr clr p3. 6 mov a, p0 next03: jb p0. 0, next13 call svit6 jmp run next13: jb p0. 1, next23 call svit3 jmp run next23: jb p0. 2, next33 call svit2 call svit3 call svit4 call svit5 call svit6 call svit7 call svit8 jmp run next33: jb p0. 3, stovb1 call gas1 jmp run
svit1: mov dat, #01111111b mov adr, #00000111b call writ call ldelay ret svit2: mov dat, #10111111b mov adr, #00000111b call writ call ldelay ret svit3: mov dat, #11011111b mov adr, #00000111b call writ call ldelay ret svit4: mov dat, #11101111b mov adr, #00000111b call writ call ldelay ret svit5: mov dat, #11110111b mov adr, #00000111b call writ call ldelay ret svit6: mov dat, #11111011b mov adr, #00000111b call writ call ldelay ret svit7: mov dat, #11111101b mov adr, #00000111b call writ call ldelay ret svit8: mov dat, #11111110b mov adr, #00000111b call writ call ldelay ret gas1: mov dat, #11111111b mov adr, #00000111b call writ call ldelay ret Writ: setb P3. 6 mov P0, dat mov P2, adr nop mov P2, #0x00 ret Delay: mov Temp1, #0xFF loop: dec Temp1 mov Temp2, #0xFF djnz Temp2, $ cjne Temp1, #0x00, loop ret Ldelay: call delay call delay call delay call delay call delay call delay call delay call delay call delay call delay RET END
Варіанти індивідуальних завдань
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|