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
|