📄 clock1.asm
字号:
lcall bcd_8
mov led1,a
mov a,b
mov led2,a
;;;;;;;;;;;;;;;;;;;;;;;;;
mov a,al2_h
mov c,acc.7
mov a,flash
mov acc.3,c
mov acc.4,c
mov flash,a
mov a,al2_h
clr acc.7
acall bcd_8
mov led3,a
mov a,b
jnz tt_4
tt_3: mov a,#led_blk
tt_4:
mov led4,a
mov led5,#02h
mov a,flash
clr acc.0
mov flash,a
ret
sec_led:
mov a,sec
mov c,acc.7
mov a,flash
mov acc.1,c
mov acc.2,c
mov flash,a
mov a,sec
clr acc.7
lcall bcd_8
mov led1,a
mov a,b
mov led2,a
mov a,#led_blk
mov led3,a
mov led4,a
mov led5,#led_c
mov a,flash
setb acc.0
mov flash,a
ret
wei_ti:
mov a,timer_no
mov c,acc.7
mov a,flash
mov acc.1,c
mov acc.2,c
mov flash,a
mov a,timer_no
clr acc.7
lcall bcd_8
mov led1,a
mov a,b
mov led2,a
mov a,#led_blk
mov led3,a
mov led4,a
mov led5,#led_e
mov a,flash
setb acc.0
mov flash,a
ret
year_led:
mov a,year
mov c,acc.7
mov a,flash
mov acc.1,c
mov acc.2,c
mov flash,a
mov a,year
clr acc.7
lcall bcd_8
mov led1,a
mov a,b
mov led2,a
mov a,#00h
mov led3,a
mov led5,#led_blk
mov led4,#02h
mov a,flash
setb acc.0
mov flash,a
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:
clr led_1
clr led_2
clr led_3
clr led_4
clr led_5
mov dptr,#led_asc
;***************************led1
mov a,flash
mov c,acc.1
anl c,timer_50ms
jc led_led2
mov a,led1
movc a,@a+dptr
cpl a
;acall ha_j
mov p1,a
setb led_1
acall timer_1ms
clr led_1
;*************************led2
led_led2:
mov a,flash
mov c,acc.2
anl c,timer_50ms
jc led_led3
mov a,led2
movc a,@a+dptr
cpl a
mov b,a
mov a,flash
mov c,acc.0
mov a,b
mov acc.0,c
mov p1,a
setb led_2
acall timer_1ms
clr led_2
;*************************led3
led_led3:
mov a,flash
mov c,acc.3
anl c,timer_50ms
jc led_led4
mov a,led3
movc a,@a+dptr
;acall ha_j
cpl a
mov b,a
mov a,flash
mov c,acc.0
mov a,b
mov acc.0,c
mov p1,a
setb led_3
acall timer_1ms
clr led_3
;*************************led4
led_led4:
mov a,flash
mov c,acc.4
anl c,timer_50ms
jc led_led5
mov a,led4
movc a,@a+dptr
cpl a
mov p1,a
setb led_4
acall timer_1ms
clr led_4
;*************************led5
led_led5:
mov a,flash
mov c,acc.5
anl c,timer_50ms
jc led_end
mov a,led5
movc a,@a+dptr
cpl a
mov p1,a
setb led_5
acall timer_1ms
acall timer_1ms
acall timer_1ms
clr led_5
;*************************
led_end:
mov p1,#0ffh
mov a,p3
orl a,#11111000b
mov p3,a
ret
led_asc:
db 11111100B;0
db 01100000B;1
db 11011010B;2
db 11110010B;3
db 01100110B;4
db 10110110B;5
db 10111110B;6
db 11100000B;7
db 11111110B;8
db 11110110B;9
DB 00000000B;BLACK=>0aH
DB 00111110B;u=>b
dB 01111001B;e=>C
DB 00110000B;1,=>D
;**********************************
;delay
;********************************
timer_1ms:
push b
mov r2,#01h
a_1: mov b,#0fh
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
cjne a,#60d ,t1_c_end1
mov a,#00d
mov min ,a
sjmp t1_c_2
t1_c_end1:
mov min ,a
ajmp t1_end
t1_c_2:
inc hour
mov a,hour
cjne a,#24d ,t1_end
mov hour,#00h
; 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 ;
;*****************************************************
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,al1_m
clr acc.7
mov b,a
mov a,min
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 a,al2_m
clr acc.7
mov b,a
mov a,min
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 24d
db 08d
db 32d
db 13d
db 60d
db 24d
db 60d
db 24d
db 60d
db 99d
db 30d
led_order_3:
db 00h
db 00d
db 00d
db 01d
db 1d
db 1d
db 00d
db 00d
db 00d
db 00d
db 00d
db 00d
db 00d
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 + -