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

📄 nc.asm

📁 一个简单得数控中心源代码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		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 + -