📄 ee9346_1.asm
字号:
;--------------93C46EEPROM读写程序V01--------------
;**************2006\5\18\运行通过******************
DO EQU P3.7
DI EQU P3.6
SK EQU P3.5
CS EQU P3.4
;入口参数:B 读写地址 R2 读写数据存放单元
;循环次数 R4
ORG 00H
SJMP START
START: MOV SP,#60H
MOV R2,#07H
MOV B,#01H
LCALL EWRITE
MOV R2,#08H
MOV B,#01H
LCALL EREAD
SJMP START
;-----------向93C46写数据---------------------
EWRITE:
;********先实现擦写使能100 1100000****
LCALL EINSB ;1 (93C46)
LCALL EINSB0 ;0
MOV A,#60H ;01100000
LCALL EWR1 ;向93C46写8位数据
;********再实现擦除指令111 XXXXXXX*****
LCALL EINSB ;1
LCALL EINSB1 ;1
RITE2: MOV A,B ;擦除单元地址放在B中
ORL A,#80H
LCALL EWR1 ;向93C46写8位数据
NOP
NOP
CLR CS
NOP
NOP
SETB CS
EWAIT: JNB DO,EWAIT
;*******再实现向93C46写数据101XXXXXX*********
LCALL EINSB ;1
LCALL EINSB0 ;0
RITE4: MOV A,B ;(8 BIT)地址放在B中
ORL A,#80H
LCALL EWR1
MOV A,R2 ;数据放在R2中
LCALL EWR1 ;
CLR CS
NOP
NOP
NOP
SETB CS
EWAIT1: JNB DO,EWAIT1
;*******再实现向93C46擦写禁止10000XXXX****
LCALL EINSB ;1
LCALL EINSB0 ;0
MOV A,#00H
LCALL EWR1 ;(8 BIT)
CLR CS
RET
;-----------向93C46读数据---------------------
EREAD:
;********先实现读使能110XXXXXX****
LCALL EINSB ;1
LCALL EINSB1 ;1
EAD2: MOV A,B ;8 BIT ADR地址放在B中
ANL A,#01111111B
LCALL EWR1
NOP
NOP
NOP
LCALL ERD1 ;8 BIT DATA
MOV R2,A ;结果放在R2中
CLR CS
NOP
RET
;********写1************
EINSB: CLR CS
CLR SK
SETB DI
NOP
NOP
NOP
SETB CS
NOP
NOP
NOP
SETB SK
NOP
NOP
NOP
CLR SK
RET
;**********向93C46写8位数据****************
EWR1: MOV R4,#08H
EW10: RLC A
MOV DI,C
NOP
NOP
NOP
SETB SK
NOP
NOP
NOP
CLR SK
DJNZ R4,EW10
RET
ERD1: MOV R4,#08H
ER10: NOP
NOP
NOP
SETB SK
NOP
NOP
NOP
CLR SK
MOV C,DO
RLC A
DJNZ R4,ER10
RET
;********写1************
EINSB1: NOP
NOP
NOP
SETB DI
NOP
NOP
NOP
SETB SK
NOP
NOP
NOP
CLR SK
RET
;********写0************
EINSB0: NOP
NOP
NOP
CLR DI
NOP
NOP
NOP
SETB SK
NOP
NOP
NOP
CLR SK
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -