| ??? 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 |
| Topic | Author | Date |
| 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 |



