Explique el programa de ensamblaje del microcontrolador 51: ¡No estoy seguro de la función de este programa! Espero que alguien pueda darme algún consejo. ¡Gracias!
Este es un programa que convierte números binarios de 8 dígitos en formato decimal, o se llama calculadora.
Los cambios son para el éxito de la simulación. Bajo a la derecha. ?1101B? convertido a exactamente 13
; código de segmento de interfaz p3 a, b, c, d, e, f, g,? código de segmento de interfaz p2.5-7, ¿qué tubo digital elegir? a_bit?equ?20h?;almacenamiento de un solo dígito b_bit?equ?21h?;almacenamiento de decenas de dígitos org0000H
SJMP?main
ORG0030H
main:? ?p0,#0ffh?;Inicializar puerto p0
bucle:?mov?a,p0?;Convertir el número hexadecimal en a a decimal
mov?b,#10;Decimal /10=Decimal
div?ab
mov?b_bit,a?;El dígito de las decenas está en a
mov?a_bit,b?;Las unidades el dígito está en b mov?dptr,#numtab?;Especifique la dirección inicial de la búsqueda en la tabla mov?a,a_bit?;Obtenga el dígito de las unidades MOVC?A,@A+DPTR?; /p>
mov?p3,a acall?d1ms mov?p2,#40h?;Mostrar dígitos individuales acall?d1ms
mov?p2,# 0ffh;Proteger todas las pantallas
acall?d1ms mov?dptr,#numtab?;Especifique la dirección inicial de la búsqueda en la tabla mov?a,b_bit?;Tome el número de diez dígitos MOVC?A,@A+DPTR?; para decenas
mov?p3,a
call?d1ms mov?p2,#80h?;Mostrar decenas de dígitos
acall ?d1ms mov?p2, #0ffh?;Bloquear todas las pantallas SJMP?loop
d1ms:? MOV?R2,#200 DJNZ?R2,$
nop RET
numtab:? DB?3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH
end?
Mira esta oración,?loop :?mov?a, p0?;Convierte el número hexadecimal de a a decimal.
La conversión comienza después de enviar p0? a A?. ?No agregué esto. No sé dónde está ubicado el fpga del que hablas. Por supuesto, cambiar p0 a fpga es la función que mencionaste.
En resumen, comprenda que el número hexadecimal se convierte en un número decimal de 2 dígitos y luego se muestra. En cuanto a de dónde proviene el número hexadecimal, todo depende de dónde se usa.