📄 cpupart.asm
字号:
JS1 EQU 21H ;;速度寄存器
JS2 EQU 22H ;;长度加寄存器
JS3 EQU 23H ; 速度暂存器
JS4 EQU 24H ; 长度暂存器
JS5 EQU 25H
JS6 EQU 26H
JS7 EQU 27H
JS8 EQU 28H
JS20 EQU 29H
JS10 EQU 30H
ISP_DATA equ 0e2h
ISP_ADDRH EQU 0E3H
endcode equ 0aaH
;初使化程序
ISP_ADDRL EQU 0E4H
ISP_CMD EQU 0E5H
ISP_TRIG EQU 0E6H
ISP_CONTR EQU 0E7H
;定义ISP/ASP命令及等待时间
ISP_IAP_BYTE_READ EQU 1
ISP_IAP_BYTE_PROGRAM EQU 2
ISP_IAP_SECTOR_ERASE EQU 3
WAIT_TIME EQU 0
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INSER1
ORG 0013H
LJMP INSER2 ;中断跳转地址
MAIN: NOP;初始化
MOV P0, #0FFH
MOV P2, #0FFH
MOV P1, #0FFH
NOP ;读内存
;open the interrupt and initialize ; 开中断
SETB EA
SETB EX0
SETB EX1
CLR IT0 ;中断0为外存数据设置中断
CLR IT1 ;the programe initialize end
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;the interrupt end
;the tast 1 star the step motor programe
;jnb p1.7, $
;从EEPROM中读出速度控制数据
;STAR
;定义字节读出指令
MOV ISP_ADDRH, #10H
MOV ISP_ADDRL, #01H
CLR EA
MOV ISP_CONTR, #WAIT_TIME; 设置等待时间
MOV ISP_CONTR, #10000000B; 允许ISP/IAP操作
MOV ISP_CMD, #ISP_IAP_BYTE_READ
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H; 送完B8H后,ISP/IAP命令立即被触发启动
NOP
MOV ISP_CONTR, #00000000B
MOV ISP_CMD, #00000000B
MOV ISP_TRIG, #00000000B
MOV ISP_ADDRH, #0FFH
MOV ISP_ADDRL, #0FFH
SETB EA
MOV A, ISP_DATA
;END
MOV JS1, A
CPL A
MOV JS10, A
MOV P0, JS10
;the tast 1 END
;the tast 2 star ;进料长度初使化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;the tast 2 star ;进料长度初使化
MOV A, #00H
;从EEPROM中读出长度控制数据
;STAR
;定义字节读出指令
MOV ISP_ADDRH, #12H
MOV ISP_ADDRL, #01H
CLR EA
MOV ISP_CONTR, #WAIT_TIME;设置等待时间
MOV ISP_CONTR, #10000000B; 允许ISP/IAP操作
MOV ISP_CMD, #ISP_IAP_BYTE_READ
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H;送完B8H后,ISP/IAP命令立即被触发启动
NOP
MOV ISP_CONTR, #00000000B
MOV ISP_CMD, #00000000B
MOV ISP_TRIG, #00000000B
MOV ISP_ADDRH, #0FFH
MOV ISP_ADDRL, #0FFH
SETB EA
MOV A, ISP_DATA
MOV JS2, A ;进料长度数据
CPL A
MOV JS20, A
MOV P2, JS20
;END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jb p1.7, $ ;接近开关控制输入
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A, #00H
;电机最小前进子程序
MOV A, JS2
mov js3, js1
JZ MM
MOV A, #00H
DIANJIQJ: MOV JS5, #06H
QQ: CLR P1.6
ACALL DelayXS
setb p1.6
ACALL DelayXS
DJNZ JS5, QQ
DJNZ JS2, DIANJIQJ
MM: LJMP MAIN
DelayXS: mov js3, js1
MOV A, JS3
JZ MM
YY: MOV R2, #0ffH
DJNZ R2, $
DJNZ JS3, YY
RET
delay05S : MOV R0, #32H ;延时子程序
LL: MOV R1, #64H
TT: MOV R2, #64H
DJNZ R2, $
DJNZ R1, TT
DJNZ R0, LL
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INSER1: nop
;从EEPROM中读出速度控制数据
;STAR
;定义字节读出指令
MOV ISP_ADDRH, #10H
MOV ISP_ADDRL, #01H
CLR EA
MOV ISP_CONTR, #WAIT_TIME;设置等待时间
MOV ISP_CONTR, #10000000B; 允许ISP/IAP操作
MOV ISP_CMD, #ISP_IAP_BYTE_READ
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H;送完B8H后,ISP/IAP命令立即被触发启动
NOP
MOV ISP_CONTR, #00000000B
MOV ISP_CMD, #00000000B
MOV ISP_TRIG, #00000000B
MOV ISP_ADDRH, #0FFH
MOV ISP_ADDRL, #0FFH
SETB EA
MOV A, ISP_DATA
;END
MOV JS1, A ;进料速度数据
CPL A
MOV JS10, A
MOV P0, JS10
;the tast 1 END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -