[an error occurred while processing this directive] [an error occurred while processing this directive]
Можно так(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено misyachniy 21 июня 2002 г. 13:39
В ответ на: Помогите пожалуйста!!!! Кто знает MKS 51 отправлено Китикэт 21 июня 2002 г. 11:31


Два порта выделить под статические индикаторы.
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