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

📄 lpc936

📁 单轴简易伺服电机控制系统
💻
📖 第 1 页 / 共 4 页
字号:
    MOV     A,R0
    CLR     C
    SUBB    A,#X00_07R
    JNZ      DSP_XS3
    MOV     A,#8
    SJMP    DSP_XS5
DSP_XS3:
    CJNE    A,#01,DSP_XS4
    MOV     A,#12
    SJMP    DSP_XS5
DSP_XS4:
    MOV     A,#16
DSP_XS5:
    CLR     C
    SUBB    A,R2
    MOVC     A,@A+DPTR
    SJMP    DSP_XS0
DSP_XS0:
    ACALL   LCDW_DAT
    DJNZ    R2,DSP_XS2
    RET
;************************************
DSP_SPED:
	MOV DPTR,#TAB11
	CLR		F0
	ACALL	LCDW_L

RET
DSP_SP0:
	LCALL HBCD2A
	MOV A,TMP_4+1
	ANL A,#0FH
	ADD A,#30H
	LCALL LCDW_DAT
	MOV R0,#TMP_4
	MOV R2,#1
	LCALL DSP13
RET
		
;**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INTLCD:
	ACALL	DELAY
	ACALL	DELAY
	ACALL	DELAY
	ACALL	DELAY
	ACALL	LCDSETUP
	ACALL	DELAY
	ACALL	DELAY
	ACALL	DELAY
	MOV		A,#1
	ACALL	LCDW_COM
	MOV		R7,#20
	ACALL	DELAY 		;显示初始化
	ACALL	DELAY
	ACALL	DELAY
	ACALL	DELAY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;	MOV	    A,#0A0H
;	ACALL	LCDW_COM
;	MOV		R2,#32
;	ACALL	INLCD
;	MOV		DPTR,#TAB12
;	SETB	F0
;	ACALL	LCDW_L
;	MOV	    A,#090H
;	ACALL	LCDW_COM
;	MOV		DPTR,#TAB13
;	SETB	F0
;	ACALL	LCDW_L

; 	MOV		R2,#16
;	ACALL	INLCD
	;;;;;;;;;;;;;;;;屏1
;	MOV		R7,#255
;	MOV		R2,#30
AB3:
;	ACALL	DELAY
;	DJNZ	R2,AB3
;	MOV		R7,#255
;	MOV		R2,#30
;;;;;;;;;;;;;;;;;;;;;;;;;
;	MOV		R7,#255
;	MOV		R2,#30
AB4:
;	ACALL	DELAY
;	DJNZ	R2,AB4

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV	    A,#080H
	ACALL	LCDW_COM
	MOV		R2,#32
	ACALL	INLCD
	MOV		DPTR,#TAB10
	SETB	F0
	ACALL	LCDW_L
 	MOV		R2,#16
	ACALL	INLCD
	;;;;;;;;;;;;;;;;屏2
	MOV		R7,#255
	MOV		R2,#30
AB2:
	ACALL	DELAY
	DJNZ	R2,AB2
	MOV		A,#080H
	ACALL	LCDW_COM
	MOV		R2,#64
	ACALL	INLCD
;;;;;;;;;;;;;;;;;;清屏

	MOV	    A,#080H
	ACALL	LCDW_COM
	MOV		R2,#32
	ACALL	INLCD
	MOV		DPTR,#TAB0
	SETB	F0
	ACALL	LCDW_L
 	MOV		R2,#16
	ACALL	INLCD
	;;;;;;;;;;;;;;;;屏3
	MOV		R7,#255
	MOV		R2,#30
AB1:
	ACALL	DELAY
	DJNZ	R2,AB1
	MOV		A,#080H
	ACALL	LCDW_COM
	MOV		R2,#64
	ACALL	INLCD
;;;;;;;;;;;;;;;;;;清屏

	MOV		A,#080H
	ACALL	LCDW_COM
 	MOV		DPTR,#TAB1
	MOV		R3,#16
	ACALL	LCDWL1
	MOV		R2,#16
	ACALL	INLCD
 	MOV		DPTR,#TAB3
	MOV		R3,#8
	ACALL	LCDWL1
	MOV		R2,#10
INLCD0:
	MOV		R7,#100
	ACALL	DELAY
;	ACALL	DELAY
	ACALL	DELAY
	DJNZ	R2,INLCD0
	MOV		A,#080H
	ACALL	LCDW_COM
	MOV		R2,#64
	ACALL	INLCD

	MOV		R7,#100
;	ACALL	DELAY
	ACALL	DELAY
	ACALL	DELAY

	ret
//**************************************
	LJMP 	ERR
	LJMP 	ERR

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
;**************************
										
IN2KSUB:	
	MOV		A,M_PAGE
	MUL		AB
	MOV		B,A
	ADD		A,R1
	MOV		R1,A
	MOV		R2,#3
IN2KSUB0:
	MOV		A,@R0
	MOV		@R1,A
	INC		R0
	INC		R1
	DJNZ	R2,IN2KSUB0
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
;**************************
IN2KS1:
	MOV		A,M_PAGE
	CJNE	A,#0,IN2KS10
	MOV		C,UGDIR
	MOV		P1DIR,C
	MOV		C,XGDIR
	MOV		X1DIR,C
	SETB	E2G1P
	SJMP	IN2KS1END
IN2KS10:
	CJNE	A,#1,IN2KS11
	MOV		C,UGDIR
	MOV		P2DIR,C
	MOV		C,XGDIR
	MOV		X2DIR,C
	SETB	E2G2P
mov 4AH,#055H
	SJMP	IN2KS1END
IN2KS11:
RET
	CJNE	A,#2,IN2KS12
	MOV		C,UGDIR
	MOV		P3DIR,C
	MOV		C,XGDIR
	MOV		X3DIR,C
	SETB	E2G3P
	SJMP	IN2KS1END
IN2KS12:
	CJNE	A,#3,IN2KS1END
	MOV		C,UGDIR
	MOV		P4DIR,C
	MOV		C,XGDIR
	MOV		X4DIR,C
	SETB	E2G4P
IN2KS1END:
	RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
IN3KSUB:
	ADD		A,@R0
	MOV		@R0,A
	INC		R0
	CLR		A
	ADDC	A,@R0
	MOV		@R0,A
	INC		R0
	CLR		A
	ADDC	A,@R0
	MOV		@R0,A	
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
;**************************
IN3KSUB0:
	MOV		A,C_UPD
	CJNE	A,#0,IN3KS0
	MOV		A,#1
	SJMP	IN3KS4
IN3KS0:
	CJNE	A,#1,IN3KS2
	MOV		A,#10
	SJMP	IN3KS4
IN3KS2:
	CJNE	A,#2,IN3KS3
	MOV		A,#100
IN3KS4:
	CLR		C
	RET
IN3KS3:
	SETB	C
	RET
;******************************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
IN4KSUB:
	CLR		C
	XCH		A,@R0
	SUBB	A,@R0
	MOV		@R0,A
	CLR		A
	INC		R0
	XCH		A,@R0
	SUBB	A,@R0
	MOV		@R0,A
	CLR		A
	INC		R0
	XCH		A,@R0
	SUBB	A,@R0
	MOV		@R0,A
	JNC		IN4KSUB0
	CLR		A
	MOV		@R0,A
	DEC		R0
	MOV		@R0,A
	DEC		R0
	MOV		@R0,A
IN4KSUB0:
	RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************

;********************************************      
INKEXE:					;按键解释执行
						;|7|6|5| 4|3|2|  1  |  0 |
						;|0|0|0|<<|-|+|ENTER|PAGE|
						
						;SB1=翻页=#01H
						;SB2=确认=#02H
						;SB3=+   =#04H
						;SB4=-   =#08H
						;SB5=<<  =#10H 


;**********************

	CJNE	A,#01H,IN2K
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;					
							;SB1=翻页=#01H  ;
	MOV		R0,#XL_INT
	MOV		@R0,#0AAH
	JNB		M_UPD,IN1K0						;
	CLR		M_UPD							   ;
	AJMP	INKEND							   ;
IN1K0:										   ;
	MOV		A,M_PAGE
	JZ		IN1K5
	MOV		M_PAGE,#0
	SJMP	IN1K4
IN1K5:
	MOV		R0,#0D0H
	INC		@R0
	CJNE	@R0,#5,IN1K2
	INC		M_PAGE						   ;
	MOV 	A,#1
	CJNE	A,M_PAGE,IN1K1					   ;
IN1K1:										   ;
	JNC		IN1K3							   ;
	MOV		M_PAGE,#0						   ;
IN1K3:
	MOV		A,M_PAGE
	JZ		IN1K4
	MOV		@R0,#4
	SJMP   IN1K2
IN1K4:
	MOV		@R0,#0
IN1K2:										   ;	
	RET							   ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
IN2K:
	CJNE	A,#02H,IN3K
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		R0,#0D0H
	mov		@r0,#0							;SB2=确认=#02H
	JNB		M_UPD,IN2KEND
IN2K0:
	MOV		R0,#GP_UPD
mov a,m_page
cjne a,#0,in2ka
	lCALL	MAX
in2ka:
	cjne a,#1,in2kb
	lcall max300	 
in2kb:
	MOV		R0,#GP_UPD
	MOV		R1,#G1P
	MOV		B,#6
	ACALL	IN2KSUB
	MOV		R0,#GX_UPD
	MOV		R1,#G1X
	MOV		B,#3
	MOV		A,GX_UPD
	ORL		A,GX_UPD+1
	ORL		A,GX_UPD+2
	JNZ		IN2K1
	ACALL	IN2KSUB
IN2K1:
	CLR		M_UPD

	ACALL	IN2KS1		
IN2KEND:
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
IN3K:
	CJNE	A,#04H,IN4K;			;SB3="+"=#04H
IN3K5:
	MOV		R0,#0D0H
	mov		@r0,#0	
	JNB		M_UPD,in3k6
	ACALL	IN3KSUB0
	JC		IN3K3
IN3K1:
	MOV		R0,#GP_UPD
	ACALL	IN3KSUB	
	MOV		R0,#GP_UPD
mov a,m_page
cjne a,#0,in3k2
	lCALL	MAX
in3k2:
	cjne a,#1,in3ka
	lcall max300	 
in3ka:
	RET
	LJMP 	ERR
;**************************
IN3K3:
	CJNE	A,#3,IN3K4
	CPL		UGDIR
	RET
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
IN3K4:
	CJNE	A,#4,in3ka
	CLR		A
	MOV		GX_UPD,A
	MOV		GX_UPD+1,A
	MOV		GX_UPD+2,A
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IN3K6:
	INC 4EH
IN3K9:
	MOV A,#15
	CJNE  A,4EH,IN3K7
IN3K7:
	JNC  IN3K8
	MOV 4EH,#15
IN3K8:
	LCALL  WE2PROM
	mov 4ah,#55h
	RET
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
IN4K:
	CJNE	A,#08H,IN5K			;SB4=-   =#08H
	MOV		R0,#0D0H
	mov		@r0,#0		
IN4K2:
	JNB		M_UPD,IN4K3
	ACALL	IN3KSUB0
	JC		IN3K3
	MOV		R0,#GP_UPD
	ACALL	IN4KSUB
	MOV		R0,#GP_UPD
	LCALL	MAX
	RET
IN4K3:
	MOV A,4EH
	CJNE A,#0,IN4K4
	RET
IN4K4:
	DEC 4EH
	LJMP IN3K9

;;;;;;;;;;;;;;;;;;;;;
IN5K:
	CJNE	A,#10H,INKEND
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 	MOV		R0,#0D0H
	mov		@r0,#0	
	MOV		R0,#XL_INT
	CJNE	@R0,#055H,IN5K3
	INC		R0
	INC		R0
	INC		@R0
	CJNE	@R0,#4,IN5K4
IN5K4:
	JC		INKEND
	MOV		R0,#XL_INT
IN5K3:
	MOV		@R0,#0AAH
IN5K5:
	JB		M_UPD,IN5K2		  ;SB5=<<  =#10H 
	SETB	M_UPD
	RET
	LJMP 	ERR
	LJMP 	ERR
;**************************
IN5K2:
	INC		C_UPD							   ;
	mov a,m_page
	jz ddd5
	mov a,#2
	sjmp ddd6
ddd5:
	MOV		A,#04							   ;
ddd6:
	CJNE	A,C_UPD,IN5K1					   ;
IN5K1:										   ;
	JNC		INKEND							   ;
	MOV		C_UPD,#0						   ;
INKEND:
	RET
;********************************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
INPUTK:
	MOV		c,sb001
	mov		acc.0,c
	MOV		c,sb002
	mov		acc.1,c
	MOV		c,sb003
	mov		acc.2,c
	MOV		c,sb004
	mov		acc.3,c
	MOV		c,sb005
	mov		acc.4,c
	CPL		A
	ANL		A,#1FH
	JZ		IK0
	INC		KAGE
	XCH		A,KSBUF
	XRL		A,KSBUF
	JZ		IK1
IK0:
	CLR		KACT
	MOV		KAGE,#0
	SJMP	IK4
IK1:
	MOV		B,#KEY_AGE	;#0FEH
	JNB		KACT,IK2
	MOV		B,#KEY_F	;#0f5H
	MOV		A,KSBUF
	CJNE	A,#08H,IK3
	SJMP	IK2
IK3:
	CJNE	A,#04H,IK4
IK2:
	MOV		A,KAGE
	ADD		A,B
	JNC		IK4
	MOV		A,KSBUF
	SETB	KACT
	MOV		KAGE,#0
	SJMP	IKEND
IK4:
	CLR		A
IKEND:
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************

HBCD2A:	
	MOV		TMP_3,@R0
	INC		R0
	MOV		TMP_3+1,@R0
	INC		R0
	MOV		TMP_3+2,@R0
HBCD2:
	MOV		R0,#TMP_3
	MOV		R1,#TMP_4
	MOV		DPL,R0
	MOV		DPH,R1
	MOV		R2,#4			;转换数为3字节
	CLR		A
HBCD21:
	MOV		@R1,A
	INC		R1
	DJNZ	R2,HBCD21
	MOV		R2,#24
HBCD20:
	MOV		R3,#3
	MOV		R0,DPL
HBCD22:
	MOV		A,@R0
	RLC		A
	MOV		@R0,A
	INC		R0
	DJNZ	R3,HBCD22
	MOV		R3,#4
	MOV		R1,DPH
HBCD23:
	MOV		A,@R1
	ADDC	A,@R1
	DA		A
	MOV		@R1,A
	INC		R1
	DJNZ	R3,HBCD23
	DJNZ	R2,HBCD20
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
DTSP:
	JB		M_UPD,DTSPE		;修改状态,转DSP19
;;;;;;;;;;;;;;;;;;;;;;;;;以下为非修改状态显示处理
	MOV		A,M_PAGE
	MOV		B,#6
	MUL		AB
	ADD		A,#G1P
	MOV		R0,A
	MOV		GP_UPD,@R0		 ;进给量送到显示缓存GP_UPD
	INC		R0
	MOV		GP_UPD+1,@R0
	INC		R0
	MOV		GP_UPD+2,@R0
;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		A,M_PAGE
	MOV		B,#3
	MUL		AB
	ADD		A,#G1X
	MOV		R0,A
	MOV		GX_UPD,@R0
	INC		R0					 ;坐标值送到显示缓存GP_XPD
	MOV		GX_UPD+1,@R0
	INC		R0
	MOV		GX_UPD+2,@R0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		A,M_PAGE
	CJNE	A,#0,DTP0
	MOV		C,P1DIR
	MOV		F0,C
	MOV		C,X1DIR
	SJMP	DTPE
DTP0:
	CJNE	A,#1,DTP1
	MOV		C,P2DIR
	MOV		F0,C
	MOV		C,X2DIR
	SJMP	DTPE
DTP1:
	CJNE	A,#2,DTP2
	MOV		C,P3DIR
	MOV		F0,C				   ;进给量和坐标的符号送到显示缓存
	MOV		C,X3DIR
	SJMP	DTPE
DTP2:
	CJNE	A,#3,DTPE
	MOV		C,P4DIR
	MOV		F0,C
	MOV		C,X4DIR
DTPE:
	MOV		XGDIR,C
	MOV		C,F0
	MOV		UGDIR,C
DTSPE:
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
	LJMP 	ERR
	LJMP 	ERR
;**************************
	LJMP 	ERR
;**************************
DSP:
	ACALL	LCDSETUP
	MOV		A,#80H
	ACALL	LCDW_COM	   ;岩祺科技
	mov r0,#tmrh
	MOV A,@r0
	JB ACC.2, dspA0
	MOV		DPTR,#TAB9
	jmp		dspA1
dspA0:
	MOV DPTR,#TAB0
DSPA1:
	CLR		F0
	ACALL	LCDW_L
;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		A,#90H
	ACALL	LCDW_COM
	MOV		A,M_PAGE
	MOV		B,#06
	MUL		AB
	MOV		DPTR,#TAB5
	ADD		A,DPL
	MOV		DPL,A			;“左垂:”、“右垂:“、”左侧:”“右侧:“
	JNC		DSP0
	INC		DPH
DSP0:
	MOV		R3,#3
	ACALL	LCDWL1
;;;;;;;;;;;;;;;;;;;;;;;;;;;
	JNB		M_UPD,DSP1
	MOV		A,C_UPD
	CJNE	A,#3,DSP1
	JB		FLASH,DSP1		 ;进给量符号闪烁处理
	MOV		A,#' '
	SJMP	DSP2
;;;;;;;;;;;;;;;;;;;;;;;;;;;
DSP1:
	mov		a,M_PAGE
;	jz		dd3
;	mov		a,#' '
;	sjmp	dsp2
dd3:
	JB		UGDIR,DSP3
	MOV		A,#'+'
	SJMP	DSP2
DSP3:						;进给量符号显示
	MOV		A,#'-'
DSP2:
	ACALL	LCDW_DAT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	MOV		R0,#GP_UPD	
	CLR		ET1				;暂时关T1中断
	MOV		TMP_3,@R0
	INC		R0
	MOV		TMP_3+1,@R0
	INC		R0
	MOV		TMP_3+2,@R0
	SETB	ET1				;开T1中断

	ACALL	HBCD2			;转换为BCD数据送到TMP_4

	MOV		R0,#TMP_4
	MOV		A,#2
	CJNE	A,C_UPD,DSP4
	JNB		M_UPD,DSP4
	JB		FLASH,DSP4
	MOV		A,TMP_4+1
	SWAP	A
	ANL		A,#0FH

⌨️ 快捷键说明

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