📄 lpc936
字号:
$INCLUDE (reg932.inc)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
bc_2 EQU 7500H ;小刨床进刀速度:1S进9.8mm,9.8mm/s=98mm/10s=588mm/min
;9.8mm/s=980p/s;980p/1000000us;1p=1000000/980us=1020us;/2=512us=01feh
;512us*16= 8192= 2000h
C_X1 EQU 10 ;x0-x11采样相同次数
C_X2 EQU 10 ;X12-X15采样相同次数
C_ALLX1 EQU 20 ;x0-x11采样相超过失败次数
C_ALLX2 EQU 20 ;X12-X15采样相超过失败次数
MAX_2 EQU 00H
MAX_1 EQU 04H
MAX_0 EQU 04CH; 最大进给2000(20mm)
;*******************
; THTL0 EQU 65536-690 ;100*7.3728*6/12=369 ;100VS:F=3000进给速度,690=345*2.f=1500
THTL1 EQU 65536-29491 ;8ms fos=7.3728mhz 6X
;**************************
KEY_AGE EQU 256-6 ;按键的年龄,8MSX6=48MS
KEY_F EQU 256-37 ;按键的频率,37X8=296MS,约3次/S
CK EQU p1.3 ;P3.0 ;P89LPC921
CSD EQU p3.0 ;P3.1 ;P89LPC921
DAD EQU p0.6 ;P1.6 ;P89LPC921
CK_4021 EQU p1.7 ;P2.7
l_ret equ p1.2
CSX EQU p0.0 ;P1.7
DAX EQU p1.6 ;P0.4
PUS1 EQU p0.1 ;P0.5
PUS2 EQU p1.0 ;P0.7
PUS3 EQU p1.4 ;P1.1
; PUS4 EQU P1.3
DIR1 EQU p0.2 ;P0.6
DIR2 EQU p1.1 ;P1.0
DIR3 EQU p1.3 ;P1.2
; DIR4 EQU P1.4
; SBP EQU P0
sb001 equ p1.5
sb002 equ p3.1
sb003 equ p0.3
sb004 equ p0.4
sb005 equ p0.5
R_X1 EQU 010H ;10H,11H,12H
R_X2 EQU 013H ;13H,14H,15H
R_X3 EQU 016H ;16H,17H,18H
R_X4 EQU 019H ;19H,1AH,1BH
TMP_4 EQU 1CH ;1CH--1FH
TMP_3 EQU 20H ;2CH,2DH,2EH
BFG0 EQU 23H
KACT EQU BFG0.0
M_UPD EQU BFG0.1
TMPB EQU BFG0.2
UGDIR EQU BFG0.3 ;修改区进给量符号
XGDIR EQU BFG0.4 ;修改区坐标符号
PUSDIV EQU BFG0.5
LCDE EQU BFG0.6
X00_07 EQU 24H
X08_11 EQU 25H
X12_15 EQU 26H
X00 EQU X00_07.0
X01 EQU X00_07.1
X02 EQU X00_07.2
X03 EQU X00_07.3
X04 EQU X00_07.4
X05 EQU X00_07.5
X06 EQU X00_07.6
X07 EQU X00_07.7
X08 EQU X08_11.0
X09 EQU X08_11.1
X10 EQU X08_11.2
X11 EQU X08_11.3
X12 EQU X12_15.0
X13 EQU X12_15.1
X14 EQU X12_15.2
X15 EQU X12_15.3
X00_07R EQU 27H
X08_11R EQU 28H
X12_15R EQU 29H
X00R EQU X00_07R.0
X01R EQU X00_07R.1
X02R EQU X00_07R.2
X03R EQU X00_07R.3
X04R EQU X00_07R.4
X05R EQU X00_07R.5
X06R EQU X00_07R.6
X07R EQU X00_07R.7
X08R EQU X08_11R.0
X09R EQU X08_11R.1
X10R EQU X08_11R.2
X11R EQU X08_11R.3
X12R EQU X12_15R.0
X13R EQU X12_15R.1
X14R EQU X12_15R.2
X15R EQU X12_15R.3
BUFB EQU 2AH
E2POM EQU 2BH
E2G1P EQU E2POM.0
E2G2P EQU E2POM.1
E2G3P EQU E2POM.2
E2G4P EQU E2POM.3
TMRL EQU 2CH ;时间计数器, 计数单位为1ms。定时器1中断一次,加1
FLASH EQU TMRL.5 ;闪烁频率
DSPE EQU TMRL.3 ;显示更新频率
GDIR EQU 2DH
C1DIR EQU GDIR.0 ;连续进给方向
C2DIR EQU GDIR.1
C3DIR EQU GDIR.2
C4DIR EQU GDIR.3
G1DIR EQU GDIR.4 ;点动进给方向
G2DIR EQU GDIR.5
G3DIR EQU GDIR.6
G4DIR EQU GDIR.7
PDIR EQU 2EH
P1DIR EQU PDIR.0 ;参数区方向
P2DIR EQU PDIR.1
P3DIR EQU PDIR.2
P4DIR EQU PDIR.3 ;间隙补偿用于记忆进给方向
X1DIR EQU PDIR.4 ;坐标值方向
X2DIR EQU PDIR.5
X3DIR EQU PDIR.6
X4DIR EQU PDIR.7
GING EQU 2FH
G1ING EQU GING.0 ;正在进给标志
G2ING EQU GING.1 ;
G3ING EQU GING.2 ;
G4ING EQU GING.3 ;
C1G EQU GING.4 ;连续进给标志
C2G EQU GING.5 ;
C3G EQU GING.6 ;
C4G EQU GING.7 ;
G1X EQU 30H ;30H,31H,32H,
G2X EQU 33H ;33H,34H,35H,
G3X EQU 36H ;36H,37H,38H
G4X EQU 39H ;39H,3AH,3BH,
G1P EQU 3CH ;3CH,3DH,3EH 进给量参数
G1PING EQU 3FH ;3FH,40H,41H
G2P EQU 42H ;42H,43H,44H
G2PING EQU 45H ;45H,46H,47H
G3P EQU 48H ;48H,49H,4AH (40H-57H)连续空间(GXP和GXPING)
G3PING EQU 4BH ;4BH,4CH,4DH
G4P EQU 4EH ;4EH,4FH,50H
G4PING EQU 51H ;(51H,52H,53H)
S_RAMX EQU 54H
S_RAM1 EQU 2DH ;保护RAM起始地址
S_RAM2 EQU 54H ;保护RAM结束地址
M_PAGE EQU 56H
GP_UPD EQU 57H ;57H,58H,59H
GX_UPD EQU 5AH ;5AH,5BH,5CH
C_UPD EQU 5DH ;5DH
KAGE EQU 5EH
KSBUF EQU 5FH
STH0 EQU 60H
STL0 EQU 61H ;定时器0再装入地址
SPEEDR EQU 62H
speeddr equ 10
;;;;;;;;;;;;;;;;;;;;;
E2P_4 EQU 80H ;80H,81H,82H,83H,....8CH
XL_INT EQU 8DH
XL_C1 EQU 8EH
XL_C2 EQU 8FH
S_RAM EQU 90H
TMRH EQU 0a0H
EMG EQU X04R
mspeed equ 93 ;显示电机转速
;#0c0h:间隙使用
inxbuf equ 0b0h ;输入缓存A5H-A7H
;**************************
ORG 0000H
;ABC: MOV IEn0,#0
; MOV SP,#0e2H
; LCALL IOINIT
;SETB CK
;SETB CSD
;SETB DAD
;SJMP ABC
LJMP START ;开始
;**************************
ORG 03H ;INT0
AJMP ERR
LJMP ERR
LJMP ERR
;**************************
ORG 0BH ;T0
LJMP T00
AJMP ERR
LJMP ERR
;**************************
ORG 13H ;INT1
AJMP ERR
LJMP ERR
LJMP ERR
;**************************
ORG 1BH ;T1
LJMP T10
AJMP ERR
LJMP ERR
;**************************
ORG 23H ;串口
AJMP ERR
LJMP ERR
LJMP ERR
ORG 2BH ;掉电检测
LJMP IBOE
AJMP ERR
LJMP ERR
;;**************************
ORG 33H ;I2C
AJMP ERR
LJMP ERR
LJMP ERR
;*************************
ORG 3BH ;键盘
AJMP ERR
LJMP ERR
LJMP ERR
;*************************
ORG 43H ;比较器2
DB 02H
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
;*************************
ORG 53H ;看门狗
DB 02H
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
;*************************
ORG 63H ;比较器1
DB 02H
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
;**************************
ORG 73H ;定时器I
DB 02H
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
;**************************
;**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0202H
ERR:
ORL AUXR1,#08H
AJMP ERR
;**********************************
;****************************************
LJMP ERR
;**************************
;**************************
IOINIT:
;IO口配置:
;P0.0-P0.4准双向口
;P0.5-P0.7开漏输出
;P1.0-P1.4开漏输出
;P1.5仅为输入
;P1.6,P1.7强上拉
MOV P0M1,#0BEH
MOV P0M2,#087H
MOV P1M1,#033H
MOV P1M2,#093H
;***************************
MOV P3M1,#02H
MOV P3M2,#00H
MOV P2M1,#00H ;
MOV P2M2,#00H ;
RET
ORG 1000H
;***************************
;**************************
LJMP ERR
LJMP ERR
;**************************
;**************************
LJMP ERR
;**************************
RAMINIT:
CLR A
MOV R0,#08H
RAMINIT0:
MOV @R0,A
INC R0
ACALL CLRWDT
CJNE R0,#30H,RAMINIT0
; JNB F0,RAMINiT1
; MOV R0,#3CH
RAMINIT1:
MOV @R0,A
INC R0
ACALL CLRWDT
CJNE R0,#0E0H,RAMINIT1
RET
;**************************
LJMP ERR
LJMP ERR
LJMP ERR
;**************************
;**************************
TMINIT:
MOV TMOD,#11H ;16bit timer
; MOV TH0,#HIGH(THTL0)
; MOV TL0,#LOW(THTL0)
MOV TH1,#HIGH(THTL1)
MOV TL1,#LOW(THTL1)
SETB TR1
RET
LJMP ERR
LJMP ERR
;**************************
;**************************
LJMP ERR
LJMP ERR
;**************************
LJMP ERR
;**************************
;**************************
LJMP ERR
LJMP ERR
;**************************
LCDSETUP: ;初始化
MOV A,#30H ;FUNCTION SETTING 8位数据线,基本指令
ACALL LCDW_COM
MOV A,#06H ; 光标向右移,显示画面整体不移位
ACALL LCDW_COM
MOV A,#0CH ;DISPLAY ON 无光标,光标不反白
ACALL LCDW_COM
RET
;**************************
;**************************
LJMP ERR
LJMP ERR
LJMP ERR
;**************************
LJMP ERR
;**************************
;**************************
readbf:
mov r5,#070
djnz r5,$
ret
push acc
mov p2,#0ffh
mov p2m1,#0ffh
clr csd
clr csd
setb dad
setb dad
;;;;;;;;;;;;;;
setb ck
setb ck
;;;;;;;;;;;;
nop
nop
mov a,p2
clr ck
clr ck
jb acc.7,$
pop acc
mov p2m1,#0h
ret
LCDW_DAT: ;串口写命令
lcall readbf
setb csd
setb csd
lccca:
clr dad
clr dad
mov p2,a
mov p2,a
setb ck
setb ck
nop
nop
clr ck
clr ck
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R5,A
MOV A,#0FAH
SJMP LCD_W
LCDW_COM: ;串口写数据
lcall readbf
clr csd
clr csd
sjmp lccca
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV R5,A
MOV A,#0F8H
LCD_W:
SETB CSD ;CSD=CS
CLR CK
MOV R4,#8
LCDW1:
CLR C
RLC A
MOV DAD,C ;DAD=DAD
SETB CK
CLR CK ;CK=CLK
DJNZ R4,LCDW1
MOV A,R5
ANL A,#0F0H
MOV R4,#8
LCDW2:
CLR C
RLC A
MOV DAD,C
SETB CK
CLR CK
DJNZ R4,LCDW2
MOV A,R5
SWAP A
ANL A,#0F0H
MOV R4,#8
LCDW3:
CLR C
RLC A
MOV DAD,C
SETB CK
CLR CK
DJNZ R4,LCDW3
CLR CSD
SETB DAD
MOV A,R5
LCDW4:
RET
;**************************
LJMP ERR
LJMP ERR
LJMP ERR
LJMP ERR
;**************************
;**************************
LCDW_L:
MOV R3,#8
LCDWL1:
CLR A
MOVC A,@A+DPTR
INC DPTR
ACALL LCDW_DAT
CLR A
MOVC A,@A+DPTR
INC DPTR
ACALL LCDW_DAT
JNB F0,LCDWL3
; MOV R2,#2
LCDWL2:
MOV R7,#255
ACALL DELAY
ACALL DELAY
; DJNZ R2,LCDWL2
LCDWL3:
DJNZ R3,LCDWL1
RET
;**************************
LJMP ERR
LJMP ERR
;**************************
DELAY:
MOV R6,#0
ACALL CLRWDT
DJNZ R6,$
delay000:
DJNZ R7,DELAY
RET
;**************************
LJMP ERR
LJMP ERR
;**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IN4021LB:
MOV BUFB,A
XCH A,@R0
XRL A,@R0
JNZ IN4021L1
INC R0
INC @R0
MOV A,@R0
INC R0
MOV @R0,#0
CJNE A,DPL,IN4021L2
DEC R0
dec A
MOV @R0,A
MOV A,BUFB
SJMP IN4021L3
IN4021L1:
INC R0
MOV @R0,#0
INC R0
INC @R0
MOV A,@R0
CJNE A,DPH,IN4021L2
dec A
MOV @R0,A
CLR A
IN4021L3:
MOV @R1,a
IN4021L2:
RET
LJMP ERR
LJMP ERR
;**************************
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LJMP ERR
LJMP ERR
;**************************
IN4021S:
MOV BUFB,A
MOV C,BUFB.2
MOV ACC.0,C
MOV C,BUFB.3
MOV ACC.1,C
MOV C,BUFB.1
MOV ACC.2,C
MOV C,BUFB.0
MOV ACC.3,C
MOV C,BUFB.7
MOV ACC.4,C
MOV C,BUFB.6
MOV ACC.5,C
MOV C,BUFB.5
MOV ACC.6,C
MOV C,BUFB.4
MOV ACC.7,C
RET
;**************************
IN4021:
setb dax
CLR CK_4021
CLR CK_4021
CLR CSX
CLR CSX
SETB CSX
SETB CSX
CLR CSX
CLR CSX
MOV R2,#8
IN4021_0:
MOV C,DAX
RLC A
SETB CK_4021
SETB CK_4021
CLR CK_4021
CLR CK_4021
DJNZ R2,IN4021_0
CPL A
; ACALL IN4021S
MOV R3,A
MOV R2,#8
IN4021_1:
MOV C,DAX
RLC A
SETB CK_4021
SETB CK_4021
CLR CK_4021
CLR CK_4021
DJNZ R2,IN4021_1
CPL A
; ACALL IN4021S
MOV R4,A
SWAP A
ANL A,#0FH
MOV R5,A
MOV A,R4 ;R3=|X7|X6|X5|X4|X3 |X2 |X1 |X0 |
ANL A,#0FH ;R4=|0 |0 |0 |0 |X11|X10|X9 |X8 |
MOV R4,A ;R5=|0 |0 |0 |0 |X15|X14|X13|X12|
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INPUTX:
ACALL IN4021 ;175T
MOV R0,#R_X2
MOV DPL,#C_X1
MOV DPH,#C_ALLX1
; MOV R1,#X08_11
MOV R1,#(INXBUF+1)
ACALL IN4021LB
MOV X08_11,@R1
MOV A,R3
MOV R0,#R_X1
MOV R1,#INXBUF
ACALL IN4021LB
MOV X00_07,@R1
;mov a,r3
;mov @r1,a
MOV A,R5
MOV R0,#R_X3
MOV R1,#(INXBUF+2)
MOV DPL,#C_X2
MOV DPH,#C_ALLX2
ACALL IN4021LB
MOV X12_15,@R1
RET
;**************************************
LJMP ERR
;**************************
XRLX:
MOV A,@R0
XCH A,@R1
XRL A,@R1
ANL A,@R1
MOV @R0,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LJMP ERR
;**************************
CLRWDT:
CLR EA
MOV WFEED1,#0A5H
MOV WFEED2,#05AH
SETB EA
RET
//**************************************
LJMP ERR
;**************************
DSP_X:
MOV A,#98H
LCALL LCDW_COM
MOV R0,#X00_07R
MOV R2,#8
LCALL DSP_XS1
jnb x04r,dspx0
dspx1:
INC R0
ACALL DSP_XS
INC R0
ACALL DSP_XS
LCALL LCDSETUP
ret
dspx0:
jnb tmrl.6,dspx1
LCALL DSP_SPED
RET
;;;;;;;;;;;;;;;;;;;;
LJMP ERR
;;;;;;;;;;;;;;;;;;;;
INLCD:
MOV A,#20h
ACALL LCDW_DAT
DJNZ R2,INLCD
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LJMP ERR
;**************************
MAX:
CLR C
MOV A,#MAX_0
SUBB A,@R0
INC R0
MOV A,#MAX_1
SUBB A,@R0
INC R0
MOV A,#MAX_2
SUBB A,@R0
JNC MAX0
MOV @R0,#MAX_2
DEC R0
MOV @R0,#MAX_1
DEC R0
MOV @R0,#MAX_0
MAX0:
RET
MAX800:
CLR C
MOV A,#0deh;15
SUBB A,@R0
INC R0
MOV A,#3;0
SUBB A,@R0
INC R0
MOV A,#0
SUBB A,@R0
JNC MAX801
MOV @R0,#0
DEC R0
MOV @R0,#3;0
DEC R0
MOV @R0,#0deh;15
MAX801:
RET
MAX300:
CLR C
MOV A,#02Ch;15
SUBB A,@R0
INC R0
MOV A,#1;0
SUBB A,@R0
INC R0
MOV A,#0
SUBB A,@R0
JNC MAX301
MOV @R0,#0
DEC R0
MOV @R0,#1;0
DEC R0
MOV @R0,#02Ch;15
MAX301:
RET
//**************************************
LJMP ERR
;**************************
DSP_XS:
MOV R2,#4
DSP_XS1:
MOV BUFB,@R0
DSP_XS2:
MOV A,BUFB
RRC A
MOV BUFB,A
MOV A,#'.'
JNC DSP_XS0
MOV DPTR,#TAB4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -