Red de conocimiento informático - Computadora portátil - Lenguaje ensamblador del microcontrolador C51

Lenguaje ensamblador del microcontrolador C51

Sjmp$ es un bucle infinito que se utiliza a menudo para depurar rutinas de servicio de interrupción. Se utiliza para simular el programa principal, esperar la señal de interrupción y luego ejecutar la rutina del servicio de interrupción. Puede escribir una instrucción antes de esta instrucción, o puede escribir una instrucción después de esta instrucción, pero la última instrucción debe ejecutarse a menos que la última instrucción tenga un encabezado de programa y una instrucción de salto en la rutina del servicio de interrupción.

Existen muchos tipos de interrupciones, como interrupciones externas, interrupciones de temporizador e interrupciones de puerto serie.

Déjame escribir una interrupción del temporizador.

Interrupción del temporizador T0

ORG 0000H Dirección de entrada del programa principal después del reinicio

LJMP MAIN salta al programa principal

ORG 000BHT0 Interrupción del temporizador dirección de entrada

LJMP CTC0 rutina de servicio de interrupción salto largo

ORG 100h; dirección del programa principal

Principal:

MOV TL0, #156 ; Asignar valor inicial del temporizador T0

MOV TL1, #156; Recargar valor inicial

MOV TMOD, #00000100 b; .

SETB ET0; habilitar interrupción de desbordamiento T0

SETB EA; interrumpir

SETB TR0; iniciar T0

$SJMP; Simule el programa principal esperando una interrupción.

CTC 0:; Rutina de servicio de interrupción (abreviatura de rutina de servicio de interrupción)

CPL p 1.0;

RETI; volver al punto de interrupción

El programa anterior interrumpe cada 100 ciclos de la máquina en el momento T0, invierte P1.0 sin interrupción y hace que P1.0 genere una onda cuadrada A con un período de 200us.

El cartel puede echar un vistazo a las preguntas que respondí. Muchas de ellas son interrupciones.