Red de conocimientos turísticos - Información de alquiler - Problemas con la programación del microcontrolador (ansioso, gracias por tu ayuda)

Problemas con la programación del microcontrolador (ansioso, gracias por tu ayuda)

Parece que el programa del cartel no ha sido depurado y tiene algunas imperfecciones, como las siguientes:

ORG 0000H

LTMP START debería ser LJMP, el siguiente; Igual que

ORG 0070H; esta es la dirección alta y debe estar detrás de 001B.

LTMP MAIN

ORG 001BH debe intercambiarse con 0070

ATMP SERVE; esto debería ser AJMP SERUE, lo mismo a continuación.

INICIO: JB P1.0, ST es incorrecto.

MOV P2, # 0FH;

MOV R0, #0FH; Debería ser 0F0, si el oscilador de cristal es 12.

MOV R1, #0D8H

MOV B, # 02H

LCALL MAIN; Ejecute este aquí. El programa se transferirá a MIAN para su ejecución, espere adentro y no volverá a ejecutarse.

MOV P0, #0FH; Los siguientes programas no se ejecutarán.

MOV R0, #0B0H; No

MOV R1, #3CH;

MOV B, #96H; no

LCALL MAIN; no se ejecutará

MAIN: MOV TM0D, #01H aquí debe ser TMOD. >

MOV TL0, R0

MOV TH0, R1

SETB TR0

SETB ET0

SETB EA

STMP $

SERUE: MOV TL0, R0

MOV TH0, R1

DTNZ B, BUCLE

OLR TR0; debería ser CLR tiene razón

LOOP: RETI

END; compilado hasta este punto END no significa el final del programa, solo significa eso. el segmento del programa termina aquí. Debería ser SJMP $, que termina dinámicamente.

ST: END; este programa no será compilado;

;;;;;;;; ;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;

El El siguiente es el programa que compilé. Todavía uso un temporizador para retrasar.

La depuración pasó. Para referencia del cartel, espero que sea útil

;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;

ORG 0;

AJMP MIAN;

ORG 000BH

AJMP AGA; Entrada de interrupción

ORG 0030H

MIAN: MOV TMOD, #01H Modo de trabajo 1

p>

MOV TH0, #0B1H ; Valor de asignación 20MS

MOV TL0, #0E0H

SETB EA ; Activar interrupción

SETB ET

0; active la interrupción T0

JB P1.0, $; compruebe si P1.0 es 0, no espere.

MOV P2, #0FH; P2 baja. Salida de bit de nivel alto.

SETB TR0; Iniciar T0

CLR A; Bit de bandera

Esperar interrupción

AGA: CJNE A, 0, LOOP; el bit de bandera es 0, ejecución secuencial (segunda interrupción de 15 MS, la bandera es 1, cambie a LOOP)

MOV P0, #0FH; P0 Los cuatro bits inferiores del puerto generan un nivel alto

MOV TH0, #15H; asigna el valor 15MS

MOV TL0, #0A0H

SETB 00H; el bit de bandera a 1

RETI; Regreso

LOOP: CLR TR0; Retraso 15MS para. p> FINAL