Rev. 1.10
58
October 23, 2020
Rev. 1.10
59
October 23, 2020
BC66F5652
2.4GHz RF Transceiver A/D Flash MCU
BC66F5652
2.4GHz RF Transceiver A/D Flash MCU
Programming Considerations
Care must be taken that data is not inadvertently written to the EEPROM. Protection can be
enhanced by ensuring that the Write Enable bit is normally cleared to zero when not writing. Also
the Memory Pointer high byte register, MP1H or MP2H, could be normally cleared to zero as this
would inhibit access to Sector 1 where the EEPROM control register exists. Although certainly not
necessary, consideration might be given in the application program to the checking of the validity of
new write data by a simple read back process.
When writing data the WR bit must be set high immediately after the WREN bit has been set high,
to ensure the write cycle executes correctly. The global interrupt bit EMI should also be cleared
before a write or erase cycle is executed and then set again after a valid write or erase activation
procedure has completed. Note that the device should not enter the IDLE or SLEEP mode until
the EEPROM read or write operation is totally complete. Otherwise, the EEPROM read or write
operation will fail.
Programming Examples
Reading a Data Byte from the EEPROM - polling method
MOV A, 040H ; setup memory pointer low byte MP1L
MOV MP1L, A ; MP1 points to EEC register
MOV A, 01H ; setup memory pointer high byte MP1H
MOV MP1H, A
CLR IAR1.4 ; clear MODE bit, select byte operation mode
MOV A, EEPROM_ADRES ; user defined address
MOV EEA, A
SET IAR1.1 ; set RDEN bit, enable read operations
SET IAR1.0 ; start Read Cycle - set RD bit
BACK:
SZ IAR1.0 ; check for read cycle end
JMP BACK
CLR IAR1 ; disable EEPROM read function
CLR MP1H
MOV A, EED ; move read data to register
MOV READ_DATA, A
Reading a Data Page from the EEPROM - polling method
MOV A, 040H ; setup memory pointer low byte MP1L
MOV MP1L, A ; MP1 points to EEC register
MOV A, 01H ; setup memory pointer high byte MP1H
MOV MP1H, A
SET IAR1.4 ; set MODE bit, select page operation mode
MOV A, EEPROM_ADRES ; user defined address
MOV EEA, A
SET IAR1.1 ; set RDEN bit, enable read operations
; ~~~~ The data length can be up to 16 bytes (Start) ~~~~
CALL READ
CALL READ
:
:
JMP PAGE_READ_FINISH
; ~~~~ The data length can be up to 16 bytes (End) ~~~~
READ:
SET IAR1.0 ; start Read Cycle - set RD bit
BACK:
SZ IAR1.0 ; check for read cycle end
JMP BACK
MOV A, EED ; move read data to register