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

📄 lpc936

📁 单轴简易伺服电机控制系统
💻
📖 第 1 页 / 共 4 页
字号:
	ADD		A,#30H
	ACALL	LCDW_DAT
	MOV		A,#' '
	ACALL	LCDW_DAT
	SJMP	DSP5
DSP4:
	MOV		A,TMP_4+1
	SWAP	A
	ANL		A,#0FH
	ADD		A,#30H
	ACALL	LCDW_DAT
	MOV		A,TMP_4+1
	ANL		A,#0FH
	ADD		A,#30H
	ACALL	LCDW_DAT
DSP5:
;	MOV		A,M_PAGE
;	jz		dd0
;	sjmp	ddd1
dd0:
	mov		a,#'.'
dd1:
	ACALL	LCDW_DAT
ddd1:
	JNB		M_UPD,DSP6
	JB		FLASH,DSP6
	MOV		A,#1
	CJNE	A,C_UPD,DSP8
	MOV		A,TMP_4
	ANL		A,#0FH
	ADD		A,#30H
	MOV		R2,A
	MOV		A,#' '		
	SJMP	DSP7
DSP8:
	MOV		A,C_UPD
	JNZ		DSP6
	MOV		R2,#' '
	SJMP	DSP18	
DSP6:
	MOV		A,TMP_4
	ANL		A,#0FH
	ADD		A,#30H
	MOV		R2,A
DSP18:
	MOV		A,TMP_4
	SWAP	A
	ANL		A,#0FH
	ADD		A,#30H
	
DSP7:
	ACALL	LCDW_DAT
	MOV		A,R2
	ACALL	LCDW_DAT
	MOV		R2,#4
	mov		a,M_PAGE
	jz		dsp17
	mov r2,#5

DSP17:
	MOV		A,#' '
	ACALL	LCDW_DAT
	DJNZ	R2,DSP17
;;;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		A,#88H		   	;显示坐标值
	ACALL	LCDW_COM
	mov		a,M_PAGE
	jz		ddd2
	mov r2,#11

Ddd3:
	MOV		A,#' '
	ACALL	LCDW_DAT
	DJNZ	R2,Ddd3
	ljmp ddd4
;
ddd2:
	JNB		M_UPD,DSP16
	JB		FLASH,DSP16
	MOV		A,#4
	CJNE	A,C_UPD,DSP16
	MOV		R2,#10
DSP9:
	MOV		A,#' '		
	ACALL	LCDW_DAT
	DJNZ	R2,DSP9
	SJMP	DSP10
DSP16:
	MOV		R0,#GX_UPD
	ACALL	HBCD2A
	JB		XGDIR,DSP11
	MOV		A,#'+'
	SJMP	DSP12
DSP11:
	MOV		A,#'-'
DSP12:
	ACALL	LCDW_DAT
	MOV		R0,#TMP_4+3
	MOV		R2,#3
	ACALL	DSP13
	MOV		A,#'.'
	ACALL	LCDW_DAT
	MOV		R2,#1
	ACALL	DSP13

DSP10:
	MOV A,#' '
	LCALL LCDW_DAT
ddd4:
	MOV DPTR,#TABSPED
	MOV A,4EH
	MOV B,#2
	MUL AB
	MOV R3,A
	INC A
	MOVC A,@A+DPTR
	MOV R2,A
	MOV A,R3
	MOVC A,@A+DPTR
	LCALL LCDW_DAT
	MOV A,R2
	LCALL LCDW_DAT		;倍率显示
	MOV A,#'/'
	LCALL LCDW_DAT		
	MOV A,#'1'
	LCALL LCDW_DAT		
	MOV A,#'6'
	LCALL LCDW_DAT		

RET

	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
DSP13:					   ;转换成ASC2
	MOV		A,@R0
	SWAP	A
	ANL		A,#0FH
	ADD		A,#30H
	ACALL	LCDW_DAT
	MOV		A,@R0
	ANL		A,#0FH
	ADD		A,#30H
	ACALL	LCDW_DAT
	DEC		R0
	DJNZ	R2,DSP13	
	RET
;*****************************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
T10:
	PUSH	ACC
	PUSH	DPH
	PUSH	DPL
	PUSH	PSW					;键盘、输入信号、显示器处理程序
	SETB	RS0
	CLR		RS1
	MOV		TH1,#HIGH(THTL1)
	MOV		TL1,#LOW(THTL1)
	inc     tmrl
mov a,tmrl
jnz t103
	mov r0,#tmrh
inc @r0
t103:
	ACALL	INPUTX			  ;239T    R0-R5,TMP-3,TMP-3+1,BUFB,32-3DH,X00-12.
	LCALL	INXEXE			  ;85T
	ANL		GING,#011h
	LCALL	INPUTK			  ;5T
;push acc
	LCALL	INKEXE			  ;14T
	LCALL	DTSP			;显示缓存数据传送
	JNB		LCDE,T102
lcall LCDSETUP
	LCALL	DSP_X	
	JB		DSPE,T102
	LCALL	DSP

MOV R2,#0
MOV R3,#high(bc_2)
MOV R4,#low(bc_2)
lcall speedaaa
T102:
	
	MOV		A,GING
	JZ		T100
jnb x04r,T100
	SETB	TR0
	SETB	ET0
	MOV		IP0,#02H
	SJMP	T101
T100:
	CLR		ET0
	CLR		TR0
	mov		ging,#0
	LCALL	W_E2P
T101:
	LCALL	CLRWDT
T107:
	POP		PSW
	POP		DPL
	POP		DPH
	POP		ACC					
	RETI					 ;共382T
 //**************************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
MOVP:
	MOV		A,R0
	ADD		A,#3
	MOV		R1,A
	MOV		A,@R0
	MOV		@R1,A
	INC		R0
	INC		R1
	MOV		A,@R0
	MOV		@R1,A
	INC		R0
	INC		R1
	MOV		A,@R0
	MOV		@R1,A		
	RET
MOVP_B:
MOV	A,G1PING
ORL	A,G1PING+1
ORL A,G1PING+2
JNZ MOVP_B3
RET
MOVP_B3:
	MOV		A,R0
	PUSH	ACC
	MOV		R0,#0C0H
	MOV		A,@R0
	CJNE	A,#055H,MOVP_B0
	JNB		G1DIR,MOVP_B1
MOVP_B2:		;;;方向变化,加间隙量
	MOV		A,G1PING

	ADD		A,G2P
;	ADD		A,#2CH

	MOV		G1PING,A
	MOV		A,G1PING+1

	ADDC	A,G2P+1
;	ADDC	A,#01

	MOV		G1PING+1,A
	MOV		A,G1PING+2

	ADDC	A,G2P+2
;	ADDC	A,#0

	MOV		G1PING+2,A
MOVP_B1:
	POP		ACC
	MOV		R0,A
	RET
MOVP_B0:
	JNB		G1DIR,MOVP_B2
	SJMP	MOVP_B1
 ;***************************
 	LJMP 	ERR
	LJMP 	ERR
;**************************
INXEXE:
	MOV		R0,#X00_07
	MOV		R1,#X00_07R
	LCALL	XRLX
	INC		R0
	INC		R1
	LCALL	XRLX
	INC		R0
	INC		R1				;上升沿位在X00_07中,新值在X00_07R中
	LCALL	XRLX			;上升沿送到◎R0内,新值送到@R1
;::::::::::::::::::::::::::::::::::::
	MOV		R0,#G1P
	JNB		X02R,IX0
	JB		X03R,IX1END
	CLR		C1DIR
	SJMP	IX2
IX0:
	JNB		X03R,IX3
	SETB	C1DIR
IX2:
	CLR		G1ING
	JNB		P1DIR,IX7
	CPL		C1DIR
IX7:	
	SETB	C1G
	SJMP	IX1END
IX3:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
					;点动处理
	CLR		C1G		;清除连续进给标志
	JB		G1ING,IX1END
	JNB		X00,IX4
	JB		X01R,IX1END
	CLR		G1DIR
	SJMP	IX5
IX4:
	JNB		X01,IX1END
	JB		X00R,IX1END
	SETB	G1DIR
IX5:
	JNB		P1DIR,IX6
	CPL		G1DIR
IX6:
	LCALL	MOVP
	LCALL	MOVP_B
	SETB	G1ING
;********************************
IX1END:
ret
	MOV		R0,#G2P
	JNB		X06R,IX20
	JB		X07R,IX2END
	CLR		C2DIR
	SJMP	IX22
IX20:
	JNB		X07R,IX23
	SETB	C2DIR
IX22:
	CLR		G2ING
	JNB		P2DIR,IX27
	CPL		C2DIR
IX27:	
	SETB	C2G
	SJMP	IX2END
IX23:
	CLR		C2G
	JB		G2ING,IX2END
	JNB		X04,IX24
	JB		X05R,IX2END
	CLR		G2DIR
	SJMP	IX25
IX24:
	JNB		X05,IX2END
	JB		X04R,IX2END
	SETB	G2DIR
IX25:
	JNB		P2DIR,IX26
	CPL		G2DIR
IX26:
	LCALL	MOVP
	SETB	G2ING
;********************************
IX2END:
ret
	MOV		R0,#G3P
	JNB		X10R,IX30
	JB		X11R,IX3END
	CLR		C3DIR
	SJMP	IX32
IX30:
	JNB		X11R,IX33
	SETB	C3DIR
IX32:
	CLR		G3ING
	JNB		P3DIR,IX37
	CPL		C3DIR
IX37:	
	SETB	C3G
	SJMP	IX3END
IX33:
	CLR		C3G
	JB		G3ING,IX3END
	JNB		X08,IX34
	JB		X09R,IX3END
	CLR		G3DIR
	SJMP	IX35
IX34:
	JNB		X09,IX3END
	JB		X08R,IX3END
	SETB	G3DIR
IX35:
	JNB		P3DIR,IX36
	CPL		G3DIR
IX36:
	LCALL	MOVP
	SETB	G3ING
;************************************
IX3END:
RET		;取消4轴进给
  	MOV		R0,#G4P
	JNB		X14R,IX40
	JB		X15R,IX4END
	CLR		C4DIR
	SJMP	IX42
IX40:
	JNB		X15R,IX43
	SETB	C4DIR
IX42:
;	CLR		G4ING
	JNB		P4DIR,IX47
	CPL		C4DIR
IX47:	

	SETB	C4G
	SJMP	IX4END
IX43:
	CLR		C4G
	JB		G4ING,IX4END
	JNB		X12,IX44
	JB		X13R,IX4END
	CLR		G4DIR
	SJMP	IX45
IX44:
	JNB		X13,IX4END
	JB		X12R,IX4END
	SETB	G4DIR
IX45:
	JNB		P4DIR,IX46
;	CPL		G4DIR
IX46:
	lCALL	MOVP
;	SETB	G4ING
IX4END:
	RET	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
INDE:
	MOV		A,@R0
	INC		R0
	ORL		A,@R0
	INC		R0
	ORL		A,@R0
	DEC		R0
	DEC		R0
	JNZ		ID2
	MOV		C,F0
	CLR		F0
	SJMP	ID3
ID2:
	JC		ID4
	JB		F0,ID5
ID6:
	CLR		F0
	SJMP	ID3
ID4:JB		F0,ID6
ID5:
	SETB	F0
ID3:	
	JB		F0,INDE0
	MOV		F0,C
	MOV		A,@R0
	ADD		A,#1
	MOV		@R0,A
	INC		R0
	MOV		A,@R0
	ADDC	A,#0
	MOV		@R0,A
	INC		R0
	MOV		A,@R0
	ADDC	A,#0
	MOV		@R0,A
	MOV		C,F0
	RET
	LJMP 	ERR
	LJMP 	ERR
;**************************
DEC1:
;	RET
	NOP
INDE0:
	MOV		F0,C
	CLR		C
	MOV		A,@R0
	SUBB	A,#1
	MOV		@R0,A
	INC		R0
	MOV		A,@R0
	SUBB	A,#0
	MOV		@R0,A
	INC		R0
	MOV		A,@R0
	SUBB	A,#0
	MOV		@R0,A
	MOV		C,F0
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
DIRPUS1:
MOV	A,R0
PUSH ACC
MOV R0,#0C0H
MOV A,#055H
 	JC		DP10
	SETB	DIR1
	CLR		PUS1
	SJMP	DP11
DP10:
	SETB	PUS1
	CLR		DIR1
MOV A,#0AAH
DP11:
	MOV	 @R0,A		;进给方向保存到P4DIR
POP ACC
MOV R0,A
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RE2P:
	MOV		R2,#4
	MOV		R3,#0
RE2P0:
	CLR		A
	MOVC	A,@A+DPTR
	MOV		@R0,A
	INC		R0
	INC		DPTR
	CJNE	R2,#1,RE2P1
	SJMP	RE2P2
RE2P1:
	ADD		A,R3	
	MOV		R3,A
RE2P2:
	DJNZ	R2,RE2P0
	RET
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
E2PTOG1P:
	MOV		R2,#3
E2PTOGP0:
	MOV		A,@R0
	MOV		@R1,A
	INC		R0
	INC		R1
	DJNZ	R2,E2PTOGP0
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
RE2PS1:
	MOV		DPL,R4
	MOV		DPH,R5
	MOV		R0,#E2P_4
	ACALL	RE2P
	MOV		C,ACC.7
	MOV		F0,C
	CLR		ACC.7
	CPL		A
	XCH		A,R3
	SETB	ACC.7
	XRL		A,R3
	JNZ		INGZ0
	MOV		R0,#E2P_4
	ACALL	E2PTOG1P
	CLR		C
	SJMP	INGZ1
INGZ0:
	CLR		A
	MOV		R0,#E2P_4
INGZ2:
	MOV		@R0,A
	MOV		@R1,A
	INC		R0
	INC		R1
	CJNE	R0,#E2P_4+3,INGZ2
	CPL		A
	MOV		@R0,A
	MOV		R0,#E2P_4
	ACALL	PGM_USER
	SETB	C
	CLR		F0
INGZ1:
	RET
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
INTGXP:
	CLR		F0
	MOV		R4,#LOW(E2PA)
	MOV		R5,#HIGH(E2PA)
	MOV		R1,#G1P
	ACALL	RE2PS1
	MOV		C,F0
	MOV		P1DIR,C
	MOV		R4,#LOW(E2PA)+10H
	MOV		R1,#G1P+6
	ACALL	RE2PS1
	MOV		C,F0
	MOV		P2DIR,C

	MOV		R4,#LOW(E2PA)+20H
	MOV		R1,#G1P+12
	ACALL	RE2PS1
	MOV		C,F0
	MOV		P3DIR,C
	MOV		R4,#LOW(E2PA)+30H
	MOV		R1,#G1P+18
	ACALL	RE2PS1
	MOV		C,F0
	MOV		P4DIR,C
	RET
;;;;;;;;;;;;;;;;;;;;;
	MOV		DPTR,#E2PB
	MOV		R0,#G1X
	MOV		R2,#12
INTGXP0:
	CLR		A
	MOVC	A,@A+DPTR
	MOV		@R0,A
	INC		R0
	INC		DPTR
	DJNZ	R2,INTGXP0
	CLR		A
	MOVC	A,@A+DPTR
	ANL		A,#0F0H
	MOV		R2,A
	MOV		A,22H
	ANL		A,#0FH
	ORL		A,R2
	MOV		22H,A
	RET
			
;**************************


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;0E00H-0FFFH = 512B ISP代码

;0DC0H-0DFFH = 64B E2PROM数据区	4
;0D80H-0DBFH = 64B E2PROM数据区3
;0D40H-0D7FH = 64B E2PROM数据区2
;0D00H-0D3FH = 64B E2PROM数据区1

;0C00H-0CFFH = TAB表格区

;0C00H-0FFFH = 扇区3  (不加密)
;0800H-0BFFH = 扇区2
;0400H-07FFH = 扇区1
;0000H-03FFH = 扇区0

	E2PA	EQU	30c0h;   0DC0H
	E2PB	EQU	3080h;   0D80H
	E2PC	EQU	3040h;   0D40H
W_E2P:
	MOV		R4,#LOW(E2PA)
	MOV		R5,#HIGH(E2PA)
	JNB		E2G1P,W_E2P2P
	CLR		E2G1P
	MOV		R3,#0
	MOV		C,P1DIR
	MOV		F0,C
	SJMP	W_E2PA	
W_E2P2P:
	JNB		E2G2P,W_E2PEND
	MOV		R3,#1
	CLR		E2G2P
	MOV		C,P2DIR
	MOV		F0,C
W_E2PA:
	MOV		B,R3
	MOV		A,#16
	MUL		AB
	ADD		A,R4
	MOV		R4,A
	MOV		B,R3
	MOV		A,#6
	MUL		AB
	ADD		A,#G1P
W_E2PA2:
	MOV		R1,A
	MOV		R2,#3
	MOV		R3,#0
	MOV		R0,#E2P_4
W_E2PA0:
	MOV		A,@R1
	MOV		@R0,A
	ADD		A,R3
	MOV		R3,A
	INC		R0
	INC		R1
	DJNZ	R2,W_E2PA0
	CPL		A
	MOV		C,F0
	MOV		ACC.7,C
	MOV		@R0,A
W_E2PA1:
	ACALL	PGM_USER
W_E2PEND:
	RET
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;************************************************
;;*编程用户代码										 * 			
;;************************************************
;;* 													*
;;* 输入: 											*
;;* R2 = 编程字节数(字节) 						*			
;;* DPH = 页地址MSB(字节)							 *		
;;* DPL = 页地址LSB(字节)							 *		
;;* R0 = RAM数据缓冲区指针(字节) 				*
;;* 输出											: *
;;* R0 = 状态(字节)								 *
;;* C = 无错时清零,有错时置位						 *	
;;************************************************
	LOAD	 EQU 00H
	EP		 EQU 68H
PGM_USER:
	MOV		R2,#4

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -