📄 plal.asm
字号:
proc plal
plal:
call voice1k
setb c ;在进位位设置乒乓球
mov r0,#01h ; 设置球的位置范围
mov r1,#02h ;设置控制键
clr a
mov r6,#04h ;设置移位次数
pk0: jnb 01h, tj ;pc4发球转移
pp1: rrc a
jmp pk
tj: rlc a
pk: movx @r0,a ;输出乒乓球的位状态
mov r5,50h
djnz r6,pk1 ;判断四位移完否,不完转到pk1
jmp pk2 ;移动后四位
pk1: call d20ms
push a ;保存a的状态
movx a,@r1
jnb acc.1,t0 ;方向键按下否? 1:按下
jmp t1
t0:setb 03h
t1: jnb acc.2,pk3
jnb acc.3,pk3 ;如果左拍提前击球则失误转移
pop a
djnz r5,pk1 ;秒延时没到,继续循环
jmp pk0 ;秒到,乒乓球继续移位
pk2:
mov r5,50h
tdly: djnz r5,t
jmp ttt
t: call d20ms
jmp tdly
ttt: mov a,#0h
mov a,#0h
movx @r0,a ;熄灭右方发光二极管
mov r6,#04h
mov r0,#00h
mov r5,50h
jnb 03h, tt0 ;没按方向键,走pc2
mov a, #00001000b ;走pc3
a0: rl a
movx @r0,a ;输出乒乓球状态
mov r5,50h
djnz r6,a1 ;判断四位移完否,不完转到a1
jmp pk4
a1: call d20ms
push a ;保存a的状态
movx a,@r1
jnb acc.2,pk3
jnb acc.3,pk3 ;如果左拍提前击球则失误转移
pop a
djnz r5, a1 ;秒延时没到,继续循环
jmp a0
tt0:
mov a, #00010000b ;走pc2
b0: rr a
movx @r0,a ;输出乒乓球状态
mov r5,50h
djnz r6,b1 ;判断四位移完否,不完转到a1
jmp pk4
b1: call d20ms
push a ;保存a的状态
movx a,@r1
jnb acc.2,pk3
jnb acc.3,pk3 ;如果左拍提前击球则失误转移
pop a
djnz r5, b1 ;秒延时没到,继续循环
jmp b0
pk4: mov r5,50h
c1: call d20ms
movx a,@r1
jnb 03h,c2 ;没有按下方向键,检测pc2
jnb acc.3,c3 ; 有按下方向键,检测pc3
cc: djnz r5, c1
jmp pk3
c2: jnb acc.2,jplr
jmp cc
c3: setb 00h ;设置左方接球人的标记
jplr:
clr 01h
clr 03h
call plar
pk3: call voice2k
call voice2k
call voice2k
inc r4
mov a,r4
da a
mov 41h,a
call disp
call disp
call d20ms
call d20ms
call d20ms
call d20ms
mov a,r4
cjne a,52h,ddisp ;十一分制
setb p1.7
inc 49h
mov 41h,49h
mov 40h,48h
call disp
call voice15k
clr p1.7
jmp main1
ddisp: clr 01h ;清除先前的发球标志
clr 03h
ll0: mov r0,#02h ;等待右方发球
movx a,@r0
jnb acc.4,jpll
jnb acc.5,lj
jmp ll0
lj: setb 01h ;建立发球人的标记
jpll:
jmp plal
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -