Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1391 | Дата выхода: | 04.12.2010, 05:30 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 223 / 66 | Вопросов / ответов: | 1 / 1 | Вопрос № 180950: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Нужно выполнить задание для микроконтроллера MCS-51 на Ассемблере. ССЫЛКА ЗАДАНИЯ URL >> Вопрос № 180950: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Нужно выполнить задание для микроконтроллера MCS-51 на Ассемблере. ССЫЛКА ЗАДАНИЯ URL >> E-mail >> Отправлен: 26.11.2010, 05:06 Вопрос задал: Sergio (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, 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 кб) ----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 01.12.2010, 14:57 Номер ответа: 264469 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 264469 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий