Red de conocimientos turísticos - Conocimientos sobre calendario chino - Instrucciones de análisis del ensamblador para la sincronización del cálculo del microcontrolador.

Instrucciones de análisis del ensamblador para la sincronización del cálculo del microcontrolador.

SHUZHI EQU 58H; Nombre 58H SHUZHI

ORG 0000H

AJMP MAIN El programa salta a MAIN

ORG 0030H; El programa del microcontrolador generalmente comienza desde la dirección 0030H y se ejecuta hacia abajo

PRINCIPAL: MOV P1, #0FFH; inicialización, configurando los puertos P1 y P3 en nivel alto (esto está relacionado con la protección de las E/S del microcontrolador). puerto relacionado); punto SP a 60H

MOV P3, #0FFH;

MOV SP, #60H

CLR EA; /p>

CLR ES; Deshabilitar las interrupciones del puerto serie

MOV R6, #10; Asignar R6 #10

MOV R7, #20; >

MOV P3, #0C0H; configurar el puerto P3 en C0H. P3 parece estar relacionado con la pantalla (porque no hay diagrama de hardware), ese es el contenido de la pantalla inicial

MOV R0, #00H; establezca R0 en 00H

MOV R1, #00H; asigne R0 a 00H

MOV A, #00H; asigne el acumulador A a 00H (las tres oraciones anteriores están todas en el registro de inicialización)

MOV SHUZHI, #00H; asigna 58H como 00H (se deben contar 58H)

MOV DPTR, #TABLE; envía #TABLE a DPTR, que apunta al tabla, para el siguiente MOVC A, @A DPRT. Llame al formulario para la inicialización.

BUCLE: JNB P1.0, JIAYI; salte si P1.0 no es igual a 1, continúe juzgando si es igual a 1. (Esto debería ser un tipo de interruptor. Cuando se presiona, será 0 y saltará)

AJMP LOOP

JIAYI: JNB P1.0, $ determina si P1.0 es; no Si es igual a 1, continuará juzgando, si es igual a 0, retrasará y continuará el siguiente programa (el significado aquí es juzgar si se ha liberado el interruptor)

LCALL DELAY; extiende el tiempo una vez y llama a la subrutina de extensión

MOV A, SHUZHI; envía 58H a A

INC A; aumenta el contenido en el registro A en 1

MOV SHUZHI, A; A devuelve 58H (el significado aquí significa que el recuento aumenta en 1)

MOVC A, @A DPTR la primera vez que presiona el interruptor es A=; 01H, luego C0H se envía a A

MOV P3, A envía C0H al puerto P3, lo que debería mostrarse

CLR P1.1; .

CLR P1.3; enciende la luz B.

MOV TMOD, #00000001B; El temporizador/contador 0 funciona en modo 1

FENZHONG: MOV R7, #20; Asignar R7 #20

CONGLAI: MOV TH0, #3CH; Asigna el valor inicial a los 8 bits altos del temporizador 0

MOV TL0, #0B0H; Asigna el valor inicial a los 8 bits bajos

SETB TR0; en la interrupción del temporizador

LOOP1: JNB P1.0, JIXU_XIANSHI; juzgue P1.0 Si no es igual a 1, saltará al temporizador 0. Si es igual a 1, lo hará. juzgue si el temporizador programado se ha desbordado

JBC TF0, YICHU_PANDUAN; determine si el temporizador 0 se ha desbordado. Si no, vuelva a juzgar P1.0. Si se desborda, salte a YICHU_PANDUAN y reinicie.

AJMP LOOP1

YICHU_PANDUAN: DJNZ R7, CONGLAI; (Los efectos anteriores se recircularán a continuación)

DJNZ R6, FENZHONG

CLR TR0

AJMP PRINCIPAL

JIXU_XIANSHI: CLR TR0

CLR TF0

JNB P1.0, JIAYI2

AJMP JIXU_XIANSHI

JIAYI2: JNB P1.0, $

RETARDO DE LLAMADA

JNB P1.0, $

RETARDO DE LLAMADA

MOV A, SHUZHI

INC A

MOV SHUZHI, A

MOVC A, @A DPTR

MOV P3, A

MOV A, SHUZHI

CJNE A, #04H, JIXU_XIANSHI

RETARDO DE LLAMADA LC

RETARDO DE LLAMADA LC

RETARDO DE LLAMADA

RETARDO DE LLAMADA

RETARDO DE LLAMADA

RETARDO DE LLAMADA

CLR P1.2 Encienda el relé A; .

CLR P1.4; Enciende la luz A.

RETARDO LLAMADA

RETARDO LLAMADA

RETARDO LLAMADA

SETB P1.1 Apague el relé B.

SETB P1.3; Apague la luz B

AJMP $; AMJP $ y SJMP $ indican saltar a esta línea, que es un bucle infinito, lo que hace que el programa se detenga. aquí.

DELAY: MOV R0, #255; ----- Subrutina de retardo-----

TURN: MOV R1, #255

DJNZ R1 , $

DJNZ R0, TURN

RET

TABLA: DB 0C0H, 0F9H, 24H, 30H, 19H; definición de datos de visualización de siete segmentos DB 0C0H, 0F9H, 0A4H, 0B0H, 99H; 01234

FIN

t type="text/javascript" src="../css/tongji.js">