📄 nc.asm
字号:
clr p1.1
x_r_move_1: cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
inc ox5
mov a, ox5
cjne a, #10, x_r_move_2
mov ox5, #0
inc ox4
mov a, ox4
cjne a, #10, x_r_move_2
mov ox4, #0
inc ox3
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
mov a, ox3
cjne a, #10, x_r_move_2
mov ox3, #0
inc ox2
mov a, ox2
cjne a, #10, x_r_move_2
mov ox2, #0
inc ox1
x_r_move_2: jb x_f, x_r_move_e ;按x键后,只走1步
lcall keyscane
jb k30, x_r_move_1
mov indata5, ox5
mov indata4, ox4
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
x_r_move_e: pop psw
ret
;******************************************************************
x_l_move: push psw ;move x to left
setb x_dir
setb p1.1
x_l_move_1: cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
dec ox5
mov a, ox5
cjne a, #255, x_l_move_2
mov ox5, #9
dec ox4
mov a, ox4
cjne a, #255, x_l_move_2
mov ox4, #9
dec ox3
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
mov a, ox3
cjne a, #255, x_l_move_2
mov ox3, #9
dec ox2
mov a, ox2
cjne a, #255, x_l_move_2
mov ox2, #9
dec ox1
x_l_move_2: jb x_f, x_l_move_e ;按x键后,只走1步
lcall keyscane
jb k32, x_l_move_1
mov indata5, ox5
mov indata4, ox4
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
x_l_move_e: pop psw
ret
;******************************************************************
y_f_move: push psw ;move y forward
clr y_dir
clr p1.3
y_f_move_1: cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
inc oy5
mov a, oy5
cjne a, #10, y_f_move_2
mov oy5, #0
inc oy4
mov a, oy4
cjne a, #10, y_f_move_2
mov oy4, #0
inc oy3
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
mov a, oy3
cjne a, #10, y_f_move_2
mov oy3, #0
inc oy2
mov a, oy2
cjne a, #10, y_f_move_2
mov oy2, #0
inc oy1
y_f_move_2: jb y_f, y_f_move_e ;按y键后,只走1步
lcall keyscane
jb k34, y_f_move_1
mov indata5, oy5
mov indata4, oy4
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
y_f_move_e: pop psw
ret
;******************************************************************
y_b_move: push psw ;move y backward
setb y_dir
setb p1.3
y_b_move_1: cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
dec oy5
mov a, oy5
cjne a, #255, y_b_move_2
mov oy5, #9
dec oy4
mov a, oy4
cjne a, #255, y_b_move_2
mov oy4, #9
dec oy3
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
mov a, oy3
cjne a, #255, y_b_move_2
mov oy3, #9
dec oy2
mov a, oy2
cjne a, #255, y_b_move_2
mov oy2, #9
dec oy1
y_b_move_2: jb y_f, y_b_move_e ;按y键后,只走1步
lcall keyscane
jb k36, y_b_move_1
mov indata5, oy5
mov indata4, oy4
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
y_b_move_e: pop psw
ret
;******************************************************************
tri_enter: push psw
jnb x_f, tri_e_1 ;x function
clr x_f
jnb a_f, tri_e_01
mov ax1, data1
mov ax2, data2
mov ax3, data3
mov ax4, data4
mov ax5, data5
clr a_f
ajmp tri_e_1
tri_e_01: jnb b_f, tri_e_02
mov bx1, data1
mov bx2, data2
mov bx3, data3
mov bx4, data4
mov bx5, data5
clr b_f
ajmp tri_e_1
tri_e_02: jnb c_f, tri_e_03
mov cx1, data1
mov cx2, data2
mov cx3, data3
mov cx4, data4
mov cx5, data5
clr c_f
ajmp tri_e_1
tri_e_03: jnb f_f, tri_e_1
mov ox1, data1
mov ox2, data2
mov ox3, data3
mov ox4, data4
mov ox5, data5
clr f_f
tri_e_1: jnb y_f, tri_e_2 ;y function
clr y_f
jnb a_f, tri_e_11
mov ay1, data1
mov ay2, data2
mov ay3, data3
mov ay4, data4
mov ay5, data5
clr a_f
ajmp tri_e_2
tri_e_11: jnb b_f, tri_e_12
mov by1, data1
mov by2, data2
mov by3, data3
mov by4, data4
mov by5, data5
clr b_f
ajmp tri_e_2
tri_e_12: jnb c_f, tri_e_13
mov cy1, data1
mov cy2, data2
mov cy3, data3
mov cy4, data4
mov cy5, data5
clr c_f
sjmp tri_e_2
tri_e_13: jnb f_f, tri_e_2
mov oy1, data1
mov oy2, data2
mov oy3, data3
mov oy4, data4
mov oy5, data5
clr f_f
tri_e_2: jb H_f, tri_e_20 ;H move function
ajmp tri_e_3
tri_e_20: clr H_f
jnb a_f, tri_e_21
clr a_f
mov data1, ax1
mov data2, ax2
mov data3, ax3
mov data4, ax4
mov data5, ax5
lcall move_x
mov data1, ay1
mov data2, ay2
mov data3, ay3
mov data4, ay4
mov data5, ay5
lcall move_y
sjmp tri_e_3
tri_e_21: jnb b_f, tri_e_22
clr b_f
mov data1, bx1
mov data2, bx2
mov data3, bx3
mov data4, bx4
mov data5, bx5
lcall move_x
mov data1, by1
mov data2, by2
mov data3, by3
mov data4, by4
mov data5, by5
lcall move_y
sjmp tri_e_3
tri_e_22: jnb c_f, tri_e_3
clr c_f
mov data1, cx1
mov data2, cx2
mov data3, cx3
mov data4, cx4
mov data5, cx5
lcall move_x
mov data1, cy1
mov data2, cy2
mov data3, cy3
mov data4, cy4
mov data5, cy5
lcall move_y
tri_e_3: pop psw
ret
;******************************************************************
move_x: push psw
lcall sub_x
jb x_dir, move_x0
clr p1.1
sjmp move_x01
move_x0: setb p1.1
move_x01: mov p1.1, x_dir
mov indata1, ox1
mov indata2, ox2
mov indata3, ox3
mov indata4, ox4
mov indata5, ox5
lcall led
jnb no_move_f, move_x_1
ajmp move_x_e
move_x_1: cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
cpl p1.0
lcall delay1ms
jb x_dir, move_x_2
inc ox5
mov a, ox5
cjne a, #10, move_x_20
mov ox5, #0
inc ox4
mov a, ox4
cjne a, #10, move_x_20
mov ox4, #0
inc ox3
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
mov a, ox3
cjne a, #10, move_x_20
mov ox3, #0
inc ox2
mov a, ox2
cjne a, #10, move_x_20
mov ox2, #0
inc ox1
sjmp move_x_20
move_x_2: dec ox5
mov a, ox5
cjne a, #255, move_x_20
mov ox5, #9
dec ox4
mov a, ox4
cjne a, #255, move_x_20
mov ox4, #9
dec ox3
mov indata3, ox3
mov indata2, ox2
mov indata1, ox1
lcall led
mov a, ox3
cjne a, #255, move_x_20
mov ox3, #9
dec ox2
mov a, ox2
cjne a, #255, move_x_20
mov ox2, #9
dec ox1
move_x_20: mov a, data1
cjne a, ox1, move_x_21
mov a, data2
cjne a, ox2, move_x_21
mov a, data3
cjne a, ox3, move_x_21
mov a, data4
cjne a, ox4, move_x_21
mov a, data5
cjne a, ox5, move_x_21
sjmp move_x_22
move_x_21: ajmp move_x_1
move_x_22: mov indata1, ox1
mov indata2, ox2
mov indata3, ox3
mov indata4, ox4
mov indata5, ox5
lcall led
move_x_e: clr no_move_f
pop psw
ret
;******************************************************************
move_y: push psw
lcall sub_y
jb y_dir, move_y0
clr p1.3
sjmp move_y01
move_y0: setb p1.3
move_y01: mov indata1, oy1
mov indata2, oy2
mov indata3, oy3
mov indata4, oy4
mov indata5, oy5
lcall led
jnb no_move_f, move_y_1
ajmp move_y_e
move_y_1: cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
cpl p1.2
lcall delay1ms
jb y_dir, move_y_2
inc oy5
mov a, oy5
cjne a, #10, move_y_20
mov oy5, #0
inc oy4
mov a, oy4
cjne a, #10, move_y_20
mov oy4, #0
inc oy3
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
mov a, oy3
cjne a, #10, move_y_20
mov oy3, #0
inc oy2
mov a, oy2
cjne a, #10, move_y_20
mov oy2, #0
inc oy1
sjmp move_y_20
move_y_2: dec oy5
mov a, oy5
cjne a, #255, move_y_20
mov oy5, #9
dec oy4
mov a, oy4
cjne a, #255, move_y_20
mov oy4, #9
dec oy3
mov indata3, oy3
mov indata2, oy2
mov indata1, oy1
lcall led
mov a, oy3
cjne a, #255, move_y_20
mov oy3, #9
dec oy2
mov a, oy2
cjne a, #255, move_y_20
mov oy2, #9
dec oy1
move_y_20: mov a, data1
cjne a, oy1, move_y_21
mov a, data2
cjne a, oy2, move_y_21
mov a, data3
cjne a, oy3, move_y_21
mov a, data4
cjne a, oy4, move_y_21
mov a, data5
cjne a, oy5, move_y_21
sjmp move_y_22
move_y_21: ajmp move_y_1
move_y_22: mov indata1, oy1
mov indata2, oy2
mov indata3, oy3
mov indata4, oy4
mov indata5, oy5
lcall led
move_y_e: clr no_move_f
pop psw
ret
;******************************************************************
;decide o>d or d>o
;******************************************************************
sub_x: push psw
mov r2, #5
mov r0, #data1
mov r1, #ox1
sub_x_0: clr c
mov a, @r0
subb a, @r1
jc sub_x_1
cjne a, #0, sub_x_2
inc r0
inc r1
djnz r2, sub_x_0
sub_x_1: setb x_dir ;o>d
mov a, data1
cjne a, ox1, sub_x_e
mov a, data2
cjne a, ox2, sub_x_e
mov a, data3
cjne a, ox3, sub_x_e
mov a, data4
cjne a, ox4, sub_x_e
mov a, data5
cjne a, ox5, sub_x_e
setb no_move_f
sjmp sub_x_e
sub_x_2: clr x_dir ;d>o
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -