HT46F46E/HT46F47E/HT46F48E/HT46F49E
Example 2 - Transmitting an Address to the EEPROM
WriteAddr:
MOV A,C_Addr_Length
; Write address subroutine
; Setup address length - 8 bits for HT46F49E device
MOV COUNT,A
SET _SK
CLR _SK
; Dummy bit transmission for HT46F49E only
; Not required for other devices
WriteAddr_0:
CLR _DI
SZ
SET _DI
ADDR.7
; Check value of address MSB
; Get next address bit
CLR
C
RLC ADDR
SET _SK
CLR _SK
SDZ COUNT
JMP WriteAddr_0
CLR _DI
; Check if address LSB has been written
RET
Example 3 - Writing Data to the EEPROM
WriteData:
MOV A,C_Data_Length
MOV COUNT,A
; Setup data length
WriteData_0:
CLR _DI
SZ WR_Data.7
SET _DI
; Check value of data MSB
CLR
C
RLC WR_Data
SET _SK
CLR _SK
; Get next address bit
SDZ COUNT
JMP WriteData_0
CLR _CS
; Check if data LSB has been written
; CS low edge initiates internal write cycle
; CS high edge allows DO to be used to indicate
; end of write cycle
SET _CS
SNZ _DO
JMP $-1
RET
; Poll for DO high to indicate end of write cycle
Example 4 - Reading Data from the EEPROM
ReadData:
MOV A,C_Data_Length
MOV COUNT,A
CLR WR_Data
; Setup data length
ReadData_0:
CLR
C
RLC WR_Data
SET _SK
SZ
_DO
; check value of data MSB
SET WR_Data.0
CLR _SK
SDZ COUNT
JMP ReadData_0
MOV A,WR_Data
RET
; check if LSB has been received
Rev. 1.40
26
July 28, 2009