Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Please help me to fix this code for clock!!

Status
Not open for further replies.

zaythf_gem90

Newbie level 1
Joined
Dec 2, 2011
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,304
I try to design a digital clock using LED. After every 1 hour a message will come out at LCD.
I really appreciate your help!!

LEDHOUR EQU 0FFC3H ; CLOCK ON LED
LEDMIN EQU 0FFC2H
LEDSEC EQU 0FFC1H

LCDWIR EQU 0FFE0H
LCDWDR EQU 0FFE1H
LCDRIR EQU 0FFE3H
LCDRDR EQU 0FFE3H

VSEC EQU 30H; CLOCK VARIABLE
VMIN EQU 31H
VHOUR EQU 32H

INST EQU 20H ; LCD VARIABLE
DATA EQU 21H
LROW EQU 22H
LCOL EQU 23H
NUMFONT EQU 24H
FDPL EQU 25H
FDPH EQU 26H

CLEAR EQU 01H
CUR_HOME EQU 02H
ENTRY2 EQU 06H
DCB6 EQU 0EH
FUN5 EQU 38H

LINE_1 EQU 80H
LINE_2 EQU 0C0H

ORG 8000H

MOV VSEC, #0 ; CLOCK INITIAL
MOV VMIN, #0
MOV VHOUR, #0
CALL LCD_MESG



RUN: MOV R2, #0008H

DELAY3: MOV R1, #00FFH
DELAY2: MOV R0, #00E0H
DELAY1: DJNZ R0, DELAY1
DJNZ R1, DELAY2
DJNZ R2, DELAY3

MOV R3, #147

REPEAT: MOV R1, #1
LCALL VALENCE
DJNZ R3, REPEAT

MOV R1, #1
LCALL VALENCE
CALL UPDATE
SJMP RUN

UPDATE: MOV R0, #VSEC
CJNE @R0, #59H, SEC
MOV @R0, #0
INC R0
MUL AB
SJMP MINCHECK


SEC: MOV R1, #7
LCALL VALENCE
SJMP ADDONE

MINCHECK: CJNE @R0, #59H, MIN
MOV @R0, #0
INC R0
MUL AB
SJMP HOURCHECK


MIN: MOV R1, #2
LCALL VALENCE
SJMP ADDONE



HOURCHECK: CJNE @R0, #23H, HOUR
MOV @R0, #0
INC R0
MUL AB
JMP RETPOINT

HOUR: JMP DISFONT
JMP ADDONE

RETPOINT: CALL DISPLAY
RET

ADDONE: MOV A, @R0
ADD A, #1
DA A
MOV @R0, A
SJMP RETPOINT

VALENCE: DJNZ R1, $
NOP
RET

DISPLAY: MOV DPTR,#LEDSEC ; SEC
MOV A,VSEC
MOVX @DPTR,A

MOV DPTR,#LEDMIN ; MIN
MOV A, VMIN
MOVX @DPTR,A

MOV DPTR,#LEDHOUR ; HOUR
MOV A,VHOUR
MOVX @DPTR,A

RET

LCD_INIT: MOV INST, #FUN5
CALL INSTWR

MOV INST, #DCB6
CALL INSTWR

MOV INST, #CLEAR
CALL INSTWR

MOV INST, #ENTRY2
CALL INSTWR

LCD_MESG: MOV LROW, #01H
MOV LCOL, #02H
CALL CUR_MOV

MOV DPTR, #MESSAGE1
MOV FDPL, DPL
MOV FDPH, DPH
MOV NUMFONT, #0EH
CALL DISFONT

MOV LROW, #02H
MOV LCOL, #02H
CALL CUR_MOV

MOV DPTR, #MESSAGE2
MOV FDPL, DPL
MOV FDPH, DPH
MOV NUMFONT, #0EH
CALL DISFONT



DISFONT: MOV R5, #00H


FLOOP: MOV DPL, FDPL
MOV DPH, FDPH
MOV A, R5
MOVC A, @A+DPTR
MOV DATA, A

CALL DATAWR
INC R5
MOV A, R5
CJNE A, NUMFONT, FLOOP
RET

CUR_MOV: MOV A, LROW
CJNE A, #01H, NEXT
MOV A, #LINE_1
ADD A, LCOL
MOV INST, A
CALL INSTWR
JMP RET_POINT

NEXT: CJNE A, #02H, RET_POINT
MOV A, #LINE_2
ADD A, LCOL
MOV INST, A
CALL INSTWR

RET_POINT: RET

INSTWR: CALL INSTRD
MOV DPTR, #LCDWIR
MOV A, INST
MOVX @DPTR, A
RET


DATAWR: CALL INSTRD
MOV DPTR, #LCDWDR
MOV A, DATA
MOVX @DPTR, A
RET

INSTRD: MOV DPTR, #LCDRIR
MOVX A, @DPTR
JB ACC.7, INSTRD
RET

MESSAGE1: DB 'H','A','V','E',' '
DB 'A',' ','N','I','C'
DB 'E',' ','D','A','Y'

MESSAGE2: DB ' ',' ',' ',' ',' '
DB ' ',' ',' ',' ',' '
DB ' ',' ',' ',' ',' '

DELAY: MOV R7, #03H


END
 

You need to ask a specific question and give more information about what your symptoms are.

---------- Post added at 21:05 ---------- Previous post was at 21:02 ----------

Also, tell us what your target is.

At first glance, it looks like there might be an error: The line above your subroutine DISFONT:
is CALL DISFONT, so I think your stack might be getting messed up. You call the subroutine, and then when it returns, it's going to go right to the subroutine again.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top