Red de conocimiento informático - Conocimiento del nombre de dominio - Buscamos urgentemente programación de ensamblaje de microcontroladores: conteo de claves (0-255).

Buscamos urgentemente programación de ensamblaje de microcontroladores: conteo de claves (0-255).

Hay dos métodos para lograr el efecto, uno es el método de contrainterrupción. Se trata de diseñar un contador de 8 bits. Cuando el contador llegue a 256, se activará una interrupción y luego se transferirá el programa de interrupción de borrado correspondiente. Otro método es el método del contador suave. Es para definir un contador suave, y luego cada vez que llega un pulso, el estado del contador suave se detectará primero. Si el valor del contador suave no llega a 256, entonces el dígito de las unidades se incrementará en uno. llega a 256, irá al programa de compensación. En este momento, el conteo podrá comenzar desde 000.

Aquí se utiliza el método de contador suave. La conexión del hardware es la siguiente: el puerto p0 está conectado a los ocho segmentos del tubo digital, y p2.4 a p2.6 del puerto p2.7 están conectados a los dígitos de las unidades, decenas y centenas respectivamente. La interrupción externa 1 está conectada al botón. La tabla de códigos debe modificarla usted mismo. El programa funciona bien en la placa casera. Cabe señalar que es mejor conectar un condensador 103 entre la interrupción 1 y tierra. Evite múltiples desencadenantes. La frecuencia de conteo de este programa no es muy alta, aproximadamente 3 veces por segundo. Pero debería funcionar para entradas clave. Si cree que la frecuencia de conteo es demasiado baja, puede contactarme. Mantener presionado este programa no continuará aumentando a menos que lo suelte y presione nuevamente.

GEJ EQU 35H; Definir el registro de unidades

SHIJ EQU 36H; Definir el registro de decenas

BAIJ EQU 37H; Definir el registro de centenas

QIANJ EQU 38H; Definir registro de miles

CON EQU 39H; Definir contador suave

ORG 00H; Programar primera dirección

AJMP START; INICIO

ORG 13H

AJMP INTT1

ORG 30H;dirección INICIO

INICIO: LCALL CHUSHI;llamar a la subrutina de inicialización

SETB EA

SETB EX1

SETB IT1

PRINCIPAL: LCALL XIANSHI; subrutina de visualización de llamada

AJMP PRINCIPAL; PRINCIPAL para ejecución

CHUSHI: MOV GEJ, #0; borrar 0

MOV SHIJ, #0; borrar 0

MOV BAIJ, #0;

MOV QIANJ, #0; borrar 0

MOV CON, #0; borrar 0

RET; XIANSHI

LCALL XIANSHI

INC CON

MOV A, CON

CJNE A, #256, SIGUIENTE

AJMP QING

NEXT: INC GEJ; incrementa el contador de unidades en uno

MOV A, GEJ transferencia de datos

CJNE A, # 10, OVER; Juicio de comparación

MOV GEJ, #0; Borrar a 0

INC SHIJ; Contador de decenas más uno

MOV A, SHIJ

CJNE A, #10, OVER; juicio de comparación

MOV SHIJ, #0; claro a 0

INC BAIJ; contador de cien más uno

MOV A, BAIJ; transferencia de datos

CJNE A, #10, OVER; juicio de comparación

MOV BAIJ, #0; contador de miles más uno

MOV A, QIANJ; transferencia de datos

CJNE A, #10, OVER; juicio de comparación

MOV QIANJ, # 0; 0

OVER: RETI; interrumpir retorno

QING: MOV GEJ, #0

MOV SHIJ, #0

MOV BAIJ, #0

MOV QIANJ, #0

MOV CON, #0

LCALL XIANSHI

RETI

XIANSHI: MOV DPTR, #TABLE; Obtener datos de la tabla

p>

MOV R1, #20; Asignar R1 20 veces

BUCLE: MOV A, GEJ; Transferencia de datos

MOVC A, @A DPTR Obtener la dirección correspondiente

MOV P2, #0EFH; abre el primer dígito desde la izquierda

MOV P0, A; envía el código de segmento

LCALL DELY1MS; subrutina

MOV A, SHIJ; transferencia de datos

MOVC A, @A DPTR; obtener la dirección correspondiente

MOV P2, #0DFH;

p>

MOV P0, A; enviar código de segmento

LCALL DELY1MS; retraso

MOV A, BAIJ

MOVC A, @ A DPTR; obtener dirección

MOV P2, #0BFH; abrir el tercer bit

MOV P0, A; LCALL DELY1MS; retraso

MOV A, QIANJ; transferencia de datos

MOVC A, @A DPTR; obtener dirección

MOV P2, #07FH; dígito

MOV P0, A; enviar código de segmento

LCALL DELY1MS; retraso

DJNZ R1, LOOP menos una rotación distinta de cero

RET; retorno

DELY1MS: MOV R7, #250; subrutina de retardo

DL1: NOP; instrucción vacía

NOP;

DJNZ R7 , DL1; menos uno, giro distinto de cero

RET; retorno

TABLA: DB 028H, 0EBH, 032H, 062H, 0E1H, 064H, 024H, 0EAH, 020H , 060H

FIN; La compilación finaliza