Лабораторна робода №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


 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: