Red de conocimiento informático - Conocimiento sistemático - El problema con el programa ensamblador 1602, por qué no se muestra nada. Soy un novato, sospecho que cometí un error al escribir el programa.

El problema con el programa ensamblador 1602, por qué no se muestra nada. Soy un novato, sospecho que cometí un error al escribir el programa.

;Control de cuatro teclas, P3.2 es la tecla de selección de tiempo, presione la primera vez para ajustar los segundos, presione la segunda vez para ajustar los minutos, presione la tercera vez para ajustar el reloj

;P3.3 es la tecla más 1

;P3.4 es la tecla menos 1

;P3.5 es la clave de confirmación

RS BIT P2.0

RW BIT P2.1

E BIT P2.2

LCD EQU P0

H_BIT EQU. 20H

M_BIT EQU 21H

S_BIT EQU 22H

HH EQU 23H

MM EQU 24H

SS EQU 25H

HH_BIT EQU 26H

MM_BIT EQU 27H

SS_BIT EQU 28H

;=========== =====

ORG 00H

AJMP PRINCIPAL

ORG 0BH

AJMP HORA0

ORG 30H

;========Programa principal=======================

PRINCIPAL:

MOV SP,#60H

MOV P1,#00H

MOV R5,#00H

MOV H_BIT,#00H

MOV M_BIT,#00H

MOV S_BIT,#00H

MOV HH_BIT,#00H

MOV MM_BIT,#00H

MOV SS_BIT, #00H

MOV HH,#00H

MOV MM,#00H

MOV SS,#00H

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

SETB EA

SETB ET0

SETB TR0

MOV LCD,#01H

LCALL LCDWC

;=============== ====== =================

BUCLE:

LCALL EY

LCALL KEY

LCALL EYY

LJMP LOOP

;=========Mostrar subrutina============= ====

EY:

LCALL LOOP1

LCALL LCDSET

MOV DPTR,#TAB1

MOV A,H_BIT

VISUALIZACIÓN DE LLAMADA

MOV A,HH_BIT

VISUALIZACIÓN DE LLAMADA

MOV A,#58

MOV LCD, A

LCALL WRR

MOV A,M_BIT

LCALL DISP

MOV A,MM_BIT

DISP LLAMADA

MOV A,#58

<

p> MOV LCD,A

LCALL WRR

MOV A,S_BIT

LCALL DISP

MOV A,SS_BIT

LCALL DISP

RET

;========Subrutina de conversión de código BCD================

BUCLE1:

MOV A,SS

MOV B,#10

DIV AB

MOV S_BIT,A

MOV SS_BIT,B

MOV A,MM

MOV B,#10

DIV AB

MOV M_BIT,A

MOV MM_BIT,B

MOV A,HH

MOV B,#10

DIV AB

MOV H_BIT,A

MOV HH_BIT,B

RET

;==========Interrumpir subrutina== = ==============

HORA0:

PUSH ACC

PUSH PSW

MOV TH0 ,#3CH

MOV TL0,#0B0H

INC R5

CJNE R5,#20,LOOP2

MOV R5,# 00H

INC SS

MOV A,SS

CJNE A,#60,LOOP2

MOV SS,#00H

INC MM

MOV A,MM

CJNE A,#60,LOOP2

MOV MM,#00H

INC HH

MOV A,HH

CJNE A,#24,LOOP2

MOV HH,#00H

LOOP2:

POP PSW

POP ACC

RETI

;======Subrutina de detección de claves========= = ==========

CLAVE:

clr ea

JNB P3.2,SS_KEY

CLAVE1 :

setb ea

RET

;========Segunda subrutina de ajuste============ == ===

SS_KEY:

LCALL EY1

LCALL DIS1

JNB P3.2,SS_KEY

SSA:

LCALL EY1

JNB P3.3,S_ADDKEY

JNB P3.4,S_DECKEY

LCALL DIS1

JNB P3.2,MM_KEY

JNB P3.5,KEY3

LJMP SSA

CLAVE3:

LJMP LLAVE1

;==========Agregar 1 en segundos=============================

S_ADDKEY:

<

p> lcall ey1

LCALL DIS1

JNB P3.3,S_ADDKEY

INC SS

MOV A,SS

CJNE A,#60,SS_KEY1

MOV SS,#00H

SS_KEY1:

LJMP SSA

;== =======Disminuir en 1 en segundos==========================

S_DECKEY:

lcall ey1

LCALL DIS1

JNB P3.4,S_DECKEY

MOV A,SS

CJNE A,# 00,SS_KEY2

MOV SS,#60

SS_KEY2:

DEC SS

LJMP SS_KEY1

; === ======Subrutina de ajuste de minutos================

MM_KEY:

LCALL EY2

LCALL DIS1

JNB P3.2,MM_KEY

MMA:

LCALL EY2

JNB P3.3,M_ADDKEY

JNB P3.4,M_DECKEY

LCALL DIS1

JNB P3.2,HH_KEY

JNB P3.5,KEY4

LJMP MMA

CLAVE4:

LLAVE1 LJMP

;=============Puntos más 1=== === ==============

M_ADDKEY:

lcall ey2

LCALL DIS1

JNB P3 .3,M_ADDKEY

INC MM

MOV A,MM

CJNE A,#60,MM_KEY1

MOV MM ,#00H

MM_KEY1:

LJMP MMA

;===========Menos 1======== == ==========

M_DECKEY:

lcall ey2

LCALL DIS1

JNB P3.4 ,M_DECKEY

MOV A,MM

CJNE A,#00,MM_KEY2

MOV MM,#60

MM_KEY2:

DEC MM

LJMP MM_KEY1

;========Subrutina de ajuste del reloj==============

HH_KEY:

LCALL EY3

LCALL DIS1

JNB P3.2,HH_KEY

HHA:

LCALL EY3

JNB P3.3,H_ADDKEY

JNB P3.4,H_DECKEY

LCALL DIS1

JNB P3.2,SSB

JNB P3.5,CLAVE5

LJMP HHA

CLAVE5:

LJMP CLAVE1

;==

========Agregar 1==================

H_ADDKEY:

Llamo a ey3

LCALL DIS1

JNB P3.3,H_ADDKEY

INC HH

MOV A,HH

CJNE A,# 24 ,HH_KEY1

MOV HH,#00H

HH_KEY1:

LJMP HHA

;========= = Tiempo menos 1=================

H_DECKEY:

lcall ey3

LCALL DIS1

JNB P3.4,H_DECKEY

MOV A,HH

CJNE A,#00,HH_KEY2

MOV HH,#24

HH_KEY2:

DEC HH

LJMP HH_KEY1

SSB:

LJMP SS_KEY

DISP :

MOVC A,@A+DPTR

MOV LCD,A

LCALL WRR

RET

;========================

LCDSET:

MOV LCD,#38H

LCALL LCDWC

MOV LCD,#06H

LCALL LCDWC

MOV LCD,#0CH

LCALL LCDWC

MOV LCD,#0C4H

LCALL LCDWC

RET

;================ = ============

LCDWC:

CLR RS

CLR RW

CLR E

CLR RW

CLR E

p>

LCALL LCDBF

SETB E

RET

;=================== ==========

WRR:

SETB RS

CLR RW

CLR E

LCALL LCDBF

SETB E

RET

;===================== ============

LCDBF:

MOV LCD,#0FFH

CLR RS

SETB RW

CLR E

NOP

SETB E

JB LCD.7,LCDBF

RET p>

;================================

EYY:

MOV LCD,#80H

LCALL LCDWC

MOV DPTR,#TAB2

MOV R2,#16

MOV R1,#00H

EYY1:

MOV A,R1

VISUALIZACIÓN DE LLAMADA LC

INC R1

DJNZ R2,EYY1

RET

;====================== = =====

EY1:

MOV LCD,#0C4H

LCALL LCDWC

MOV R4,#02

EY11:

LCALL HIND

DJNZ R4,EY11

LCALL LOOP1

MOV A,S_BIT

DISP LLAMADA

MOV A,SS_BIT

DISP LLAMADA

RET

;======== = =================

EY2:

MOV LCD,#0C4H

LCALL LCDWC

LCALL HIND

LCALL LOOP1

MOV A,M_BIT

LCALL DISP

MOV A,MM_BIT

LCALL DISP

LCALL HIND

RET

;==================== = ===

EY3:

MOV LCD,#0C4H

LCALL LCDWC

LCALL LOOP1

MOV A,H_BIT

VISUALIZACIÓN LLAMADA

MOV A,HH_BIT

VISUALIZACIÓN LLAMADA

MOV R4,#02

EY33:

LCALL HIND

DJNZ R4,EY33

RET

;========== = ===================

HIND:

MOV R3,#3

HIND1:

MOV A,#' '

MOV LCD,A

LCALL WRR

DJNZ R3,HIND1

RET

;==========Programa de retardo=============

DIS1:

MOV R6,#20

DJNZ R6,$

RET

;=======Tabla de códigos de segmentos======= ==============

TAB1:

DB 30H,31h,32H,33H,34H,35H,36H,37H,38H,39H

TAB2: BD "Diseño TanQiLin "

fin