⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plar.asm

📁 乒乓球游戏机设计
💻 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 + -