Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
07/09/03 15:43
Read: times


 
#50345 - RTC interfacing with LCD
Hell0 guys!

I am trying to make a RTC for my Alarm Control Panel
and wrote source codes for Real Time Clock and wanted to dispaly it on LCD. When I run the program it is displaying
) >$.

Can any body point out where is the catch?
ORG 100H
JMP MAIN
ORG 0BH
JMP TC0INT
ORG 400H ;MAINLINE CODE

MAIN: CLR A
MOV A,#3CH ;8bit/CHAr,2rows, 5X10 dots/CHAr
ACALL COMMAND ;strobe COMMAND to DISPLAY
MOV A,#0CH ;sCreen And Cursor on, no blink
ACALL COMMAND ;strobe COMMAND to DISPLAY
MOV A,#06H ;sHiFt Cursor rigHt
ACALL COMMAND ;strobe COMMAND to disPAly
MOV A,#01H ;CleAr MeMory And HoMe Cursor
ACALL COMMAND
CALL INIT ;INITIALIZE RTC
LCALL HOURS
LCALL MINUTES

LP1: SJMP LP1 ;MIANLINE TASK

;R0 ACTS AS A DECREMENTING VARIABLE COUNTER
;THO & TL0 ARE THE COUNTER GENERATING AN INTERRRUPT WHEN IT REACHES 0000H

INIT: MOV R0,#20H ;THIS GIVE R0* 33MS DELAY = 1 SEC
MOV SECS,#00H
MOV MINS,#00H
MOV HRS,#00H
MOV TH0,#80H
MOV TL0,#00H ;TIMER 0 GIVES 33MS BETWEEN INTERRUPTS
MOV TMOD,#01 ;C/T=0, MODE 1 (16BIT)
MOV TCON,#10H ;START TIMER 0 RUNNING
MOV IE,#82H ;ENABLE ALL INTERRUPT CONTROL BIT
;ENABLE INTERRUPT FOR TIMER 0
RET

;TIMER COUNTER ZERO INTERRRUPT SERVICE ROUTINE

TC0INT: DEC R0 ;DECREMENT COUNTER VARIABLE
MOV A,R0 ;MOVE INTO ACCUMULATOR
JNZ TC0EXIT ;IF NOT ZERO THEN RETURN FROM INTERRUPT
MOV R0,#20H ;RELOAD INITIAL VALUE IN R0
INC SECS ;SECONDS = SECONDS + 1
MOV R2,SECS
PUSH 2
;JMP DISP_TIME
MOV A,SECS ;MOVE INTO ACCUMULATOR
SUBB A,#60 ;IF SECONDS >= 60
JNZ TC0EXIT
MOV SECS,#00H ;THEN SECONDS= 0
INC MINS ;AND MINS = MINS +1
MOV R3,MINS
PUSH 3
;JMP DISP_TIME
MOV A,MINS ;IF MINS>=60
SUBB A,#60
JNZ TC0EXIT
MOV MINS,#00 ;THEN MINUTES=0
INC HRS ;AND HOURS=HOURS +1
MOV R4,HRS
PUSH 4
MOV A,HRS
JMP DISP_TIME
SUBB A,#24
JNZ TC0EXIT
MOV HRS,#00 ;HOURS =0


TC0EXIT: MOV TH0,#80H
MOV TL0,#00H
CLR TF0
;JMP DISP_TIME

RETI

SECS EQU 07CH
MINS EQU 07DH
HRS EQU 07EH




DISP_TIME:


;TO DISPLAY HOURS
HOURS: MOV A,#082H
ACALL COMMAND
POP 4
MOV A,R4 ;COPY HOURS TO ACCUMULATOR
ACALL DISPLAY
MOV A,#85H ;MOVE CURSOR TO COLUMN 5
ACALL COMMAND
MOV A,#':' ;DISPLAY A COLON(:)
ACALL DISPLAY

;TO DISPLAY MINUTES
MINUTES:MOV A,#086H
ACALL COMMAND
POP 3
MOV A,R3 ;COPY MINS TO ACCUMULATOR
ACALL DISPLAY
MOV A,#89H ;MOVE CURSOR TO COLUMN 5
ACALL COMMAND
MOV A,#':' ;DISPLAY A COLON(:)
ACALL DISPLAY


;TO DISPLAY SECOMDS
SECONDS:MOV A,#91H
ACALL COMMAND
POP 2
MOV A,R2 ;COPY SECS TO ACCUMULATOR
ACALL DISPLAY
MOV R2,#00H
MOV R3,#00H
MOV R4,#00H


RET


COMMAND:
ACALL READY ;write wHen DISPLAY is not busy
MOV P0,A ;COMMAND CHArACter in P0
CLR P1.4 ;COMMAND register CHeesen
CLR P1.5 ;write enAbled
SETB P1.6
CLR P1.6
RET
DISPLAY:
ACALL READY ;write wHen DISPLAY READY
MOV P0,A ;dAtA CHArACter in P0
SETB P1.4 ;dAtA regulAr CHoosen
CLR P1.5 ;write enAbled
SETB P1.6
CLR P1.6 ;strobe CHArACter in DISPLAY
RET
READY:
CLR P1.6 ;DISPLAY disAbled
MOV P0,#0FFH ;ConFigure P0 For inPut
CLR P1.4 ;seleCt COMMAND register
SETB P1.5 ;reAd enAbled
WAIT:
CLR P1.6 ;strobe DISPLAY
SETB P1.6 ;reAd bust stAtus oF DISPLAY
JB P0.7,WAIT ;WAIT For not busy (BF = 0)
CLR P1.6 ;END DISPLAY strobe
RET

END
Thank

List of 8 messages in thread
TopicAuthorDate
RTC interfacing with LCD            01/01/70 00:00      
   RE: RTC interfacing with LCD            01/01/70 00:00      
   RE: RTC interfacing with LCD            01/01/70 00:00      
      RE:Displaying Hex value into ASCII code            01/01/70 00:00      
         RE: RE:Displaying Hex value into ASCII c            01/01/70 00:00      
   RE: Saved my day            01/01/70 00:00      
      RE: Saved my day            01/01/70 00:00      
         RE: Saved my day            01/01/70 00:00      

Back to Subject List