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 p>
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 bitMOV 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