📄 clock.asm
字号:
mov a,key_data
cjne a,#01h,set_cc1
setb set_al4_f
sjmp sf23
set_cc1:
cjne a,#02h,sf_key2
setb set_clk_f
sjmp sf23
sf_12:
call sf_beep
sf23:
ret
;********************************
set_clk_al:
jnb set_clk_f,see1
call set_clock
clr set_clk_f
sjmp see2
see1:
jnb set_al4_f,see2
call set_al4
clr set_al4_f
see2:
ret
;*********************************
proc led_t_d
led_t_d:
mov dptr,#led_ord_3
mov b,#02h
mul ab
jmp @a+dptr
led_ord_3: ajmp led_k0_2
ajmp led_k1_2
ajmp led_k2_2
ajmp led_k3_2
led_k0_2: ; timer_12 and date to led
call time_12
jnb fl_3s ,lk1
call date_led
lk1:
ret
led_k1_2: ; timer_12 to led
call time_12
ret
led_k2_2: ;timer_24and date to led
call time_24
jnb fl_3s ,lk2
call date_led
lk2:
ret
led_k3_2: ;timer_24to led
jmp time_24
end
;****************************************
proc set_al4
set_al4:
mov k1_data,#01d
mov k2_data,#01d
clr set_over
acall led_al
acall key_bord
set_al41:
call clock
call week_auto
acall led_al
acall key_bord
acall key_al
jnb set_over,set_al41
acall key_bord
mov k1_data,#00d
mov k2_data,#00d
ret
end
;**************************************
proc key_al
key_al:
mov a,key_data
jz key_al_end
cjne a,#01d,k2_al
inc k1_data ;(1-9)
mov a,k1_data
cjne a,#18d,key_al_end
mov k1_data,#01d
sjmp key_al_end
k2_al:
mov a,k1_data
cjne a,#017d,ke2
setb set_over
sjmp key_al_end
ke2:
mov r0,#al1_h
dec a
add a,r0
mov r0,a
inc @r0
acall jj_bit
mov b,#24d
jnz ke3
mov b,#60d
ke3:
mov a,@r0
div ab
mov a,b
mov @r0,a
key_al_end:
ret
end
jj_bit:
mov a,k1_data
mov b,#02d
div ab
mov a,b ;(a=1,0)
ret
;*********************************
led_out1:
mov led2,#00h
mov led3,#u_led
mov led4,#t_led
mov led5,#blk_led
mov led1,#blk_led
ret
;********************************
led_al:
mov a,k1_data
cjne a,#17d,ld1
acall led_out1
sjmp led_al_end
ld1:
inc a
mov b,#02d
div ab
;**********
mov led1,a
;**********
dec a
rl a
mov r0,#al1_h
add a,r0
mov r0,a
mov a,@r0
acall bcd_8
mov led2,a
jnz ld2
mov led2,#blk_led
ld2:
mov a,b
add a,#10d
mov led3,a
;************************************
inc r0
mov a,@r0
acall bcd_8
add a,#10d
mov led4,a
mov led5,b
;***************************flash bit
jb fl_250ms,led_al_end
acall jj_bit
jnz led_al_e
mov led4,#blk_led
mov led5,#blk_led
sjmp led_al_end
led_al_e:
mov led2,#blk_led
mov led3,#blk_led
led_al_end:
jmp led
;***************************************
proc set_clock
set_clock:
mov k1_data,#01d
mov k2_data,#01d
clr set_over
acall led_cl
acall key_bord
set_al41:
call clock
acall week_auto
call al_out
acall led_cl
acall key_bord
acall key_cl
jnb set_over,set_al41
clr tr1
clr set_f
clr fl_3s
clr fl_500ms
mov stat_led,#0
call week_auto
ssq1:
call led_jmp
acall key_bord
mov a, key_data
jz ssq1
clr a
mov k1_data,a
mov k2_data,a
mov key_data,a
mov sec,a
jmp adj_w
end
;**************************************
proc key_cl
key_cl:
mov a,key_data
jz key_al_end
cjne a,#01d,k2_al
inc k1_data ;(1-7)
mov a,k1_data
cjne a,#8d,key_al_end
mov k1_data,#01d
sjmp key_al_end
k2_al:
mov a,k1_data
cjne a,#07d,ke2
setb set_over
sjmp key_al_end
ke2:
dec a
mov dptr,#asc_h
movc a,@a+dptr
mov b,a
;********************************
mov r0,#min ;2001.9.29
mov a,k1_data
dec a
add a,r0
mov r0,a
inc @r0
mov a,@r0
div ab
mov a,b
mov @r0,a
key_al_end:
ret
end
asc_h:
db 60d,24d,32d,13d,100d,100d
proc led_cl
led_cl:
mov dptr,#led_ord_3
mov a,k1_data
dec a
mov b,#02h
mul ab
jmp @a+dptr
led_ord_3: ajmp led_k0_2
ajmp led_k1_2
ajmp led_k2_2
ajmp led_k3_2
ajmp led_k4_2
ajmp led_k5_2
ajmp led_k6_2
led_k0_2: ; led min,hour
acall led_hour
jb fl_250ms ,lk2
mov led4,#blk_led
mov led5,#blk_led
lk2:
ajmp led_jmp_5_end
led_k1_2: ;led min,hour
acall led_hour
jb fl_250ms ,lk3
mov led2,#blk_led
mov led3,#blk_led
lk3:
ajmp led_jmp_5_end
led_k2_2: ;led day,mon
acall led_mon
jb fl_250ms ,lk4
mov led4,#blk_led
mov led5,#blk_led
lk4:
ajmp led_jmp_5_end
led_k3_2: ; led day,mon
acall led_mon
jb fl_250ms ,lk5
mov led2,#blk_led
mov led3,#blk_led
lk5:
ajmp led_jmp_5_end
led_k4_2: ; led year
mov led2,#2d
mov led3,#0d
mov a,year
acall bcd_8
mov led4,a
mov led5,b
jb fl_250ms ,lk6
mov led4,#blk_led
mov led5,#blk_led
lk6:
ajmp led_jmp_5_end
led_k5_2: ;led w_adj
mov led2,#d_led
mov led3,#blk_led
mov a,w_adj
acall bcd_8
mov led4,a
mov led5,b
jb fl_250ms ,lk7
mov led4,#blk_led
mov led5,#blk_led
lk7:
ajmp led_jmp_5_end
led_k6_2: ;led out
acall led_out1
led_jmp_5_end:
mov led1,week
jmp led
end
led_hour:
mov a,hour
acall bcd_8
mov led2,a
jnz lj1
mov led2,#blk_led
lj1:
mov a,b
add a,#10d
mov led3,a
;*********************
mov a,min
acall bcd_8
add a,#10d
mov led4,a
mov led5,b
ret
led_mon:
mov a,mon
jnz lj5
inc mon
mov a,mon
lj5:
acall bcd_8
mov led2,a
jnz lj2
mov led2,#blk_led
lj2:
mov led3,b
;*********************
mov a,day
jnz lj4
inc day
mov a,day
lj4:
acall bcd_8
mov led4,a
jnz lj3
mov led4,#blk_led
lj3:
mov led5,b
ret
;********************************************
al_out:
jb ha_over,al_out_end
mov r7,#8d
mov r1,#al8_m
al_ch_1:
mov r0,#min
mov r6,#02d ;min hour
al_l:
mov a,@r0
mov b,@r1
cjne a,b ,al_ch
inc r0
dec r1
djnz r6 ,al_l
;**************************************************
mov a,r7
dec a
mov r0,#al1
add a,r0
mov r0,a
mov a,@r0
mov c,acc.0
cpl c
anl c,fl_250ms
cpl c
mov beep_f,c
acall beep_out
al_ch:
clr c
mov a,r1
subb a,r6
mov r1,a
djnz r7,al_ch_1
al_out_end:
ret
beep_out:
jb ha_f,ba1
mov beep,d2
setb ha_f
ba1:
clr c
mov a,beep
subb a,#40d
mov b,#mod
div ab
mov a,d2
cjne a,b,beep_out_end
setb beep_f
setb ha_over
clr ha_f
beep_out_end:
ret
timer_int:
mov year ,#08d
mov mon , #05d
mov day , #022d
mov hour ,#13d
mov min , #00d
mov sec , #00d
mov r7,#16
mov dptr ,#al_asc
mov r0,#al1_h
al_read:
clr a
movc a,@a+dptr
mov @r0,a
inc r0
inc dptr
djnz r7,al_read
ret
al_asc:
db 06d,30d,07d,30d,08d,00d,011d,30d;am 4_al
db 11d,45d,13d,45d,17d,15d,17d,30d;pm 4_al
;*************************************
time_12:
mov dptr,#asc_12
mov a,hour
rl a
movc a,@a+dptr
mov led2,a
jnz iu2
mov led2,#blk_led
iu2:
inc dptr
mov a,hour
rl a
movc a,@a+dptr
jb fl_500ms ,iu1
add a,#10d
iu1:
mov led3,a
;*************************************** min to led
call led_min
time_24_end:
ret
asc_12:
db 11d,2d,21d,1d,21d,2d,21d,3d,21d,4d,21d,5d,21d,6d,21d,7d
db 21d,8d,21d,9d,11d,0d,11d,1d
db 1d,2d,0d,1d,0d,2d,0d,3d,0d,4d,0d,5d,0d,6d,0d,7d,0d,8d,0d,9d
db 1d,0,1d,1d
clock:
;********************************
jb set_f ,clock_end
mov a,sec
cjne a,#2d,clock_end;!!!!!!!!!!!!!!!!!!!!!!
mov sec,#00h
inc min
;**********
clr ha_over ;2001.5.6
mov a,min
cjne a,#60d,clock_end
mov min,#00h
inc hour
mov a,hour
cjne a,#24d,clock_end
mov hour,#00h
mov a,mon
xrl a,#02d
jnz mm_1
mov dptr,#year_d
mov a, year
movc a,@a+dptr
sjmp mm_2
mm_1:
mov a,mon
dec a
mov dptr,#mou_12
movc a,@a+dptr
mm_2:
mov b,a
inc b
inc day ;***************day+1
mov a,day
cjne a ,b ,clck_end
sjmp clck1
clck_end:
jc clock_end
clck1:
mov day,#01h
inc mon
mov a,mon
cjne a,#13d ,clock_end
mov mon,#01d
inc year
mov a,year
cjne a,#100d ,clock_end
mov year,#00d
clock_end:
ret
mou_12:
db 31d, 28d, 31d, 30d, 31d,30d
db 31d, 31d, 30d,31d, 30d,31d
year_d:
db 29d, 28d, 28d, 28d, 29d, 28d , 28d, 28d, 29d, 28d
db 28d, 28d, 29d, 28d, 28d, 28d , 29d, 28d, 28d, 28d
db 29d, 28d, 28d, 28d, 29d, 28d , 28d, 28d, 29d, 28d
db 28d, 28d, 29d, 28d, 28d, 28d , 29d, 28d, 28d, 28d
db 'li jie 2000.5.15'
;***************************************
t1:
push a
push b
push psw
mov a,t_1s
mov b,#02d
div ab
mov a,b
jnz to_d1
cpl fl_250ms
to_d1:
mov a,t_1s
mov b,#04d
div ab
mov a,b
jnz to_d2
cpl fl_500ms
to_d2:
djnz t_1s ,t1_end
ss1e: inc sec
call adj_w
;********************************
t1_end:
pop psw
pop b
pop a
reti
adj_w:
clr tr1
mov a,#T_L_100ms
add a, w_adj ;*******have 5 order
mov tl1 ,a
mov a,#T_H_100ms
addc a, #00h
mov th1,a
mov t_1s,#timer_no
setb tr1
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -