📄 clock0.asm
字号:
year_led:
mov a,year
acall led_flash_set
mov led1,a
mov a,b
mov acc.7,c
mov led2,a
mov a,#00h
mov led3,a
mov led4,#led_blk
mov led5,#02h
ret
led_flash_set:
mov c,acc.7
push psw
clr acc.7
lcall bcd_8
pop psw
mov acc.7,c
ret
;*************
; D_8=>BCD
;*************
BCD_8:
mov c_f,c
MOV B,#10D
DIV AB
mov r5,b
mov b,a
mov a,r5
mov c,c_f
RET
;********************
; LED_PROGRAM
;*******************
LED:
mov dptr,#led_asc
;***************************led1
mov a,led1
mov c,acc.7
anl c,timer_50ms
jc led_led2
clr acc.7
movc a,@a+dptr
acall ha_j
clr led_1
acall timer_1ms
setb led_1
;*************************led2
led_led2:
mov a,led2
mov c,acc.7
anl c,timer_50ms
jc led_led3
clr acc.7
movc a,@a+dptr
acall ha_j
clr led_2
acall timer_1ms
setb led_2
;*************************led3
led_led3:
mov a,led3
mov c,acc.7
anl c,timer_50ms
jc led_led4
clr acc.7
movc a,@a+dptr
acall ha_j
clr led_3
acall timer_1ms
setb led_3
;*************************led4
led_led4:
mov a,led4
mov c,acc.7
anl c,timer_50ms
jc led_led5
clr acc.7
mov c,acc.5
mov all_am,c
mov c,acc.6
mov all1_am,c
clr acc.5
clr acc.6
movc a,@a+dptr
mov c,all1_am
mov acc.3 ,c
mov c,all_am
mov acc.0,c
jj_2:
acall ha_j
clr led_4
acall timer_1ms
setb led_4
;*************************led5
led_led5:
mov a,led5
mov c,acc.7
anl c,timer_50ms
jc led_end
clr acc.7
cjne a,#01h,ko_1
mov a,#0dh
ko_1:
movc a,@a+dptr
acall ha_j
clr led_5
acall timer_1ms
setb led_5
;*************************
led_end: ret
led_j:
mov c,stop_f
orl c, ting_f
jc led_end1 ;ting_dian to turn off led
acall led
sjmp lee_1
led_end1:
mov a,p1
mov c,acc.7
mov a,#0ffh
mov acc.7,c
mov p1,a
mov p3,#0ffh
lee_1:
ret
ha_j:
mov c,ha
mov acc.7,c
mov p1,a
ret
led_asc:
db 10111111B;0
db 10000110B;1
db 11011011B;2
db 11001111B;3
db 11100110B;4
db 11101101B;5
db 11111101B;6
db 10000111B;7
db 11111111B;8
db 11101111B;9
DB 10000000B;BLACK=>0aH
DB 10111110B;u=>b
dB 11111001B;e=>C
DB 10110000B;1,=>D
;**********************************
;delay
;********************************
timer_1ms:
push b
mov r2,#01h
a_1: mov b,#0ffh
b_1: djnz b,b_1
djnz r2,a_1
pop b
ret
;******************
; TO-T1_INT
;******************
T1:
setb tr0
PUSH ACC ;
PUSH b ;
push psw
inc time_led1
mov a,time_led1
cjne a,#2d,t1_n1
mov time_led1,#00h
cpl timer_50ms
; mov c,timer_50ms
; mov timer_1s ,c
mov a,timers
cjne a,#5d ,t1_n11
t1_n12:
clr timer_1s
sjmp t1_n1
;*********************************
t1_end_2: ajmp t1_end_1
;********************************
t1_n11: jc t1_n12
setb timer_1s
t1_n1: djnz timers ,t1_end_2
mov timers,#tis
inc time_led3
mov a,time_led3
cjne a,#03d,t1_sec
mov time_led3,#00h
cpl timer_3s
t1_sec:
inc sec
mov a,sec
mov c ,acc.7
mov c_temp ,c
clr acc.7
cjne a,#60d ,t1_c_end
mov a,#00d
mov c,c_temp
mov acc.7,c
mov sec ,a
sjmp t1_c_1
t1_c_end: mov c,c_temp
mov acc.7,c
mov sec ,a
ajmp t1_end
t1_c_1: inc min
;inc r1
;mov a,r1
;cjne a,#10d,t1_min
;mov r1,#00h
cpl timer_1min
;t1_min:
mov a,min
mov c ,acc.7
mov c_temp ,c
clr acc.7
cjne a,#60d ,t1_c_end1
mov a,#00d
mov c,c_temp
mov acc.7,c
mov min ,a
sjmp t1_c_2
t1_c_end1:
mov c,c_temp
mov acc.7,c
mov min ,a
ajmp t1_end
t1_c_2:
inc hour
mov a,hour
cjne a,#13d ,t1_end
cpl timer_am
mov hour,#01h
jnb timer_am , t1_end
inc week ;***********week+1
mov a,week
cjne a,#8d ,dy_1 ;!!!!!!!!!!!!*********
mov week,#01d
dy_1:
mov dptr,#mou_12
mov a,mou
xrl a,#02d
jnz mm_1
acall mou_j
sjmp mm_2
mm_1:
movc a,@a+dptr
mm_2:
mov b,a
inc b
inc day ;***************day+1
mov a,day
cjne a ,b ,t1_end
mov day,#01h
inc mou
mov a,mou
cjne a,#13d ,t1_end
mov mou,#01d
inc year
mov a,year
cjne a,#100d ,t1_end
mov year,#00d
T1_END:
;*****************************timer subb al_timer
acall al_out
t1_end_1:
;************************************ sub t0 timer
clr c
clr tr0
mov b,timer_no
mov a,#til
add a,tl0
addc a,b ;*******have 5 order
mov tl1 ,a
mov a,#tih
addc a, th0
mov th1,a
mov th0,#00h
mov tl0,#00h
setb tr1
pop psw
pop b ;
pop acc ;
RETI ;
;**************************************************
ting_dian_ji:
jb jian_f, ti_1
setb ting_f
;jnb timer_10min ,ti_2
;clr timer_10min
;inc timer_ting
;mov a,timer_ting ;timer_ting/4
;rl a
;rl a
;mov timer_charge,a
sjmp ti_2
ti_1:
clr ting_f
ti_2: ret
;****************************************************
charge:
mov c,stop_f
orl c,ting_f
jnc charge_end
acall key_1
jb charge_f, ch_1
mov a,key_power
jz charge_end
setb charge_f
ch_1:
jnb timer_1min ,ch_2
clr timer_1min
djnz timer_charge ,ch_2
mov timer_charge,#02h
clr charge_f
sjmp charge_end
ch_2:
acall led
charge_end: ret
;*****************************************************
al_out_beep:
mov c,al_f
anl c,al_out_f
jnc aa_2
jnb timer_3s ,aa_1
clr timer_3s
djnz beep_timer,aa_1
mov beep_timer ,#08h
clr al_out_f
setb ha
sjmp aa_2
aa_1: mov c,timer_50ms
mov ha,c
aa_2:
ret
;*****************************************************
al_out:
mov a,min
cjne a,#00h ,lp_1
mov a,hour
mov c,timer_am
mov acc.7,c
mov b,a
xrl a,#10001000b
jnz lp_2
setb stop_f
lp_2: mov a,b
xrl a,#00000110b
jnz lp_1
clr stop_f
lp_1:
mov c,al1_am
mov a,al1_m
mov acc.6,c
clr acc.7
mov b,a
mov c,timer_am
mov a,min
mov acc.6,c
clr acc.7
cjne a ,b ,al_n1
;acall al_out_beep
mov a,al1_h
clr acc.7
mov b,a
mov a,hour
clr acc.7
cjne a,b ,al_n1
setb al_f
sjmp aL_n3
al_n1:
mov c,al2_am
mov a,al2_m
mov acc.6,c
clr acc.7
mov b,a
mov c,timer_am
mov a,min
mov acc.6,c
clr acc.7
cjne a ,b ,al_n2
mov a,al2_h
clr acc.7
mov b,a
mov a,hour
clr acc.7
cjne a,b ,al_n2
setb al_f
sjmp al_n3
al_n2: clr al_f
setb al_out_f
al_n3:
ret
;******************************************
mou_j:
mov dptr,#year_d
mov a, year
movc a,@a+dptr
ret
year_d:
db 29d
db 28d
db 28d
db 28d
db 29d
db 28d
db 28d
db 28d
db 29d
db 28d
db 28d
db 28d
db 29d
db 28d
db 28d
db 28d
db 29d
db 28d
db 28d
db 28d
led_order_1:
db 00d
db 01d
db 01d
db 01d
db 02d
db 02d
db 03d
db 03d
db 04d
db 04d
db 05d
db 06d
db 07d
led_order_2:
db 00h
db 60d
db 13d
db 08d
db 32d
db 13d
db 60d
db 13d
db 60d
db 13d
db 60d
db 99d
db 30d
mou_12:
db 31d
db 28d
db 31d
db 30d
db 31d
db 30d
db 31d
db 31d
db 30d
db 31d
db 30d
db 31d
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -