📄 wat512.asm
字号:
; 这是被CALLW512.C调用的AT24C512汇编程序,
; 文件名为WAT512.ASM
; 功能: 将地址为80H、81H、...、87H的连续8个字节值写入C51传来的双字节为
; 首址的AT24C512 EEPROM中去。
NAME AT512
?PR?_a_func8?AT512 SEGMENT CODE
?DT?_a_func8?AT512 SEGMENT DATA OVERLAYABLE
?DT?AT512 SEGMENT DATA
PUBLIC chai8
PUBLIC ?_a_func8?BYTE
PUBLIC _a_func8
RSEG ?DT?_a_func8?AT512
?_a_func8?BYTE:
aa:DS 2
RSEG ?DT?AT512
chai8:DS 1
RSEG ?PR?_a_func8?AT512
_a_func8:
SDA BIT INT1
SCL BIT INT0
FADDR EQU 0A0H
PADDR EQU 0
PSIZE EQU 8
ADDRLO EQU 7EH
ADDRHI EQU 7FH
BUFFER EQU 080H
MOV aa,R7
MOV aa+1,R6
SETB SDA
SETB SCL
BYTE_FILL:
MOV R0,#BUFFER
MOV DPL,aa
MOV DPH,aa+1
X62: MOV ADDRLO,DPL
MOV ADDRHI,DPH
MOV R1 ,#PSIZE
MOV B,#120
X63: MOV A,#PADDR
LCALL WRITE_BLOCK
JNC X64
DJNZ B,X63
SETB C
X64: RET
WRITE_BLOCK: ;块写入
LCALL START
JC X38
RL A
ORL A,#FADDR
CLR ACC.0
LCALL SHOUT
JC X37
MOV A,ADDRHI
LCALL SHOUT
JC X37
MOV A,ADDRLO
LCALL SHOUT
JC X37
MOV R0 ,#BUFFER
X36:MOV A, @R0
LCALL SHOUT
JC X37
INC R0
DJNZ R1 ,X36
CLR C
X37:LCALL STOP
X38:RET
START:SETB SDA
SETB SCL
JNB SDA,X40
JNB SCL,X40
NOP
CLR SDA
NOP
NOP
NOP
NOP
NOP
CLR SCL
CLR C
LJMP X41
X40: SETB C
X41: RET
STOP: CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
NOP
SETB SDA
RET
SHOUT:PUSH B
MOV B,#8
X42: RLC A
MOV SDA,C
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
DJNZ B,X42
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
MOV C,SDA
CLR SCL
POP B
RET
SHIN: SETB SDA
PUSH B
MOV B,#8
X43: NOP
NOP
NOP
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
CLR SCL
DJNZ B,X43
POP B
RET
ACK: CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
NAK: SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -