📄 cpupart.asm
字号:
;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
cycle: NOP
ee: jnb p1.0, speedadd1 ; 速度加判断
ff: jnb p1.1, speeddecrease1 ;速度减判断
bb: jnb p1.2, lengthadd1 ;长度加判断
mm1: jnb p1.3, lengthdecrease1 ;长度减判断
jj: jnb p1.4, sure1 ;是否有确认键按下判断
pp: Ljmp cycle
speedadd1: nop
acall delay10ms
jnb p1.0, ff
LJMP speedadd
speeddecrease1: nop
acall delay10ms
jnb p1.1, bb
LJMP speeddecrease
lengthadd1: nop
acall delay10ms
jnb p1.2, mm1
LJMP lengthadd
lengthdecrease1: nop
acall delay10ms
jnb p1.3, jj
LJMP lengthdecrease
sure1: nop
acall delay10ms
jnb p1.4, pp
LJMP sure
speedadd: inc JS1 ;速度加寄存器
mov a, js1
cpl a
MOV P0, a
Ljmp cycle
speeddecrease: NOP
dec js1
mov a, js1
cpl a
MOV P0, a
Ljmp cycle
lengthadd: NOP
inc js2 ;长度加寄存器
mov a, js2
cpl a
MOV P2, a
Ljmp cycle
lengthdecrease: NOP
dec js2
mov a, js2
cpl a
MOV P2, a
Ljmp cycle
sure: ;扇区查除指令
;TAST ONE SPEED INPUT EEPROM FASH DATA STAR
MOV ISP_ADDRH, #10H ;SECTOR_FIRST_BYTE_ADDR_HIGH
MOV ISP_ADDRL, #00H ;SECTOR_FIRST_BYTE_ADDR_LOW
CLR EA
MOV ISP_CONTR, #WAIT_TIME
ORL ISP_CONTR, #10000000B
MOV ISP_CMD, #ISP_IAP_SECTOR_ERASE; 送扇区查初命令
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H
NOP
MOV ISP_CONTR, #00000000B
MOV ISP_CMD, #00000000B
MOV ISP_TRIG, #00000000B
MOV ISP_ADDRH, #0FFH
MOV ISP_ADDRL, #0FFH
NOP
;字节编程,该字节为FFH/空时,可以对其编程,否则不行,要先执行扇区查除
MOV ISP_DATA, js1 ; 送字节编程数据到ISP_DATA
MOV ISP_ADDRH, #10H
MOV ISP_ADDRL, #01H
CLR EA
MOV ISP_CONTR, #WAIT_TIME
MOV ISP_CONTR, #10000000B
MOV ISP_CMD, #ISP_IAP_BYTE_PROGRAM; 送字节编程命令
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H; 送完后,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
;TAST ONE END
;扇区查除指令
;TAST TOW LENGTH INPUT EEPROM FASH DATA STAR
MOV ISP_ADDRH, #12H ;SECTOR_FIRST_BYTE_ADDR_HIGH
MOV ISP_ADDRL, #00H ;SECTOR_FIRST_BYTE_ADDR_LOW
CLR EA
MOV ISP_CONTR, #WAIT_TIME
ORL ISP_CONTR, #10000000B
MOV ISP_CMD, #ISP_IAP_SECTOR_ERASE; 送扇区查初命令
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H
NOP
MOV ISP_CONTR, #00000000B
MOV ISP_CMD, #00000000B
MOV ISP_TRIG, #00000000B
MOV ISP_ADDRH, #0FFH
MOV ISP_ADDRL, #0FFH
NOP
;字节编程,该字节为FFH/空时,可以对其编程,否则不行,要先执行扇区查除
MOV ISP_DATA, js2 ; 送字节编程数据到ISP_DATA
MOV ISP_ADDRH, #12H
MOV ISP_ADDRL, #01H
CLR EA
MOV ISP_CONTR, #WAIT_TIME
MOV ISP_CONTR, #10000000B
MOV ISP_CMD, #ISP_IAP_BYTE_PROGRAM; 送字节编程命令
MOV ISP_TRIG, #46H
MOV ISP_TRIG, #0B9H; 送完后,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
;TAST TOW END
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INSER2: NOP
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay10ms: mov r7, #0ah
loop1: mov r6, #7ch
loop2: nop
nop
djnz r6, loop2
djnz r7, loop1
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -