Red de conocimiento informático - Conocimiento de la instalación - Por favor comente sobre este ensamblador

Por favor comente sobre este ensamblador

CH EQU 30H; defina CH como 30H

DPCNT EQU 31H; defina DPCNT como 31H (la unidad 31H se utiliza para almacenar la cantidad básica de la dirección de compensación en la tabla de datos DPCD). )

DPBUF EQU 33H; define DPBUF como 33H

GDATA EQU 32H; define GDATA como 32H (la unidad 32H se utiliza para almacenar la cantidad de datos leídos y convertidos)

ST BIT P3.0; Definir ST como P3.0 bit

OE BIT P3.1; Definir OE como P3.1 bit

EOC BIT P3.2; Defina EOC como P3 .2 bits

ORG 00H; ensamble el siguiente programa y guárdelo en la unidad después de las 0000 H de ROA

INICIO del programa LJMP, gire a INICIO

ORG 0BH; ensamble el siguiente programa y guárdelo en la unidad después de 000BH de ROA

LJMP T0X; interrumpa la entrada, transfiera a interrumpir T0X

ensamble el ORG 30H; siguiente programa y guárdelo en Unidades ROA después de 0030H

INICIO: MOV CH,#0BCH; envíe datos 0BCH a la unidad 30H

MOV DPCNT,#00H; borre la unidad 31H

MOV R1,#DPCNT; Enviar datos 31H a R1 (como valor inicial del recuento de unidades de trabajo)

MOV R7,#5; el recuento de ciclos)

MOV A,#10; Enviar datos 10 a A

MOV R0,#DPBUF; Enviar datos 33H a R0

LOP: MOV @R0,A;

INC R0

DJNZ R7,LOP; establece las unidades 33H--37H al valor inicial 10

MOV @R0,# 00H

INC R0

MOV @R0,#00H

INC R0

MOV @R0,#00H Configure el 38H-; -3AH unidad al valor inicial 0

MOV TMOD,#01H; configure el modo T0 1 para que funcione

MOV TH0,#(65536-4000)/256

MOV TL0,#(65536-4000) MOD 256; Establecer el valor de conteo inicial de T0

SETB TR0; Iniciar conteo de T0

Permitir interrupción de desbordamiento de T0

p>

SETB EA; habilitar interrupción

p>

WT: CLR ST; borrar bit P3.0

SETB ST; >

CLR ST; borre el bit P3.0 (genera pulso de conversión de inicio)

ESPERE: JNB EOC, ESPERE si P3.2 es 0, espere (espere si la conversión A/D no es completado)

SETB OE; se establece si la conversión A/D se completa P3.1 bit

MOV GDATA,P0 Lee la cantidad digital convertida a la unidad 32H

<; p> CLR OE; Borrar P3.1 bit

MOV A, GDATA

MOV B,#100

DIV AB Divida una cantidad digital por 100; el cociente está en A (es decir, el dígito de las centenas) y el resto está en B

MOV 33H,A el dígito de las centenas se almacena en la unidad 33H

MOV A, B

MOV B,#10

DIV AB; el primer resto es Dividir por 10, el cociente está en A (es decir, el dígito de las decenas) y el resto está en B (es decir, un solo dígito)

MOV 34H,A; el dígito de las decenas se almacena en la unidad 34H

MOV 35H,B;

Los datos se almacenan en la unidad 35H

SJMP WT; se transfieren a la ubicación WT

T0X: NOP; interrumpir el programa

MOV TH0,#(65536-4000) /256

MOV TL0,#(65536-4000) MOD 256; Establece el valor de recuento inicial de T0

MOV DPTR,#DPCD Obtenga la primera dirección de la tabla de datos DPCD;

MOV A,DPCNT; envía el contenido de la unidad 31H a A

ADD A,#DPBUF; suma las centenas del número

MOV R0, A

MOV A,@R0; Genera la dirección de desplazamiento en la tabla de datos DPCD

MOVC A,@A+DPTR Lee el código de visualización

MOV; P1,A; genera el código de visualización

MOV DPTR,#DPBT; obtiene la primera dirección de la tabla de datos DPBT

MOV A,DPCNT;

MOVC A,@A +DPTR; Leer la dirección del tubo digital de visualización

MOV P2,A; Generar la dirección del tubo digital de visualización

INC DPCNT; 1 al contenido de la unidad 31H (prepárese para la siguiente salida de datos)

p>

MOV A,DPCNT;

CJNE A,#8,NEXT; No se emiten todos los 8 tubos digitales, irá a NEXT

MOV DPCNT,#00H ; Cuando todos los datos de visualización de los 8 tubos digitales se emiten, borre la unidad 31H

NEXT; : RETI; retorno de interrupción

DPCD: DB 3FH, 06H, 5BH, 4FH, 66H

DB 6DH,7DH,07H,7FH,6FH,00H

DPBT: DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH

p>

END