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