В чем здесь ошибка? - Микроконтроллеры

Узнай цену своей работы

Формулировка задачи:

     .ORG0H;
AJMP  BEGIN  ; переход на начало программы
.ORG 30H;
 ;настройка*Р1.0...Р1.3*на*ввод,*установка*Р1.4*в*“0”
BEGIN: 
    MOV  P1,#00001111b;
    JNB  P1.3,$ ;*ожидание*сигнала*разрешения
    MOV C,P1.2  ;*С=Х
    ANL  C,P1.1  ;*C=X&Y
  ;*запись*промежуточного*результата*в*битовую*память
  MOV 00, C; 
  MOV  C, P1.2 ; C=X
  ANL  C,\P1.0 ;C=X&^Z
  ;выдача*сигнала*подтверждения*конца*ввода
  SETB* P1.4;
  JB  P1.3,$  ;*ожидание*снятия*сигнала*разрешения
 ORL C, 00  ;*C=X&YvX&^Z
  CPL  C ;*C=^(X&YvX&^Z)
 MOV P1.5,C  ;*выдача*результата
 AJMP BEGIN ;*переход*на*начало*программы
  .END;
MK intel 8051

Решение задачи: «В чем здесь ошибка?»

textual
Листинг программы
    ORG 0H;
    AJMP BEGIN;
    ORG 30H;
BEGIN: 
    MOV  P1,#00001111b;
    JNB  P1.3,$;
    MOV C,P1.2 ;
    ANL  C,P1.1 ;
    MOV 00, C; 
    MOV  C, P1.2; 
    ANL  C,P1.0;
    SETB P1.4;
    JB P1.3,$;
    ORL C,00;
    CPL C;
    MOV P1.5,C;
    AJMP BEGIN;
    END;

Объяснение кода листинга программы

  1. ORG 0H; Данная команда устанавливает начальный адрес программы в 0H.
  2. AJMP BEGIN; Команда переходит к метке BEGIN, позволяя продолжить выполнение программы.
  3. ORG 30H; Устанавливает начальный адрес в 30H.
  4. MOV P1,#00001111b; Команда MOV используется для копирования значения из памяти в регистр. Здесь она устанавливает значение регистра P1 равным 00001111b.
  5. JNB P1.3,$; Команда JNB используется для проверки бита 3 регистра P1. Если бит 3 равен 0, то выполняется внутренняя команда JNB, которая переходит к следующему метке.
  6. MOV C,P1.2 ; Команда MOV используется для копирования значения из регистра P1.2 в регистр C.
  7. ANL C,P1.1 ; Команда ANL используется для логического ИЛИ двух значений. Здесь она выполняет логическое ИЛИ между значением в регистре C и битом 1 регистра P1.
  8. MOV 00, C; Команда MOV используется для копирования значения из памяти в регистр. Здесь она устанавливает значение регистра C равным 00.
  9. MOV C, P1.2; Команда MOV используется для копирования значения из регистра C в регистр P1.2.
  10. ANL C,P1.0; Команда ANL используется для логического ИЛИ двух значений. Здесь она выполняет логическое ИЛИ между значением в регистре C и битом 0 регистра P1.
  11. SETB P1.4; Команда SETB используется для установки бита 4 регистра P1.
  12. JB P1.3,$; Команда JB используется для проверки бита 3 регистра P1. Если бит 3 равен 1, то выполняется внутренняя команда JB, которая переходит к следующему метке.
  13. ORL C,00; Команда ORL используется для логического ИЛИ двух значений. Здесь она выполняет логическое ИЛИ между значением в регистре C и значением 00.
  14. CPL C; Команда CPL используется для инвертирования значения регистра C.
  15. MOV P1.5,C; Команда MOV используется для копирования значения из регистра C в регистр P1.5.
  16. AJMP BEGIN; Команда AJMP используется для возврата к метке BEGIN, позволяя продолжить выполнение программы.
  17. END; Окончание программы. Ошибки в коде не указаны.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы