Консультация № 180950
26.11.2010, 05:06
55.00 руб.
0 7 1
Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Нужно выполнить задание для микроконтроллера MCS-51 на Ассемблере.
ССЫЛКА ЗАДАНИЯ URL >> E-mail >>

Обсуждение

давно
Посетитель
7438
7205
26.11.2010, 21:35
общий
Чего-то Ваша ссылка не открывается.
Нажмите кнопочку мои файлы, поместите Ваш файл на наш сервер, и дайте ссылочку
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
27.11.2010, 02:48
общий
Если не загрузится или битый дайте знать перезалью https://rfpro.ru/upload/3754.
Неизвестный
27.11.2010, 02:49
общий
URL >>
Неизвестный
27.11.2010, 02:57
общий
URL >>
давно
Посетитель
7438
7205
27.11.2010, 03:06
общий
Ок, посмотрю на досуге...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
27.11.2010, 03:13
общий
Огромное спасибо!!!
давно
Посетитель
7438
7205
01.12.2010, 14:57
общий
это ответ
Здравствуйте, Sergio!
Вот Вам программа.
Код:

mov dptr,#table ;адрес таблицы кодов для индикации
mov p3,#0 ;вначале все погасим
main_loop: ;основной цикл сканирования и индикации
mov r2,#4 ;число линий сканирования
mov r3,#1 ;код для выбора линии сканирования
mov r4,#0 ;скан-код - индекс в таблице кодов для индикации
scan_loop: ;цикл проверки линии сканирования
mov p1, r3 ;задаем линию сканирования в p1.0-p1.3
mov a, p1 ;читаем результат из p1.4-p1.6
swap a ;перенесем биты 4-6 в 0-2 (для удобства анализа)
mov r5,#3 ;число выходных линий
line_loop: ;цикл анализа полученных бит
rrc a ;сдвинем аккумулятор на 1 бит вправо, младший бит в С
jnc key_found ;если С = мл.бит = 0, то было нажатие!
inc r4 ;код следующей кнопки
djnz r5, line_loop ;по всем битам линии
;линия ничего не дала - переходим на следующую
mov a, r3 ;сдвинем код выбора линии сканирования на 1 влево
rl a ; (это можно делать только в аккумуляторе)
mov r3, a
djnz r2, scan_loop ;по всем линиям сканирования
;увы, ничего не было нажато
jmp main_loop ;идем на повтор сканирования,
;ни индикаторе ничего не меняем
key_found: ;есть нажатие!
mov a, r4 ;скан-код клавиши (0-11)
movc a,@a+dptr ;читаем код для индикации
mov p3, a ;выводим
jmp main_loop ;и на повтор сканирования

table: ;таблица для задания кодов для индикации
db 00010000b, 00100000b, 00110000b ;1,2,3
db 01000000b, 01010000b, 01100000b ;4,5,6
db 01110000b, 10000000b, 10010000b ;7,8,9
db 10110000b, 00000000b, 10100000b ;*,0,#

end

Вместе с блок-схемой - block-schema.doc (34.0 кб)
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа