1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

[assembler]доработка программы с индикаторами

Тема в разделе "Остальные языки программирования", создана пользователем Rydj, 15 май 2011.

  1. Rydj

    Rydj Гость

    Репутация:
    0
    Доброго времени суток имеется задание: имеется 16 бинарных датчиков, формирующих сигналы с уровнями логических 0 или 1. Необходимо с периодичностью в 1 секунду производить опрос всех датчиков, подсчитывать сумму единиц результата опроса и выводить ее на двухразрядный семисегментный индикатор в виде десятичного числа.

    На практике разбирали немного похожую программу:
    Написать программу, постоянно опрашивающую порт ввода 1, на четыре младших разряда которого поступает двоично-десятичный код, и выводящую соответствующую этому коду десятичную цифру на семисегментый индикатор, подключенный к порту вывода 2.
    Решил взять её за основу
    Код:
    START:	IN	01h;ввести байт данных из порта ввода 1.
    ANI	00001111b		  ;обнулить не интересующие нас четыре старших				  разряда введенного байта.
    LXI	DE,0000h		  ;обнулить регистровую пару DE.
    MOV	E,A					;переслать двоичный код индицируемой цифры в младший регистр E регистровой пары DE.
    LXI	HL,TABL		  ;записать в регистровую пару HL адрес, соответствующий метке TABL.
    DAD	DE				  ;сложить содержимое регистровых пар DE и HL, результат занести в HL, т.е. в HL сформировался адрес ячейки памяти с индицируемым семисегментным кодом.
    MOV	A,M				 ;переслать семисегментный код из адресованной ячейки памяти в аккумулятор.
    OUT	02h			 ;Вывести семисегменый код в порт вывода 2.
    JMP	START;перейти в начало программы.
    TABL:	DB	3Fh;занести в последо-вательные ячейки памяти таблицу семисегментных кодов, начиная с ячейки с адресом, соответствую-щим метке TABL*.
    
    DB	06h	
    DB	5Bh	
    DB	4Fh	
    DB	66h	
    DB	6Dh	
    DB	7Dh	
    DB	07h	
    DB	7Fh	
    DB	6Fh
    Я так понял что мне нужно 2 порта каждый порт опрашивает по 8 датчиков, ток как реализовать это я не понимаю
     
Загрузка...

Поделиться этой страницей