[ Home  |  FAQ-Related Q&As  |  General Q&As  |  Answered Questions ]


    Search the Q&A Archives


...build a real time clock using 8051 please give me...

<< Back to: 8051 microcontroller FAQ

Question by latha
Submitted on 2/12/2004
Related FAQ: 8051 microcontroller FAQ
Rating: Rate this question: Vote
i want to build a real time clock using 8051
please give me some guidance


Answer by God Save America
Submitted on 8/5/2004
Rating: Not yet rated Rate this answer: Vote
Please visit http://www.iguanalabs.com for sure.

 

Answer by swk
Submitted on 9/5/2004
Rating: Not yet rated Rate this answer: Vote
you can use ds1307 which is the ion-expensive to built an RTC. it has many options like Leap year adj, Alarm, Battery support, Memory capacitor support and more than this it also has some 31 genral purpose registers all these comes in 8 pin DIP package.

 

Answer by hardik katariya
Submitted on 10/30/2004
Rating: Not yet rated Rate this answer: Vote
i want to know about real time clock using 8051

 

Answer by mahbobeh
Submitted on 6/14/2005
Rating: Not yet rated Rate this answer: Vote
I don't now

 

Answer by jomin paul
Submitted on 6/28/2005
Rating: Not yet rated Rate this answer: Vote
lcd_rs    reg   p3.7
lcd_cs    reg   p3.6

      org 0000h
      ljmp START

      org 000bh
      ljmp TIMER_ISR
      org 0013h
      ljmp KEY_ISR


      org 0100h
START:

;-------------------------------------------------------------------
;INITIALISE REGISTERS
;-------------------------------------------------------------------
      mov r7, #45h
      mov r6, #59h   
      mov r5, #23h
      mov r4, #06h   
      mov r3, #00h
      mov r2, #00h   
      mov r1, #00h
      mov r0, #0fh   
      mov b,  #0h
      
      setb psw.3
      setb psw.4
      mov r7,#0h
      mov r5, #ah
      clr psw.3
      clr psw.4      
      mov b, #00h
      clr 25h
      clr 21h
      setb 22h


;-------------------------------------------------------------------
;INITIALISE LCD
;-------------------------------------------------------------------
      mov a,#03ch
      lcall com
      lcall delay
      lcall delay
      mov a,#03ch
      lcall com
      lcall delay
      mov a,#03ch
      lcall com
      lcall delay
      mov a,#0eh
      lcall com
      lcall delay
      mov a,#01h
      lcall com
      lcall delay
      mov a,#02h
      lcall com
      lcall delay

;-------------------------------------------------------------------
;Other init
;-------------------------------------------------------------------

      mov th0, #01Eh      ;Set up timer
      mov tl0, #0FCh      ; -do-
      mov tmod,#01h      ;Set mode to mode 1
      setb ip.1         ;Set Timer Priority to 1
      setb ie.1         ;Set Timer 0 Interupt
      setb ie.2         ;Set INT1 Interupt
      setb ie.7         ;Set Global Interrupt
      setb tcon.4      ;Start Timer

Main_Wait   sjmp Main_Wait   
      



TIMER_ISR:   mov th0,#1eh      ;Value corresponding to 62.5 ms   : 1EFC
      mov tl0, #0fch      ;   -do-
      djnz r0, YY      ;If not 1 second, quit ISR
      mov a, r7         ;
      add a, #01      ;To void Hex numbers
      da a         ;
      mov r7,a         ;
      cjne r7, #60h, XX      ;if seconds =60, seconds = 0
      mov r7, #00h      ;
      mov a, r6         ;
      add a, #01      ;To void Hex numbers
      da a         ;
      mov r6,a         ;
      cjne r6, #60h, XX      ;
      mov r6, #00h      ;
      mov a, r5         ;
      add a, #01      ;
      da a         ;
      mov r5,a          ;
      cjne r5, #24h, XX      ;
      mov r5, #00h      ;
      mov a, r4         ;
      inc r4         ;
      cjne r4, #7h, XX      ;
      mov r4, #00h      ;
XX:      mov a,r7
      cjne a, 03h, RR
      mov a,r6
      cjne a, 02h, RR
      mov a,r5
      cjne a, 01h, RR
      call RING_ALARM
RR      jnb 25h, SS
      setb psw.3
      setb psw.4
      djnz r5,ZZZ
      clr 25h
      mov r5, #5h
      setb p2.0
      setb p2.1
ZZZ      clr psw.3
      clr psw.4
SS      jnb 22h, ZZ
      call DISP_CTIME      ;
ZZ:      mov r0, #0fh      ;
YY:      reti         ;

;Check Alarm!!!!!!!!!!!!!!!!!!!

KEY_ISR:      call delay   
      call delay
      jb p2.4, K_02
      call MODE_PRESSED
      reti
K_02      jb p2.5, K_03
      call ENTER_PRESSED
      reti
K_03      jb p2.6, K_04
      call UP_PRESSED
      reti
K_04      jb p2.7, eq
      call DOWN_PRESSED
      setb ie.2
eq      reti
   
;upupupupupupupstart;upupupupupupupstart;upupupupupupupstart;upupupupupupupstart


UP_PRESSED     jb 21h, CHG_U       ;if enter key is already presse, go to change digits
      jnb 22h, K_UP      ;cmp mode, if
      call CLR_DISP
      call DISP_ALARM
      clr 22h
      setb 23h
      ret
K_UP      jnb 23h , L_UP         
      call CLR_DISP
      call DISP_CTIME
      clr 23h
      setb 22h
L_UP      ret   

CHG_U      jnb 22h, JMP_INT2      ;if not mode screen 0, go to
      mov a, b
;======================================================
      cjne a,#00h,HEE1
      mov a, r7
      anl a,#0fh
      cjne a, #09h, SEC_1_U
      mov a,r7
      anl a, #f0h
      orl a, #00h
      mov r7, a
      call DISP_CTIME
      ret   
SEC_1_U      inc r7
      call DISP_CTIME
      ret      

HEE1      cjne a, #01h, CHG_MINS_U1      
      mov a, r7
      anl a, #f0h
      swap a
      cjne a, #5, SEC_2_U
      mov a, r7
      anl a, #0fh
      orl a,#00h
      mov r7, a
      call DISP_CTIME
      ret         
SEC_2_U      mov a, r7
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r7
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r7,a
      call DISP_CTIME
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT2   ljmp UP_PR1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_U1   cjne a,#02h,CHG_MINS_U2

      mov a, r6
      anl a,#0fh
      cjne a, #09h, MIN_1_U
      mov a,r6
      anl a, #f0h
      orl a, #00h
      mov r6, a
      call DISP_CTIME
      ret   
MIN_1_U      inc r6
      call DISP_CTIME
      ret      

CHG_MINS_U2   cjne a, #03h, CHG_HRS_U1      
      mov a, r6
      anl a, #f0h
      swap a
      cjne a, #5, MIN_2_U
      mov a, r6
      anl a, #0fh
      orl a,#00h
      mov r6, a
      call DISP_CTIME
      ret         
MIN_2_U      mov a, r6
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r6
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r6,a
      call DISP_CTIME
      ret   
;===============================================================

CHG_HRS_U1   cjne a,#04h,CHG_HRS_U2

      mov a, r5
      anl a,#0fh
      cjne a, #09h, HRS_1_U
      mov a,r5
      anl a, #f0h
      orl a, #00h
      mov r5, a
      call DISP_CTIME
      ret   
HRS_1_U      inc r5
      call DISP_CTIME
      ret      

CHG_HRS_U2   cjne a, #05h, CHG_DAYS_U      
      mov a, r5
      anl a, #f0h
      swap a
      cjne a, #2, HRS_2_U
      mov a, r5
      anl a, #0fh
      orl a,#00h
      mov r5, a
      call DISP_CTIME
      ret         
HRS_2_U      mov a, r5
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r5
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r5,a
      call DISP_CTIME
      ret   

;=====================================++++++++++++++++++++++++++
CHG_DAYS_U   cjne a, #6h, CHG_NO_U      
      mov a, r4
      cjne a, #6h,UP_TM_U
      mov a, #00
      mov r4,a
      call DISP_CTIME
      ret   
UP_TM_U   inc a
      mov r4,a
      call DISP_CTIME
CHG_NO_U   ret   



;----------------------------------------------------------------------------------------------------
UP_PR1      jnb 23h, UP_INT2A      ;if not mode screen 1, go to  next mode
      mov a,b
      cjne a,#00h,AHEE1
      mov a, r3
      anl a,#0fh
      cjne a, #09h, SEC_1_UA
      mov a,r3
      anl a, #f0h
      orl a, #00h
      mov r3, a
      call DISP_ALARM
      ret   
SEC_1_UA   inc r3
      call DISP_ALARM
      ret      

AHEE1      cjne a, #01h, CHG_MINS_U1A      
      mov a, r3
      anl a, #f0h
      swap a
      cjne a, #5, SEC_2_UA
      mov a, r3
      anl a, #0fh
      orl a,#00h
      mov r3, a
      call DISP_ALARM
      ret         
SEC_2_UA   mov a, r3
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r3
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r3,a
      call DISP_ALARM
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
UP_INT2A   ljmp UP_PR2A
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_U1A   cjne a,#02h,CHG_MINS_U2A

      mov a, r2
      anl a,#0fh
      cjne a, #09h, MIN_1_UA
      mov a,r2
      anl a, #f0h
      orl a, #00h
      mov r2, a
      call DISP_ALARM
      ret   
MIN_1_UA   inc r2
      call DISP_ALARM
      ret      

CHG_MINS_U2A   cjne a, #03h, CHG_HRS_U1A      
      mov a, r2
      anl a, #f0h
      swap a
      cjne a, #5, MIN_2_UA
      mov a, r2
      anl a, #0fh
      orl a,#00h
      mov r2, a
      call DISP_ALARM
      ret         
MIN_2_UA   mov a, r2
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r2
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r2,a
      call DISP_ALARM
      ret   
;===============================================================

CHG_HRS_U1A   cjne a,#04h,CHG_HRS_U2A

      mov a, r1
      anl a,#0fh
      cjne a, #09h, HRS_1_UA
      mov a,r1
      anl a, #f0h
      orl a, #00h
      mov r1, a
      call DISP_ALARM
      ret   
HRS_1_UA   inc r1
      call DISP_ALARM
      ret      

CHG_HRS_U2A   cjne a, #05h, UP_PR2A      
      mov a, r1
      anl a, #f0h
      swap a
      cjne a, #2, HRS_2_UA
      mov a, r1
      anl a, #0fh
      orl a,#00h
      mov r1, a
      call DISP_ALARM
      ret         
HRS_2_UA   mov a, r1
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r1
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r1,a
      call DISP_ALARM
      ret   
   

UP_PR2A      
      ret

;upupupupupupupupendendend;upupupupupupupupendendend;upupupupupupupupendendend

;end alarn set

;-------------------------------------------------------------------------------------------------------------------------------------------------------
DOWN_PRESSED        
      jb 21h, CHG_D       ;if enter key is already presse, go to change digits
      jnb 22h, K_DWN      ;cmp mode, if
      call CLR_DISP
      call DISP_ALARM
      clr 22h
      setb 23h
      ret
K_DWN      jnb 23h , L_DWN         
      call CLR_DISP
      call DISP_CTIME
      clr 23h
      setb 22h
L_DWN      ret   

CHG_D      jnb 22h, JMP_INT1      ;if not mode screen 0, go to
      mov a, b
;======================================================
      cjne a,#00h,HEE
      mov a, r7
      anl a,#0fh
      cjne a, #00h, SEC_1_D
      mov a,r7
      anl a, #f0h
      orl a, #09h
      mov r7, a
      call DISP_CTIME
      ret   
SEC_1_D      dec r7
      call DISP_CTIME
      ret      

HEE      cjne a, #01h, CHG_MINS_D1      
      mov a, r7
      anl a, #f0h
      swap a
      cjne a, #0, SEC_2_D
      mov a, r7
      anl a, #0fh
      orl a,#50h
      mov r7, a
      call DISP_CTIME
      ret         
SEC_2_D      mov a, r7
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r7
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r7,a
      call DISP_CTIME
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT1   ljmp DW_PR1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_D1   cjne a,#02h,CHG_MINS_D2

      mov a, r6
      anl a,#0fh
      cjne a, #00h, MIN_1_D
      mov a,r6
      anl a, #f0h
      orl a, #09h
      mov r6, a
      call DISP_CTIME
      ret   
MIN_1_D      dec r6
      call DISP_CTIME
      ret      

CHG_MINS_D2   cjne a, #03h, CHG_HRS_D1      
      mov a, r6
      anl a, #f0h
      swap a
      cjne a, #0, MIN_2_D
      mov a, r6
      anl a, #0fh
      orl a,#50h
      mov r6, a
      call DISP_CTIME
      ret         
MIN_2_D      mov a, r6
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r6
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r6,a
      call DISP_CTIME
      ret   
;===============================================================

CHG_HRS_D1   cjne a,#04h,CHG_HRS_D2

      mov a, r5
      anl a,#0fh
      cjne a, #00h, HRS_1_D
      mov a,r5
      anl a, #f0h
      orl a, #09h
      mov r5, a
      call DISP_CTIME
      ret   
HRS_1_D      dec r5
      call DISP_CTIME
      ret      

CHG_HRS_D2   cjne a, #05h, CHG_DAYS_D      
      mov a, r5
      anl a, #f0h
      swap a
      cjne a, #0, HRS_2_D
      mov a, r5
      anl a, #0fh
      orl a,#20h
      mov r5, a
      call DISP_CTIME
      ret         
HRS_2_D      mov a, r5
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r5
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r5,a
      call DISP_CTIME
      ret   

;=====================================++++++++++++++++++++++++++
CHG_DAYS_D   cjne a, #6h, CHG_NO_D      
      mov a, r4
      dec a
      cjne a, #ffh,DW_TM_D
      mov a, #06
DW_TM_D   mov r4,a
      call DISP_CTIME
CHG_NO_D   
      ret   

DW_PR1      jnb 23h, JMP_INT1DA      ;if not mode screen 0, go to
      mov a, b
      cjne a,#00h,HEE2
      mov a, r3
      anl a,#0fh
      cjne a, #00h, SEC_1_DA
      mov a,r3
      anl a, #f0h
      orl a, #09h
      mov r3, a
      call DISP_ALARM
      ret   
SEC_1_DA   dec r3
      call DISP_ALARM
      ret      

HEE2      cjne a, #01h, CHG_MINS_D1A      
      mov a, r3
      anl a, #f0h
      swap a
      cjne a, #0, SEC_2_DA
      mov a, r3
      anl a, #0fh
      orl a,#50h
      mov r3, a
      call DISP_ALARM
      ret         
SEC_2_DA   mov a, r3
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r3
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r3,a
      call DISP_ALARM
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT1DA   ljmp DW_PR2D
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_D1A   cjne a,#02h,CHG_MINS_D2A

      mov a, r2
      anl a,#0fh
      cjne a, #00h, MIN_1_DA
      mov a,r2
      anl a, #f0h
      orl a, #09h
      mov r2, a
      call DISP_ALARM
      ret   
MIN_1_DA   dec r2
      call DISP_ALARM
      ret      

CHG_MINS_D2A   cjne a, #03h, CHG_HRS_D1A      
      mov a, r2
      anl a, #f0h
      swap a
      cjne a, #0, MIN_2_DA
      mov a, r2
      anl a, #0fh
      orl a,#50h
      mov r2, a
      call DISP_ALARM
      ret         
MIN_2_DA   mov a, r2
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r2
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r2,a
      call DISP_ALARM
      ret   
;===============================================================

CHG_HRS_D1A   cjne a,#04h,CHG_HRS_D2A

      mov a, r1
      anl a,#0fh
      cjne a, #00h, HRS_1_DA
      mov a,r1
      anl a, #f0h
      orl a, #09h
      mov r1, a
      call DISP_ALARM
      ret   
HRS_1_DA   dec r1
      call DISP_ALARM
      ret      

CHG_HRS_D2A   cjne a, #05h, DW_PR2D
      mov a, r1
      anl a, #f0h
      swap a
      cjne a, #0, HRS_2_DA
      mov a, r1
      anl a, #0fh
      orl a,#20h
      mov r1, a
      call DISP_ALARM
      ret         
HRS_2_DA   mov a, r1
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r1
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r1,a
      call DISP_ALARM
      ret   


DW_PR2D
CHG_NO_DA   ret   
;---------------------------------------------------------------------------------------------------**********************************
      

ENTER_PRESSED  clr ie.2
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay   
   
   
      jb 21h , h1      ;if enter is set,  go to hi   
      jnb 22h, ENT_PR1      ;if not mode screen 0, go to

      mov a, #8ch      ;mov to seconds position
      lcall com   
      call delay
      call DISP_SET_TIME
      setb 21h
      setb ie.2
      ret

ENT_PR1      jnb 23h, ENT_PR2      ;if not Alarm, go to
      mov a, #8ch      ;mov to seconds position
      lcall com   
      call delay
      call DISP_ALARM_TIME
ENT_PR2      setb 21h
      mov b,#0h
      setb ie.2
      ret

h1      call CLR_DISP
      clr 21h
      call DISP_CTIME
      mov b, #0h
      setb ie.2
      ret   

MODE_PRESSED   clr ie.2
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay   
      call delay
      call delay
   
         
      jnb 21h, N_CHG
      jnb 22h, SCREEN1
      inc b
      mov a, b
      cjne a,#07d , SCR_1_1
      clr a
SCR_1_1      mov b, a

      mov dptr, #7e00h   
      movx @dptr, a
      setb ie.2
      ret
SCREEN1   jnb 23h, N_CHG
      inc b
      mov a, b
      cjne a,#06d , SCR_1_2
      clr a
SCR_1_2      mov b, a
      
      call DISP_ALARM
      mov dptr, #7e00h   
      movx @dptr, a
      setb ie.2
N_CHG      ret





;-------------------------------------------------------------------
;Command to LCD
;-------------------------------------------------------------------

com:      mov p1, a
      clr lcd_rs
      nop
      nop
      setb lcd_cs
      nop
      nop
      clr lcd_cs
      nop
      nop
      nop
      setb lcd_rs
      ret

;-------------------------------------------------------------------
;Data to LCD
;-------------------------------------------------------------------

data:   
      push dpl
      push dph
      mov p1,a
      setb lcd_rs
      nop
      nop
      setb lcd_cs
      nop
      nop
      clr lcd_cs
      nop
      nop
      nop
      setb lcd_rs
      pop dph
      pop dpl
      ret


;-------------------------------------------------------------------
;DELAY
;-------------------------------------------------------------------

delay:      setb psw.3
      setb psw.4
      mov r2, #0fh
t:      mov r1, #0ffh
l:      djnz r1, l   
      djnz r2, t
      clr psw.3
      clr psw.4
      ret
      
DISP_DURATION:   
      ret


;-------------------------------------------------------------------
;DISPLAY CURRENT TIME
;-------------------------------------------------------------------
   
DISP_CTIME:   mov a,r4
      cjne a, #00h, TUE

      mov a, #80h
      lcall com   
      call delay
      mov a, #4dh
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #4fh
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #4eh
      lcall data                  
      lcall delay
      ljmp TIME

TUE      cjne a, #01h, WED

      mov a, #80h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay
      ljmp TIME

WED      cjne a, #02h, THU

      mov a, #80h
      lcall com   
      call delay
      mov a, #57h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #44h
      lcall data                  
      lcall delay
      ljmp TIME

THU      cjne a, #03h, FRI

      mov a, #80h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #48h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay
      ljmp TIME

FRI      cjne a, #04h, SAT

      mov a, #80h
      lcall com   
      call delay
      mov a, #46h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #52h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #49h
      lcall data                  
      lcall delay
      ljmp TIME

SAT      cjne a, #05h, SUN

      mov a, #80h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #41h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay
      ljmp TIME

SUN      cjne a, #06h, TIME

      mov a, #80h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #4eh
      lcall data                  
      lcall delay

;--------------------------------------------------********************************

TIME:      mov a, #8ch
      lcall com   
      call delay
      mov a,r7
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8Bh
      lcall com   
      call delay
      mov a, r7
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8ah
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #89h
      lcall com   
      call delay
      mov a,r6
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #88h
      lcall com   
      call delay
      mov a, r6
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #87h
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #86h
      lcall com   
      call delay
      mov a,r5
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #85h
      lcall com   
      call delay
      mov a, r5
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      jnb 21h , EDAY
      mov a, b
      
      cjne a, #00h, CUR_1
      mov a, #8ch
      lcall com   
      call delay
   
CUR_1      cjne a, #01h, CUR_2
      mov a, #8bh
      lcall com   
      call delay   

CUR_2      cjne a, #02h, CUR_3
      mov a, #89h
      lcall com   
      call delay   

CUR_3      cjne a, #03h, CUR_4
      mov a, #88h
      lcall com   
      call delay   

CUR_4      cjne a, #04h, CUR_5
      mov a, #86h
      lcall com   
      call delay   

CUR_5      cjne a, #05h, CUR_6
      mov a, #85h
      lcall com   
      call delay   

CUR_6      cjne a, #06h, EDAY
      mov a, #80h
      lcall com   
      call delay   

EDAY      ret





CLR_DISP:   mov a, #01h
      lcall com
      call delay   
      ret

DISP_ALARM:   mov a, #8ch
      lcall com   
      call delay
      mov a,r3
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8Bh
      lcall com   
      call delay
      mov a, r3
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8ah
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #89h
      lcall com   
      call delay
      mov a,r2
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #88h
      lcall com   
      call delay
      mov a, r2
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #87h
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #86h
      lcall com   
      call delay
      mov a,r1
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #85h
      lcall com   
      call delay
      mov a, r1
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      jnb 21h , EALARM
      mov a, b
      
      cjne a, #00h, CUR_1A
      mov a, #8ch
      lcall com   
      call delay
   
CUR_1A      cjne a, #01h, CUR_2A
      mov a, #8bh
      lcall com   
      call delay   

CUR_2A      cjne a, #02h, CUR_3A
      mov a, #89h
      lcall com   
      call delay   

CUR_3A      cjne a, #03h, CUR_4A
      mov a, #88h
      lcall com   
      call delay   

CUR_4A      cjne a, #04h, CUR_5A
      mov a, #86h
      lcall com   
      call delay   

CUR_5A      cjne a, #05h, EALARM
      mov a, #85h
      lcall com   
      call delay   

EALARM      ret


DISP_SET_TIME:       mov a, #c0h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #c1h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #c2h
      lcall com   
      call delay
      mov a, #54h
      lcall data   
      ret         

DISP_ALARM_TIME:     
      
      mov a, #c0h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #c1h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #c2h
      lcall com   
      call delay
      mov a, #54h
      lcall data   
      ret            

RING_ALARM   setb 25h
      clr p2.0
      clr p2.1
      ret

 

Answer by hari
Submitted on 6/28/2005
Rating: Not yet rated Rate this answer: Vote
lcd_rs    reg   p3.7
lcd_cs    reg   p3.6

      org 0000h
      ljmp START

      org 000bh
      ljmp TIMER_ISR
      org 0013h
      ljmp KEY_ISR


      org 0100h
START:

;-------------------------------------------------------------------
;INITIALISE REGISTERS
;-------------------------------------------------------------------
      mov r7, #45h
      mov r6, #59h   
      mov r5, #23h
      mov r4, #06h   
      mov r3, #00h
      mov r2, #00h   
      mov r1, #00h
      mov r0, #0fh   
      mov b,  #0h
      
      setb psw.3
      setb psw.4
      mov r7,#0h
      mov r5, #ah
      clr psw.3
      clr psw.4      
      mov b, #00h
      clr 25h
      clr 21h
      setb 22h


;-------------------------------------------------------------------
;INITIALISE LCD
;-------------------------------------------------------------------
      mov a,#03ch
      lcall com
      lcall delay
      lcall delay
      mov a,#03ch
      lcall com
      lcall delay
      mov a,#03ch
      lcall com
      lcall delay
      mov a,#0eh
      lcall com
      lcall delay
      mov a,#01h
      lcall com
      lcall delay
      mov a,#02h
      lcall com
      lcall delay

;-------------------------------------------------------------------
;Other init
;-------------------------------------------------------------------

      mov th0, #01Eh      ;Set up timer
      mov tl0, #0FCh      ; -do-
      mov tmod,#01h      ;Set mode to mode 1
      setb ip.1         ;Set Timer Priority to 1
      setb ie.1         ;Set Timer 0 Interupt
      setb ie.2         ;Set INT1 Interupt
      setb ie.7         ;Set Global Interrupt
      setb tcon.4      ;Start Timer

Main_Wait   sjmp Main_Wait   
      



TIMER_ISR:   mov th0,#1eh      ;Value corresponding to 62.5 ms   : 1EFC
      mov tl0, #0fch      ;   -do-
      djnz r0, YY      ;If not 1 second, quit ISR
      mov a, r7         ;
      add a, #01      ;To void Hex numbers
      da a         ;
      mov r7,a         ;
      cjne r7, #60h, XX      ;if seconds =60, seconds = 0
      mov r7, #00h      ;
      mov a, r6         ;
      add a, #01      ;To void Hex numbers
      da a         ;
      mov r6,a         ;
      cjne r6, #60h, XX      ;
      mov r6, #00h      ;
      mov a, r5         ;
      add a, #01      ;
      da a         ;
      mov r5,a          ;
      cjne r5, #24h, XX      ;
      mov r5, #00h      ;
      mov a, r4         ;
      inc r4         ;
      cjne r4, #7h, XX      ;
      mov r4, #00h      ;
XX:      mov a,r7
      cjne a, 03h, RR
      mov a,r6
      cjne a, 02h, RR
      mov a,r5
      cjne a, 01h, RR
      call RING_ALARM
RR      jnb 25h, SS
      setb psw.3
      setb psw.4
      djnz r5,ZZZ
      clr 25h
      mov r5, #5h
      setb p2.0
      setb p2.1
ZZZ      clr psw.3
      clr psw.4
SS      jnb 22h, ZZ
      call DISP_CTIME      ;
ZZ:      mov r0, #0fh      ;
YY:      reti         ;

;Check Alarm!!!!!!!!!!!!!!!!!!!

KEY_ISR:      call delay   
      call delay
      jb p2.4, K_02
      call MODE_PRESSED
      reti
K_02      jb p2.5, K_03
      call ENTER_PRESSED
      reti
K_03      jb p2.6, K_04
      call UP_PRESSED
      reti
K_04      jb p2.7, eq
      call DOWN_PRESSED
      setb ie.2
eq      reti
   
;upupupupupupupstart;upupupupupupupstart;upupupupupupupstart;upupupupupupupstart


UP_PRESSED     jb 21h, CHG_U       ;if enter key is already presse, go to change digits
      jnb 22h, K_UP      ;cmp mode, if
      call CLR_DISP
      call DISP_ALARM
      clr 22h
      setb 23h
      ret
K_UP      jnb 23h , L_UP         
      call CLR_DISP
      call DISP_CTIME
      clr 23h
      setb 22h
L_UP      ret   

CHG_U      jnb 22h, JMP_INT2      ;if not mode screen 0, go to
      mov a, b
;======================================================
      cjne a,#00h,HEE1
      mov a, r7
      anl a,#0fh
      cjne a, #09h, SEC_1_U
      mov a,r7
      anl a, #f0h
      orl a, #00h
      mov r7, a
      call DISP_CTIME
      ret   
SEC_1_U      inc r7
      call DISP_CTIME
      ret      

HEE1      cjne a, #01h, CHG_MINS_U1      
      mov a, r7
      anl a, #f0h
      swap a
      cjne a, #5, SEC_2_U
      mov a, r7
      anl a, #0fh
      orl a,#00h
      mov r7, a
      call DISP_CTIME
      ret         
SEC_2_U      mov a, r7
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r7
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r7,a
      call DISP_CTIME
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT2   ljmp UP_PR1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_U1   cjne a,#02h,CHG_MINS_U2

      mov a, r6
      anl a,#0fh
      cjne a, #09h, MIN_1_U
      mov a,r6
      anl a, #f0h
      orl a, #00h
      mov r6, a
      call DISP_CTIME
      ret   
MIN_1_U      inc r6
      call DISP_CTIME
      ret      

CHG_MINS_U2   cjne a, #03h, CHG_HRS_U1      
      mov a, r6
      anl a, #f0h
      swap a
      cjne a, #5, MIN_2_U
      mov a, r6
      anl a, #0fh
      orl a,#00h
      mov r6, a
      call DISP_CTIME
      ret         
MIN_2_U      mov a, r6
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r6
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r6,a
      call DISP_CTIME
      ret   
;===============================================================

CHG_HRS_U1   cjne a,#04h,CHG_HRS_U2

      mov a, r5
      anl a,#0fh
      cjne a, #09h, HRS_1_U
      mov a,r5
      anl a, #f0h
      orl a, #00h
      mov r5, a
      call DISP_CTIME
      ret   
HRS_1_U      inc r5
      call DISP_CTIME
      ret      

CHG_HRS_U2   cjne a, #05h, CHG_DAYS_U      
      mov a, r5
      anl a, #f0h
      swap a
      cjne a, #2, HRS_2_U
      mov a, r5
      anl a, #0fh
      orl a,#00h
      mov r5, a
      call DISP_CTIME
      ret         
HRS_2_U      mov a, r5
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r5
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r5,a
      call DISP_CTIME
      ret   

;=====================================++++++++++++++++++++++++++
CHG_DAYS_U   cjne a, #6h, CHG_NO_U      
      mov a, r4
      cjne a, #6h,UP_TM_U
      mov a, #00
      mov r4,a
      call DISP_CTIME
      ret   
UP_TM_U   inc a
      mov r4,a
      call DISP_CTIME
CHG_NO_U   ret   



;----------------------------------------------------------------------------------------------------
UP_PR1      jnb 23h, UP_INT2A      ;if not mode screen 1, go to  next mode
      mov a,b
      cjne a,#00h,AHEE1
      mov a, r3
      anl a,#0fh
      cjne a, #09h, SEC_1_UA
      mov a,r3
      anl a, #f0h
      orl a, #00h
      mov r3, a
      call DISP_ALARM
      ret   
SEC_1_UA   inc r3
      call DISP_ALARM
      ret      

AHEE1      cjne a, #01h, CHG_MINS_U1A      
      mov a, r3
      anl a, #f0h
      swap a
      cjne a, #5, SEC_2_UA
      mov a, r3
      anl a, #0fh
      orl a,#00h
      mov r3, a
      call DISP_ALARM
      ret         
SEC_2_UA   mov a, r3
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r3
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r3,a
      call DISP_ALARM
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
UP_INT2A   ljmp UP_PR2A
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_U1A   cjne a,#02h,CHG_MINS_U2A

      mov a, r2
      anl a,#0fh
      cjne a, #09h, MIN_1_UA
      mov a,r2
      anl a, #f0h
      orl a, #00h
      mov r2, a
      call DISP_ALARM
      ret   
MIN_1_UA   inc r2
      call DISP_ALARM
      ret      

CHG_MINS_U2A   cjne a, #03h, CHG_HRS_U1A      
      mov a, r2
      anl a, #f0h
      swap a
      cjne a, #5, MIN_2_UA
      mov a, r2
      anl a, #0fh
      orl a,#00h
      mov r2, a
      call DISP_ALARM
      ret         
MIN_2_UA   mov a, r2
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r2
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r2,a
      call DISP_ALARM
      ret   
;===============================================================

CHG_HRS_U1A   cjne a,#04h,CHG_HRS_U2A

      mov a, r1
      anl a,#0fh
      cjne a, #09h, HRS_1_UA
      mov a,r1
      anl a, #f0h
      orl a, #00h
      mov r1, a
      call DISP_ALARM
      ret   
HRS_1_UA   inc r1
      call DISP_ALARM
      ret      

CHG_HRS_U2A   cjne a, #05h, UP_PR2A      
      mov a, r1
      anl a, #f0h
      swap a
      cjne a, #2, HRS_2_UA
      mov a, r1
      anl a, #0fh
      orl a,#00h
      mov r1, a
      call DISP_ALARM
      ret         
HRS_2_UA   mov a, r1
      anl a, #f0h
      swap a
      inc a
      swap a
      push 00h         
      mov r0,a
      mov a, r1
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r1,a
      call DISP_ALARM
      ret   
   

UP_PR2A      
      ret

;upupupupupupupupendendend;upupupupupupupupendendend;upupupupupupupupendendend

;end alarn set

;-------------------------------------------------------------------------------------------------------------------------------------------------------
DOWN_PRESSED        
      jb 21h, CHG_D       ;if enter key is already presse, go to change digits
      jnb 22h, K_DWN      ;cmp mode, if
      call CLR_DISP
      call DISP_ALARM
      clr 22h
      setb 23h
      ret
K_DWN      jnb 23h , L_DWN         
      call CLR_DISP
      call DISP_CTIME
      clr 23h
      setb 22h
L_DWN      ret   

CHG_D      jnb 22h, JMP_INT1      ;if not mode screen 0, go to
      mov a, b
;======================================================
      cjne a,#00h,HEE
      mov a, r7
      anl a,#0fh
      cjne a, #00h, SEC_1_D
      mov a,r7
      anl a, #f0h
      orl a, #09h
      mov r7, a
      call DISP_CTIME
      ret   
SEC_1_D      dec r7
      call DISP_CTIME
      ret      

HEE      cjne a, #01h, CHG_MINS_D1      
      mov a, r7
      anl a, #f0h
      swap a
      cjne a, #0, SEC_2_D
      mov a, r7
      anl a, #0fh
      orl a,#50h
      mov r7, a
      call DISP_CTIME
      ret         
SEC_2_D      mov a, r7
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r7
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r7,a
      call DISP_CTIME
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT1   ljmp DW_PR1
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_D1   cjne a,#02h,CHG_MINS_D2

      mov a, r6
      anl a,#0fh
      cjne a, #00h, MIN_1_D
      mov a,r6
      anl a, #f0h
      orl a, #09h
      mov r6, a
      call DISP_CTIME
      ret   
MIN_1_D      dec r6
      call DISP_CTIME
      ret      

CHG_MINS_D2   cjne a, #03h, CHG_HRS_D1      
      mov a, r6
      anl a, #f0h
      swap a
      cjne a, #0, MIN_2_D
      mov a, r6
      anl a, #0fh
      orl a,#50h
      mov r6, a
      call DISP_CTIME
      ret         
MIN_2_D      mov a, r6
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r6
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r6,a
      call DISP_CTIME
      ret   
;===============================================================

CHG_HRS_D1   cjne a,#04h,CHG_HRS_D2

      mov a, r5
      anl a,#0fh
      cjne a, #00h, HRS_1_D
      mov a,r5
      anl a, #f0h
      orl a, #09h
      mov r5, a
      call DISP_CTIME
      ret   
HRS_1_D      dec r5
      call DISP_CTIME
      ret      

CHG_HRS_D2   cjne a, #05h, CHG_DAYS_D      
      mov a, r5
      anl a, #f0h
      swap a
      cjne a, #0, HRS_2_D
      mov a, r5
      anl a, #0fh
      orl a,#20h
      mov r5, a
      call DISP_CTIME
      ret         
HRS_2_D      mov a, r5
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r5
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r5,a
      call DISP_CTIME
      ret   

;=====================================++++++++++++++++++++++++++
CHG_DAYS_D   cjne a, #6h, CHG_NO_D      
      mov a, r4
      dec a
      cjne a, #ffh,DW_TM_D
      mov a, #06
DW_TM_D   mov r4,a
      call DISP_CTIME
CHG_NO_D   
      ret   

DW_PR1      jnb 23h, JMP_INT1DA      ;if not mode screen 0, go to
      mov a, b
      cjne a,#00h,HEE2
      mov a, r3
      anl a,#0fh
      cjne a, #00h, SEC_1_DA
      mov a,r3
      anl a, #f0h
      orl a, #09h
      mov r3, a
      call DISP_ALARM
      ret   
SEC_1_DA   dec r3
      call DISP_ALARM
      ret      

HEE2      cjne a, #01h, CHG_MINS_D1A      
      mov a, r3
      anl a, #f0h
      swap a
      cjne a, #0, SEC_2_DA
      mov a, r3
      anl a, #0fh
      orl a,#50h
      mov r3, a
      call DISP_ALARM
      ret         
SEC_2_DA   mov a, r3
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r3
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r3,a
      call DISP_ALARM
      ret   
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
JMP_INT1DA   ljmp DW_PR2D
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
CHG_MINS_D1A   cjne a,#02h,CHG_MINS_D2A

      mov a, r2
      anl a,#0fh
      cjne a, #00h, MIN_1_DA
      mov a,r2
      anl a, #f0h
      orl a, #09h
      mov r2, a
      call DISP_ALARM
      ret   
MIN_1_DA   dec r2
      call DISP_ALARM
      ret      

CHG_MINS_D2A   cjne a, #03h, CHG_HRS_D1A      
      mov a, r2
      anl a, #f0h
      swap a
      cjne a, #0, MIN_2_DA
      mov a, r2
      anl a, #0fh
      orl a,#50h
      mov r2, a
      call DISP_ALARM
      ret         
MIN_2_DA   mov a, r2
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r2
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r2,a
      call DISP_ALARM
      ret   
;===============================================================

CHG_HRS_D1A   cjne a,#04h,CHG_HRS_D2A

      mov a, r1
      anl a,#0fh
      cjne a, #00h, HRS_1_DA
      mov a,r1
      anl a, #f0h
      orl a, #09h
      mov r1, a
      call DISP_ALARM
      ret   
HRS_1_DA   dec r1
      call DISP_ALARM
      ret      

CHG_HRS_D2A   cjne a, #05h, DW_PR2D
      mov a, r1
      anl a, #f0h
      swap a
      cjne a, #0, HRS_2_DA
      mov a, r1
      anl a, #0fh
      orl a,#20h
      mov r1, a
      call DISP_ALARM
      ret         
HRS_2_DA   mov a, r1
      anl a, #f0h
      swap a
      dec a
      swap a
      push 00h         
      mov r0,a
      mov a, r1
      anl a,#0fh
      orl a, r0
      pop 00h
      mov r1,a
      call DISP_ALARM
      ret   


DW_PR2D
CHG_NO_DA   ret   
;---------------------------------------------------------------------------------------------------**********************************
      

ENTER_PRESSED  clr ie.2
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay   
   
   
      jb 21h , h1      ;if enter is set,  go to hi   
      jnb 22h, ENT_PR1      ;if not mode screen 0, go to

      mov a, #8ch      ;mov to seconds position
      lcall com   
      call delay
      call DISP_SET_TIME
      setb 21h
      setb ie.2
      ret

ENT_PR1      jnb 23h, ENT_PR2      ;if not Alarm, go to
      mov a, #8ch      ;mov to seconds position
      lcall com   
      call delay
      call DISP_ALARM_TIME
ENT_PR2      setb 21h
      mov b,#0h
      setb ie.2
      ret

h1      call CLR_DISP
      clr 21h
      call DISP_CTIME
      mov b, #0h
      setb ie.2
      ret   

MODE_PRESSED   clr ie.2
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay
      call delay   
      call delay
      call delay
   
         
      jnb 21h, N_CHG
      jnb 22h, SCREEN1
      inc b
      mov a, b
      cjne a,#07d , SCR_1_1
      clr a
SCR_1_1      mov b, a

      mov dptr, #7e00h   
      movx @dptr, a
      setb ie.2
      ret
SCREEN1   jnb 23h, N_CHG
      inc b
      mov a, b
      cjne a,#06d , SCR_1_2
      clr a
SCR_1_2      mov b, a
      
      call DISP_ALARM
      mov dptr, #7e00h   
      movx @dptr, a
      setb ie.2
N_CHG      ret





;-------------------------------------------------------------------
;Command to LCD
;-------------------------------------------------------------------

com:      mov p1, a
      clr lcd_rs
      nop
      nop
      setb lcd_cs
      nop
      nop
      clr lcd_cs
      nop
      nop
      nop
      setb lcd_rs
      ret

;-------------------------------------------------------------------
;Data to LCD
;-------------------------------------------------------------------

data:   
      push dpl
      push dph
      mov p1,a
      setb lcd_rs
      nop
      nop
      setb lcd_cs
      nop
      nop
      clr lcd_cs
      nop
      nop
      nop
      setb lcd_rs
      pop dph
      pop dpl
      ret


;-------------------------------------------------------------------
;DELAY
;-------------------------------------------------------------------

delay:      setb psw.3
      setb psw.4
      mov r2, #0fh
t:      mov r1, #0ffh
l:      djnz r1, l   
      djnz r2, t
      clr psw.3
      clr psw.4
      ret
      
DISP_DURATION:   
      ret


;-------------------------------------------------------------------
;DISPLAY CURRENT TIME
;-------------------------------------------------------------------
   
DISP_CTIME:   mov a,r4
      cjne a, #00h, TUE

      mov a, #80h
      lcall com   
      call delay
      mov a, #4dh
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #4fh
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #4eh
      lcall data                  
      lcall delay
      ljmp TIME

TUE      cjne a, #01h, WED

      mov a, #80h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay
      ljmp TIME

WED      cjne a, #02h, THU

      mov a, #80h
      lcall com   
      call delay
      mov a, #57h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #44h
      lcall data                  
      lcall delay
      ljmp TIME

THU      cjne a, #03h, FRI

      mov a, #80h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #48h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay
      ljmp TIME

FRI      cjne a, #04h, SAT

      mov a, #80h
      lcall com   
      call delay
      mov a, #46h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #52h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #49h
      lcall data                  
      lcall delay
      ljmp TIME

SAT      cjne a, #05h, SUN

      mov a, #80h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #41h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #54h
      lcall data                  
      lcall delay
      ljmp TIME

SUN      cjne a, #06h, TIME

      mov a, #80h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #81h
      lcall com   
      call delay
      mov a, #55h
      lcall data                  
      lcall delay

      mov a, #82h
      lcall com   
      call delay
      mov a, #4eh
      lcall data                  
      lcall delay

;--------------------------------------------------********************************

TIME:      mov a, #8ch
      lcall com   
      call delay
      mov a,r7
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8Bh
      lcall com   
      call delay
      mov a, r7
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8ah
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #89h
      lcall com   
      call delay
      mov a,r6
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #88h
      lcall com   
      call delay
      mov a, r6
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #87h
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #86h
      lcall com   
      call delay
      mov a,r5
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #85h
      lcall com   
      call delay
      mov a, r5
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      jnb 21h , EDAY
      mov a, b
      
      cjne a, #00h, CUR_1
      mov a, #8ch
      lcall com   
      call delay
   
CUR_1      cjne a, #01h, CUR_2
      mov a, #8bh
      lcall com   
      call delay   

CUR_2      cjne a, #02h, CUR_3
      mov a, #89h
      lcall com   
      call delay   

CUR_3      cjne a, #03h, CUR_4
      mov a, #88h
      lcall com   
      call delay   

CUR_4      cjne a, #04h, CUR_5
      mov a, #86h
      lcall com   
      call delay   

CUR_5      cjne a, #05h, CUR_6
      mov a, #85h
      lcall com   
      call delay   

CUR_6      cjne a, #06h, EDAY
      mov a, #80h
      lcall com   
      call delay   

EDAY      ret





CLR_DISP:   mov a, #01h
      lcall com
      call delay   
      ret

DISP_ALARM:   mov a, #8ch
      lcall com   
      call delay
      mov a,r3
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8Bh
      lcall com   
      call delay
      mov a, r3
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #8ah
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #89h
      lcall com   
      call delay
      mov a,r2
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #88h
      lcall com   
      call delay
      mov a, r2
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #87h
      lcall com   
      call delay
      mov a, #21h
      lcall data                  
      lcall delay

      mov a, #86h
      lcall com   
      call delay
      mov a,r1
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      mov a, #85h
      lcall com   
      call delay
      mov a, r1
      swap a
      anl a, #0fh
      add a, #30h
      lcall data                  
      lcall delay

      jnb 21h , EALARM
      mov a, b
      
      cjne a, #00h, CUR_1A
      mov a, #8ch
      lcall com   
      call delay
   
CUR_1A      cjne a, #01h, CUR_2A
      mov a, #8bh
      lcall com   
      call delay   

CUR_2A      cjne a, #02h, CUR_3A
      mov a, #89h
      lcall com   
      call delay   

CUR_3A      cjne a, #03h, CUR_4A
      mov a, #88h
      lcall com   
      call delay   

CUR_4A      cjne a, #04h, CUR_5A
      mov a, #86h
      lcall com   
      call delay   

CUR_5A      cjne a, #05h, EALARM
      mov a, #85h
      lcall com   
      call delay   

EALARM      ret


DISP_SET_TIME:       mov a, #c0h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #c1h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #c2h
      lcall com   
      call delay
      mov a, #54h
      lcall data   
      ret         

DISP_ALARM_TIME:     
      
      mov a, #c0h
      lcall com   
      call delay
      mov a, #53h
      lcall data                  
      lcall delay

      mov a, #c1h
      lcall com   
      call delay
      mov a, #45h
      lcall data                  
      lcall delay

      mov a, #c2h
      lcall com   
      call delay
      mov a, #54h
      lcall data   
      ret            

RING_ALARM   setb 25h
      clr p2.0
      clr p2.1
      ret

 

Answer by thanhcao
Submitted on 2/7/2007
Rating: Not yet rated Rate this answer: Vote
yeu cau duoc tra loi

 

Answer by EMZZZ
Submitted on 2/18/2007
Rating: Not yet rated Rate this answer: Vote
WHAAAAA

 

Your answer will be published for anyone to see and rate.  Your answer will not be displayed immediately.  If you'd like to get expert points and benefit from positive ratings, please create a new account or login into an existing account below.


Your name or nickname:
If you'd like to create a new account or access your existing account, put in your password here:
Your answer:

FAQS.ORG reserves the right to edit your answer as to improve its clarity.  By submitting your answer you authorize FAQS.ORG to publish your answer on the WWW without any restrictions. You agree to hold harmless and indemnify FAQS.ORG against any claims, costs, or damages resulting from publishing your answer.

 

FAQS.ORG makes no guarantees as to the accuracy of the posts. Each post is the personal opinion of the poster. These posts are not intended to substitute for medical, tax, legal, investment, accounting, or other professional advice. FAQS.ORG does not endorse any opinion or any product or service mentioned mentioned in these posts.

 

<< Back to: 8051 microcontroller FAQ


[ Home  |  FAQ-Related Q&As  |  General Q&As  |  Answered Questions ]

© 2008 FAQS.ORG. All rights reserved.