Intel 8051 EdSim51 7-сегментный дисплей

Почему, когда я удаляю «B» в двоичном коде, он путается при отображении числа?

ORG 0000H
START:
    SETB P3.3
    SETB P3.4
    MOV P1, #11111001
    CALL DELAY
    CLR P3.3
    MOV P1, #10100100
    CALL DELAY
    CLR P3.4
    SETB P3.3
    MOV P1, #10110000
    CALL DELAY
    CLR P3.3
    MOV P1, #10011001
    CALL DELAY
    JMP START
DELAY: MOV R0, #45H
    DJNZ R0, $
    RET
END

Спасибо


person Araine    schedule 11.06.2020    source источник


Ответы (1)


Потому что ассемблер смотрит на последний символ, чтобы определить основание числа.

Если вы используете:

MOV P1, #10B

Это означает двоичное значение 10, дающее десятичную 2.

Если вы используете:

MOV P1, #10

Это означает десятичное число 10.

Если вы используете:

MOV P1, #10H

Это означает шестнадцатеричное значение 10, что дает десятичное число 16.

Примечание. Ваш ассемблер должен был предупредить вас о переполнении числа или около того.

person the busybee    schedule 11.06.2020