📄 clock.asm
字号:
led1 equ 21h
led2 equ 22h
led3 equ 23h
led4 equ 24h
led5 equ 25h
led6 equ 26h
xscx equ 27h
hor equ 30h
min equ 31h
sec equ 32h
sw1 bit p2.7
sw2 bit p2.6
sw3 bit p2.5
sw4 bit p2.4
sw5 bit p2.3
sw6 bit p2.2
beep bit p2.0
key bit p3.3
org 000h
ljmp start
org 00bh
ljmp timer0
org 100h
start:mov sp,#40h ;初始化注意清零的时候不要把r0,r1也同时清零了会造成死循环 清自己。
;清零的时候00H是r0,7f最后没清到他 但r1就会清到自己
mov r0,#7fh
clear:mov a,#00h
mov @r0,a
djnz r0,clear
mov p0,#0ffh ;管脚初始化
mov p2,#0ffh
mov p3,#0ffh
mov p1,#0ffh
mov ie,#82h ;开定时中断0
mov tmod,#01h ;定时器0工作在模式1
mov th0,#high(65536-6667)
mov tl0,#low(65536-6667)
setb tr0
mov r7,#250
mov xscx,#7fh
mov r0,#21h
wait_key:jb key,$
jnb sw1,sw1_ok
jnb sw2,sw2_ok
jnb sw3,sw3_ok
jnb sw4,sw4_ok
jnb sw5,sw5_ok
jnb sw6,sw6_oka
jmp wait_key
sw6_oka: ljmp sw6_ok
sw1_ok: mov a,hor
cjne a,#23,sw1_over
mov hor,#00h
clr beep
lcall delay
setb beep
sjmp wait_key
sw1_over:inc hor
clr beep
lcall delay
setb beep
sjmp wait_key
sw2_ok: mov a,hor
cjne a,#00h,sw2_over
mov hor,#23
clr beep
lcall delay
setb beep
sjmp wait_key
sw2_over:dec hor
clr beep
lcall delay
setb beep
sjmp wait_key
sw3_ok: mov a,min
cjne a,#59,sw3_over
mov min,#00h
clr beep
lcall delay
setb beep
sjmp wait_key
sw3_over:inc min
clr beep
lcall delay
setb beep
sjmp wait_key
sw4_ok: mov a,min
cjne a,#00h,sw4_over
mov min,#59
clr beep
lcall delay
setb beep
sjmp wait_key
sw4_over:dec min
clr beep
lcall delay
setb beep
ljmp wait_key
sw5_ok: mov a,sec
cjne a,#59,sw5_over
mov sec,#00h
clr beep
lcall delay
setb beep
ljmp wait_key
sw5_over:inc sec
clr beep
lcall delay
setb beep
ljmp wait_key
sw6_ok: mov a,sec
cjne a,#00h,sw6_over
mov sec,#59
clr beep
lcall delay
setb beep
ljmp wait_key
sw6_over:dec sec
clr beep
lcall delay
setb beep
ljmp wait_key
timer0:push acc
push psw
mov th0,#high(65536-6667)
mov tl0,#low(65536-6667)
djnz r7,xianshi ;处理后显示
mov r7,#250
inc sec
mov a,sec
cjne a,#60,xianshi
mov sec,#00h
inc min
mov a,min
cjne a,#60,xianshi
mov min,#00h
inc hor
mov a,hor
cjne a,#24,xianshi
xianshi:mov a,sec
lcall bin_bcd
mov led6,b
mov led5,a
mov a,min
lcall bin_bcd
mov led4,b
mov led3,a
mov a,hor
lcall bin_bcd
mov led2,b
mov led1,a
sjmp dir
bin_bcd:mov b,#10
div ab
ret
dir:
mov a,xscx
mov p2,a
mov a,@r0
mov dptr,#tab
movc a,@a+dptr
mov p0,a
mov a,xscx
jnb acc.2,cx
rr a
mov xscx,a
inc r0
sjmp done
cx: mov xscx,#7fh
mov r0,#21h
sjmp done
tab:DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
delay:mov r4,#2
del1:mov r5,#0ffh
del2:mov r6,#0ffh
djnz r6,$
djnz r5,del2
djnz r4,del1
ret
done:pop psw
pop acc
reti
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -