[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Два порта выделить под статические индикаторы.
4 бита на цифру. к ним дешифратор 514ИД2.
Вывод сигналов прост
mov p1,#43d
mov p2,#56d
на индикаторах число 4356.
Eсли препод упрется, что нужно HEX
mov p1,#43h
mov p2,#56h
Дешифраторы программируемые 155RE3.
Четыре бита на адрес, всегда разрешить выход.
Биты данных на Матрицу, между общим анодом и питанием ограничивающий резистор.
Клавиатуру прийдется сканировать динамически.
Четыре ножки на выход, пять на ввод.
На каждую выходную ножку по диоду катодом к ноге(носиком), для защиты от замыкания.
Например 4 ножки P0.0 .. P0.3 выходные.
P3.0 .. p3.4 ВХОДНЫЕ
вызов call KeyPressed
возврат A<>0FFh код клавиши
KeyPressed:
MOV P0,#0FEh
NextRow: ; перебор строк
JNB P3.0, Row00Pressed
JNB P3.1, ROW01Pressed
JNB P3.2, ROW02Pressed
JNB P3.3, ROW03Pressed
JNB P3.4, ROW04Pressed
rr a ; следующая строка
cjne a,#0EFh,NextRow ; все строки
mov a,#0FFh ; ничего не нажато
ret
Row00Pressed: ; в младшем полу-байте P0 номер строкм
mov a,P0
anl a,#0Fh ; очистили старшую половиy
orl a,#00h ; скан код
ret
Row01Pressed: ; в младшем полу-байте P0 номер строкм
mov a,P0
anl a,#0Fh ; очистили старшую половиy
orl a,#10h ; скан код получили
ret
ROW02Pressed:
mov a,P0
anl a,#0Fh ; очистили старшую половиy
orl a,#20h ; скан код получили
ret
ROW02Pressed:
mov a,P0
anl a,#0Fh ; очистили старшую половиy
orl a,#30h ; скан код получили
ret
E-mail: info@telesys.ru