📄 fxyj.asm
字号:
org 0000h
ajmp main
org 0030h
main:mov p2,#00h
mov r1,#30h
mov r7,#10h
circ:mov @r1,#00h ;30h到3fh清0
inc r1
djnz r7,circ
mov r1,#30h
baks:mov r0,#32h ;键盘
mov r2,#0feh
mov a,r2
mov dptr,#tab
loop:mov 33h,#0ah ;显示
mov 37h,#0ah
mov a,r2
mov p0,a
mov a,@r0
movc a,@a+dptr
mov p3,a
acall dy10ms
mov a,r2
jnb acc.7,baks2
rl a
mov r2,a
inc r0
ajmp loop
baks2:mov p1,#0fh
acall key
jnz ctnu
ajmp baks
dy10ms:mov r7,#02h
dl0:mov r6,#0ffh
dl10:djnz r6,dl10
djnz r7,dl0
ret
ctnu:acall delay
mov p1,#0fh
acall key
jnz row
ajmp baks
row: mov r3,#00h
mov a,#0efh
mov p1,a
acall key
jnz line
mov r3,#04h
mov a,#0dfh
mov p1,a
acall key
jnz line
mov r3,#08h
mov a,#0bfh
mov p1,a
acall key
jnz line
mov r3,#0ch
mov a,#7fh
mov p1,a
acall key
jnz line
ajmp baks
line:jnb acc.0,line1
mov a,#00h
add a,r3
push acc
ajmp nokeys
line1:jnb acc.1,line2
mov a,#01h
add a,r3
push acc
ajmp nokeys
line2:jnb acc.2,line3
mov a,#02h
add a,r3
push acc
ajmp nokeys
line3:jnb acc.3,line4
mov a,#03h
add a,r3
push acc
ajmp nokeys
line4:ajmp baks
nokeys:mov p1,#0fh
acall key
jnz nokeys
pop acc
mov @r1,a
inc r1
test1: clr c ;进水灯开
mov a,30h
subb a,#0ch
jz jinshui1
sjmp test2
jinshui1:mov p2,#01h
test2: clr c ;进水灯关
mov a,31h
subb a,#0ch
jz jinshui2
sjmp test3
jinshui2:mov p2,#00h
test3: clr c
mov a,3ah
subb a,#0bh
jz start ;定时后转移到倒计时
ajmp baks
key: mov a,p1
cpl a
anl a,#0fh
ret
delay:mov r7,#18h
tm: mov r6,#0ffh
tm6: djnz r6,tm6
djnz r7,tm
ret
start:ljmp begin ;定时器
org 000bh ;定时器T0中断入口
ljmp serve
org 0200h
begin:mov tmod,#01h
mov 20h,#14h
setb et0 ;开定时器T0中断
setb ea ;CPU开中断
mov th0,#3ch
mov tl0,#0b0h
setb tr0 ;启动定时器T0
acall xian
serve:push psw
push acc
mov th0,#3ch
mov tl0,#0b0h
djnz 20h,retunt
mov 20h,#14h
mov a,32h
orl a,34h
orl a,35h
jz shuai
xi:mov p2,#04h ;洗衣
mov a,35h
jz adj1
dec 35h
ajmp retunt
adj1: ;倒计时调整
mov a,34h
jz adj2
dec 34h
mov 35h,#09h
ajmp retunt
adj2:
dec 32h
mov 35h,#09h
mov 34h,#05h
ajmp retunt
shuai: ;甩干放水
mov p2,#10h
mov a,36h
orl a,38h
orl a,39h
jz exit
mov a,39h
jz adj11
dec 39h
ajmp retunt
adj11: ;倒计时调整
mov a,38h
jz adj22
dec 38h
mov 39h,#09h
ajmp retunt
adj22:
dec 36h
mov 39h,#09h
mov 38h,#05h
ajmp retunt
retunt:pop acc
pop psw
reti
xian: mov r1,#32h ;显示子程序
mov r2,#0feh
mov a,r2
mov dptr,#tab
lp1: mov 33h,#0ah
mov 37h,#0ah
mov a,r2
mov p0,a
mov a,@r1
movc a,@a+dptr
mov p3,a
acall d10ms
mov a,r2
jnb acc.7,xian
rl a
mov r2,a
inc r1
ajmp lp1
ret
tab:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,7fh
d10ms:mov r7,#02h
dl:mov r6,#0ffh
dl1:djnz r6,dl1
djnz r7,dl
ret
exit: mov p2,#40h ;结束
clr ea ;清中断
sjmp xian
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -