728x90

728x90

Wednesday, February 25, 2026

ATMega644P SPI and 23K256 Serial SRAM

 Overview

The Microchip Technology Inc. 23X256 is a 256-Kbit Serial SRAM device. The memory is accessed via a simple Serial Peripheral Interface (SPI) compatible serial bus. The bus signals required are a clock input (SCK) plus separate data in (SI) and data out (SO) lines. Access to the device is controlled through a Chip Select (CS) input. Communication to the device can be paused via the hold pin (HOLD). While the device is paused, transitions on its inputs will be ignored, with the exception of Chip Select, allowing the host to service higher priority interrupts. 


It supports clock rate up to 10MHz via its SPI interface. There many write and read modes, byte mode, page mode and sequential mode. Each pages contains 32 bytes of data.

ATMega644P SPI and 23K256 Serial SRAM 

This SPI chip does not have an address but it has some command before able read and write to this chip. Command or instruction locate at the first byte of data transmission. For example 0x03 for READ and 0x02 for WRITE.

ATMega644P SPI and 23K256 Serial SRAM
Data read and write using byte mode

 By default this device operates in byte read or write mode.

ATMega644P and 23K256 Interfacing

To get start the master ATMega644P MCU write and read data from this chip using byte mode. SRAM data will display on PORTC.

ATMega644P SPI and 23K256 Serial SRAM
Schematic

Source Code "main.c":

  1. /*
  2. * 12-spi_23K256.c
  3. *
  4. * Created: 2/25/2026 9:31:10 AM
  5. * Author : Admin
  6. */

  7. #include <avr/io.h>
  8. #include <util/delay.h>
  9. #define F_CPU 16000000UL

  10. #define DDR_SPI DDRB
  11. #define PRT_SPI PORTB

  12. #define DD_SS 4
  13. #define DD_MOSI 5
  14. #define DD_MISO 6
  15. #define DD_SCK 7

  16. void SPI_MasterInit(void)
  17. {
  18. /* Set MOSI and SCK output, all others input */
  19. DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
  20. /* Enable SPI, Master, set clock rate fck/16 */
  21. SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  22. }

  23. void SPI_MasterTransmit(char cData)
  24. {
  25. /* Start transmission */
  26. SPDR = cData;
  27. /* Wait for transmission complete */
  28. while(!(SPSR & (1<<SPIF)))
  29. ;
  30. }

  31. void SPI_SlaveInit(void)
  32. {
  33. /* Set MISO output, all others input */
  34. DDR_SPI = (1<<DD_MISO);
  35. /* Enable SPI */
  36. SPCR = (1<<SPE);
  37. }
  38. char SPI_SlaveReceive(void)
  39. {
  40. /* Wait for reception complete */
  41. while(!(SPSR & (1<<SPIF)))
  42. ;
  43. /* Return Data Register */
  44. return SPDR;
  45. }

  46. // 23K256 SPI SRAM

  47. void write_bytes_23K256(unsigned int address, unsigned char data){
  48. unsigned char temp;
  49. PRT_SPI&=~(1<<DD_SS);
  50. SPI_MasterTransmit(0x02);
  51. SPI_MasterTransmit(address>>8);
  52. SPI_MasterTransmit(address);
  53. SPI_MasterTransmit(data);
  54. PRT_SPI|=(1<<DD_SS);
  55. }

  56. unsigned char read_bytes_23K256(unsigned int address){
  57. PRT_SPI&=~(1<<DD_SS);
  58. SPI_MasterTransmit(0x03);
  59. SPI_MasterTransmit(address>>8);
  60. SPI_MasterTransmit(address);
  61. SPI_MasterTransmit(0xFF);
  62. unsigned char data=SPI_SlaveReceive();
  63. PRT_SPI|=(1<<DD_SS);
  64. return data;
  65. }
  66. int main(void)
  67. {
  68. /* Replace with your application code */
  69. SPI_MasterInit();
  70. PRT_SPI|=(1<<DD_SS);
  71. unsigned char temp=0, data[16];
  72. DDRC=0xFF;
  73. while (1)
  74. {
  75. for (unsigned int i=0;i<8;i++)
  76. {
  77. write_bytes_23K256(i,1<<i);
  78. PORTC=read_bytes_23K256(i);
  79. _delay_ms(1000);
  80. }
  81. }
  82. }







Now I put a character LCD to show data reading from the 23K256. This chip still operate in byte mode data read and write.

ATMega644P SPI and 23K256 Serial SRAM
Schematic

 Source Code "main.c":

  1. /*
  2. * 23K256_1602.c
  3. *
  4. * Created: 2/25/2026 10:50:02 AM
  5. * Author : Admin
  6. */

  7. #include <avr/io.h>
  8. #include <util/delay.h>
  9. #define F_CPU 16000000UL

  10. #define DDR_SPI DDRB
  11. #define PRT_SPI PORTB

  12. #define DD_SS 4
  13. #define DD_MOSI 5
  14. #define DD_MISO 6
  15. #define DD_SCK 7

  16. void delay_1(unsigned int value){
  17. for (unsigned int i=0;i<value;i++)
  18. {
  19. }
  20. }
  21. void SPI_MasterInit(void)
  22. {
  23. /* Set MOSI and SCK output, all others input */
  24. DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
  25. /* Enable SPI, Master, set clock rate fck/16 */
  26. SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  27. }

  28. void SPI_MasterTransmit(char cData)
  29. {
  30. /* Start transmission */
  31. SPDR = cData;
  32. /* Wait for transmission complete */
  33. while(!(SPSR & (1<<SPIF)))
  34. ;
  35. }

  36. void SPI_SlaveInit(void)
  37. {
  38. /* Set MISO output, all others input */
  39. DDR_SPI = (1<<DD_MISO);
  40. /* Enable SPI */
  41. SPCR = (1<<SPE);
  42. }
  43. char SPI_SlaveReceive(void)
  44. {
  45. /* Wait for reception complete */
  46. while(!(SPSR & (1<<SPIF)))
  47. ;
  48. /* Return Data Register */
  49. return SPDR;
  50. }

  51. // 23K256 SPI SRAM

  52. void write_bytes_23K256(unsigned int address, unsigned char data){
  53. unsigned char temp;
  54. PRT_SPI&=~(1<<DD_SS);
  55. SPI_MasterTransmit(0x02);
  56. SPI_MasterTransmit(address>>8);
  57. SPI_MasterTransmit(address);
  58. SPI_MasterTransmit(data);
  59. PRT_SPI|=(1<<DD_SS);
  60. //delay_1(1000);
  61. }

  62. unsigned char read_bytes_23K256(unsigned int address){
  63. PRT_SPI&=~(1<<DD_SS);
  64. SPI_MasterTransmit(0x03);
  65. SPI_MasterTransmit(address>>8);
  66. SPI_MasterTransmit(address);
  67. SPI_MasterTransmit(0xFF);
  68. //delay_1(1000);
  69. unsigned char data=SPI_SlaveReceive();
  70. PRT_SPI|=(1<<DD_SS);
  71. return data;
  72. }
  73. int main(void)
  74. {
  75. /* Replace with your application code */
  76. _delay_ms(50);
  77. SPI_MasterInit();
  78. PRT_SPI|=(1<<DD_SS);
  79. unsigned char temp=0, data[16];
  80. lcd_init();
  81. lcd_clear();
  82. lcd_text("ATMega644P SRAM");
  83. lcd_xy(1,2);
  84. lcd_text("Serial 23K256");
  85. _delay_ms(10000);
  86. lcd_clear();
  87. for (unsigned int i=0;i<10;i++)
  88. {
  89. write_bytes_23K256(i,'0'+i);
  90. }
  91. for (unsigned int i=0;i<10;i++)
  92. {
  93. lcd_data(read_bytes_23K256(i));
  94. }
  95. lcd_xy(1,2);
  96. for (unsigned int i=0;i<16;i++)
  97. {
  98. write_bytes_23K256(i+10,'A'+i);
  99. }
  100. for (unsigned int i=0;i<16;i++)
  101. {
  102. lcd_data(read_bytes_23K256(i+10));
  103. }
  104. while (1)
  105. {
  106. }
  107. }


The LCD drivers are not here you can download this project package in download section below. I tested it on my AVR ATMega644P prototype board. It works fine and fast. But the wires connection problem between the prototype board and the bread board often cause problems to data communication.

ATMega644P SPI and 23K256 Serial SRAM 


ATMega644P SPI and 23K256 Serial SRAM


Using sequential writing and reading mode could save processing time. However the master MCU must put the 23K256 to operate in this mode by writing an instruction to this chip.

ATMega644P SPI and 23K256 Serial SRAM
Read Status Register Instruction

 The schematic is shown in previous example. The LCD shows the result of data reading from SRAM.

Source Code "main.c":

  1. /*
  2. * 23K256_Sequential_1602.c
  3. *
  4. * Created: 2/25/2026 2:37:30 PM
  5. * Author : Admin
  6. */

  7. #include <avr/io.h>
  8. #include <util/delay.h>
  9. #define F_CPU 16000000UL
  10. #include <stdio.h>

  11. #define DDR_SPI DDRB
  12. #define PRT_SPI PORTB

  13. #define DD_SS 4
  14. #define DD_MOSI 5
  15. #define DD_MISO 6
  16. #define DD_SCK 7

  17. void delay_1(unsigned int value){
  18. for (unsigned int i=0;i<value;i++)
  19. {
  20. }
  21. }
  22. void SPI_MasterInit(void)
  23. {
  24. /* Set MOSI and SCK output, all others input */
  25. DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
  26. /* Enable SPI, Master, set clock rate fck/16 */
  27. SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  28. }

  29. void SPI_MasterTransmit(char cData)
  30. {
  31. /* Start transmission */
  32. SPDR = cData;
  33. /* Wait for transmission complete */
  34. while(!(SPSR & (1<<SPIF)))
  35. ;
  36. }

  37. void SPI_SlaveInit(void)
  38. {
  39. /* Set MISO output, all others input */
  40. DDR_SPI = (1<<DD_MISO);
  41. /* Enable SPI */
  42. SPCR = (1<<SPE);
  43. }
  44. char SPI_SlaveReceive(void)
  45. {
  46. /* Wait for reception complete */
  47. while(!(SPSR & (1<<SPIF)))
  48. ;
  49. /* Return Data Register */
  50. return SPDR;
  51. }

  52. // 23K256 SPI SRAM

  53. void write_bytes_23K256(unsigned int address, unsigned char data){
  54. unsigned char temp;
  55. PRT_SPI&=~(1<<DD_SS);
  56. SPI_MasterTransmit(0x02);
  57. SPI_MasterTransmit(address>>8);
  58. SPI_MasterTransmit(address);
  59. SPI_MasterTransmit(data);
  60. PRT_SPI|=(1<<DD_SS);
  61. }

  62. unsigned char read_bytes_23K256(unsigned int address){
  63. PRT_SPI&=~(1<<DD_SS);
  64. SPI_MasterTransmit(0x03);
  65. SPI_MasterTransmit(address>>8);
  66. SPI_MasterTransmit(address);
  67. SPI_MasterTransmit(0xFF);
  68. unsigned char data=SPI_SlaveReceive();
  69. PRT_SPI|=(1<<DD_SS);
  70. return data;
  71. }

  72. void write_sequential_23K256(unsigned int address, unsigned char *data){
  73. PRT_SPI&=~(1<<DD_SS);
  74. SPI_MasterTransmit(0x01);
  75. SPI_MasterTransmit(1<<6);
  76. PRT_SPI|=(1<<DD_SS);
  77. unsigned char temp;
  78. PRT_SPI&=~(1<<DD_SS);
  79. SPI_MasterTransmit(0x02);
  80. SPI_MasterTransmit(address>>8);
  81. SPI_MasterTransmit(address);
  82. while(*data) { SPI_MasterTransmit(*data++); delay_1(10);}
  83. PRT_SPI|=(1<<DD_SS);
  84. }

  85. unsigned char data_read[32];
  86. void read_sequential_23K256(unsigned int address,unsigned int size){
  87. PRT_SPI&=~(1<<DD_SS);
  88. SPI_MasterTransmit(0x01);
  89. SPI_MasterTransmit(1<<6);
  90. PRT_SPI|=(1<<DD_SS);
  91. unsigned char *temp;
  92. PRT_SPI&=~(1<<DD_SS);
  93. SPI_MasterTransmit(0x03);
  94. SPI_MasterTransmit(address>>8);
  95. SPI_MasterTransmit(address);
  96. for (unsigned int i=0;i<size;i++)
  97. {
  98. SPI_MasterTransmit(0xFF);
  99. data_read[i]=SPI_SlaveReceive();
  100. delay_1(10);
  101. }
  102. PRT_SPI|=(1<<DD_SS);
  103. }

  104. int main(void)
  105. {
  106. /* Replace with your application code */
  107. _delay_ms(500);
  108. SPI_MasterInit();
  109. PRT_SPI|=(1<<DD_SS);

  110. lcd_init();
  111. lcd_clear();
  112. while (1)
  113. {
  114. lcd_xy(1,1);
  115. write_sequential_23K256(0,"ATMEGA644P SPI");
  116. for (unsigned int i=0;i<14;i++)
  117. {
  118. data_read[i]=read_bytes_23K256(i);
  119. }
  120. lcd_text(data_read);
  121. write_sequential_23K256(16,"23K256 SRAM ");
  122. lcd_xy(1,2);
  123. read_sequential_23K256(16,16);
  124. lcd_text(data_read);
  125. _delay_ms(10000);
  126. lcd_clear();
  127. write_sequential_23K256(32,"ABCDEFGHIJKLMOPQ");
  128. lcd_xy(1,1);
  129. read_sequential_23K256(32,16);
  130. lcd_text(data_read);
  131. write_sequential_23K256(64,"RSTUVWXYZ !@#$%^");
  132. lcd_xy(1,2);
  133. read_sequential_23K256(64,16);
  134. lcd_text(data_read);
  135. _delay_ms(10000);
  136. lcd_clear();
  137. }
  138. }

I tested it on AVR ATMega644P Prototype Board. There are some unwanted data on SRAM space. So the master MCU must clear them first.

ATMega644P SPI and 23K256 Serial SRAM 


ATMega644P SPI and 23K256 Serial SRAM


Click here to download this example.



 

 

 

 

Tuesday, February 24, 2026

ATMega644P and 25AA010A SPI Bus Serial EEPROM

 Overview

The Microchip Technology Inc. 25XX010A is a 1-Kbit (8-bit x 127) Serial Electrically Erasable PROM (EEPROM). The memory is accessed via a simple Serial Peripheral Interface (SPI) compatible serial bus. The bus signals required are a clock input (SCK) plus separate data in (SI) and data out (SO) lines. Access to the device is controlled through a Chip Select (CS) input. 

ATMega644P and 25AA010A SPI Bus Serial EEPROM

Since it uses the SPI interface it can handle the clock rate up to 10MHz faster than other I2C(TWI) serial EEPROM. Its read/write cycles is up to 1M times.

25AA010A | Microchip Technology 

It has various device's package including a DIP-8 package for hobbyists prototyping.

PIC16F887 SPI 25AA010A EEPROM XC8 Example
Device Selection Table


This chip also has a model in Proteus that enable the engineer to test its operation by software.

 

PIC16F887 SPI 25AA010A EEPROM XC8 Example
Package Types and Pin Function Table

The SPI transfer and receive must have the following data bytes, instruction, address, and data.
PIC16F887 SPI 25AA010A EEPROM XC8 Example
Block Diagram, Instructions, and SPI Read Sequence
 

The read command is 0x03 follows by the EEPROM address. The EEPROM 8-bit data will shift out by the SPI read routine issued by the microprocessor. 

Writing data to the EEPROM requires around 5ms. It requires a write enable instruction before the data writing sequence able to process.

PIC16F887 SPI 25AA010A EEPROM XC8 Example
Write Enable and Disable Commands
 

Write-enable command is 0x06 while the Write-disable command is 0x04. Additionally the Write Protect (WP) pin must pull high to enable data writing.

Byte write sequence instruction is 0x02 follows by the EEPROM address and the 8-bit data. It also has a page write sequence to write a burst of 16 bytes data package. The microprocessor needs to wait around 5ms to complete data writing.
 

PIC16F887 SPI 25AA010A EEPROM XC8 Example
Byte and Page Write Sequences
 

The Read Status Register Instruction is optional you can read the device datasheet for more detail. 

ATMega644P and 25AA010A SPI Bus Serial EEPROM It's useful the for a master MCU to determine when the next read or write operation will proceed. Some programmer just use a delay function that last around 100 micro-seconds instead of using this operation.

ATMega644 and  25AA010A Interfacing

Using a dedicated SPI interface of an MCU is very fast and reliable. The internal MCU serial communication module process this serial data transmission and reception tasks.

This example show a write and read operation to the 25AA010A from a master ATMega644P SPI. Data is written to the 25AA010A prior to reading back from this chip. Then they are shown on PORTC.

ATMega644P and 25AA010A SPI Bus Serial EEPROM
Schematic

 Source Code "main.c":

  1. /*
  2. * 12-spi_25AA010A.c
  3. *
  4. * Created: 2/24/2026 2:16:04 PM
  5. * Author : Admin
  6. */

  7. #include <avr/io.h>
  8. #include <util/delay.h>
  9. #define F_CPU 16000000UL

  10. #define DDR_SPI DDRB
  11. #define PRT_SPI PORTB

  12. #define DD_SS 4
  13. #define DD_MOSI 5
  14. #define DD_MISO 6
  15. #define DD_SCK 7

  16. void SPI_MasterInit(void)
  17. {
  18. /* Set MOSI and SCK output, all others input */
  19. DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
  20. /* Enable SPI, Master, set clock rate fck/16 */
  21. SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  22. }

  23. void SPI_MasterTransmit(char cData)
  24. {
  25. /* Start transmission */
  26. SPDR = cData;
  27. /* Wait for transmission complete */
  28. while(!(SPSR & (1<<SPIF)))
  29. ;
  30. }

  31. void SPI_SlaveInit(void)
  32. {
  33. /* Set MISO output, all others input */
  34. DDR_SPI = (1<<DD_MISO);
  35. /* Enable SPI */
  36. SPCR = (1<<SPE);
  37. }
  38. char SPI_SlaveReceive(void)
  39. {
  40. /* Wait for reception complete */
  41. while(!(SPSR & (1<<SPIF)))
  42. ;
  43. /* Return Data Register */
  44. return SPDR;
  45. }

  46. // 93AA46B SPI EEPROM

  47. void write_enable(void){
  48. PRT_SPI&=~(1<<DD_SS);
  49. SPI_MasterTransmit(0x06);
  50. PRT_SPI|=(1<<DD_SS);
  51. }

  52. unsigned char read_status(void){
  53. PRT_SPI&=~(1<<DD_SS);
  54. SPI_MasterTransmit(0x05);
  55. SPI_MasterTransmit(0x00);
  56. unsigned char temp=SPI_SlaveReceive();
  57. PRT_SPI|=(1<<DD_SS);
  58. return temp;
  59. }
  60. void write_93AA46B(unsigned char address, unsigned char data){
  61. unsigned char temp;
  62. PRT_SPI&=~(1<<DD_SS);
  63. SPI_MasterTransmit(0x02);
  64. SPI_MasterTransmit(address);
  65. SPI_MasterTransmit(data);
  66. PRT_SPI|=(1<<DD_SS);
  67. //Check Write Busy Flag
  68. do
  69. {
  70. temp=read_status();
  71. } while ((temp&0x01)==1);
  72. }

  73. unsigned char read_93AA46B(unsigned char address){
  74. PRT_SPI&=~(1<<DD_SS);
  75. SPI_MasterTransmit(0x03);
  76. SPI_MasterTransmit(address);
  77. SPI_MasterTransmit(0xFF);
  78. unsigned char data=SPI_SlaveReceive();
  79. PRT_SPI|=(1<<DD_SS);
  80. return data;
  81. }
  82. int main(void)
  83. {
  84. /* Replace with your application code */
  85. SPI_MasterInit();
  86. PRT_SPI|=(1<<DD_SS);
  87. unsigned char temp=0, data=0;
  88. DDRC=0xFF;
  89. write_enable();
  90. while (1)
  91. {
  92. for (unsigned char i=0;i<8;i++)
  93. {
  94. write_93AA46B(i,1<<i);
  95. PORTC=read_93AA46B(i);
  96. _delay_ms(1000);
  97. }
  98. }
  99. }






I don't have a physical device for this chip. So I just tested it in a simulator.

Now I added a character LCD to display some ASCII data. 

ATMega644P and 25AA010A SPI Bus Serial EEPROM
Schematic

 

Source Code "main.c":

  1. /*
  2. * 25AA010A_1602.c
  3. *
  4. * Created: 2/24/2026 9:36:19 PM
  5. * Author : Admin
  6. */

  7. #include <avr/io.h>
  8. #include <util/delay.h>
  9. #define F_CPU 16000000UL

  10. #define DDR_SPI DDRB
  11. #define PRT_SPI PORTB

  12. #define DD_SS 4
  13. #define DD_MOSI 5
  14. #define DD_MISO 6
  15. #define DD_SCK 7

  16. void SPI_MasterInit(void)
  17. {
  18. /* Set MOSI and SCK output, all others input */
  19. DDR_SPI = (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
  20. /* Enable SPI, Master, set clock rate fck/16 */
  21. SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
  22. }

  23. void SPI_MasterTransmit(char cData)
  24. {
  25. /* Start transmission */
  26. SPDR = cData;
  27. /* Wait for transmission complete */
  28. while(!(SPSR & (1<<SPIF)))
  29. ;
  30. }

  31. void SPI_SlaveInit(void)
  32. {
  33. /* Set MISO output, all others input */
  34. DDR_SPI = (1<<DD_MISO);
  35. /* Enable SPI */
  36. SPCR = (1<<SPE);
  37. }
  38. char SPI_SlaveReceive(void)
  39. {
  40. /* Wait for reception complete */
  41. while(!(SPSR & (1<<SPIF)))
  42. ;
  43. /* Return Data Register */
  44. return SPDR;
  45. }

  46. // 93AA46B SPI EEPROM

  47. void write_enable(void){
  48. PRT_SPI&=~(1<<DD_SS);
  49. SPI_MasterTransmit(0x06);
  50. PRT_SPI|=(1<<DD_SS);
  51. }

  52. unsigned char read_status(void){
  53. PRT_SPI&=~(1<<DD_SS);
  54. SPI_MasterTransmit(0x05);
  55. SPI_MasterTransmit(0x00);
  56. unsigned char temp=SPI_SlaveReceive();
  57. PRT_SPI|=(1<<DD_SS);
  58. return temp;
  59. }
  60. void write_25AA010A(unsigned char address, unsigned char data){
  61. write_enable();
  62. unsigned char temp;
  63. PRT_SPI&=~(1<<DD_SS);
  64. SPI_MasterTransmit(0x02);
  65. SPI_MasterTransmit(address&0x7F);
  66. SPI_MasterTransmit(data);
  67. PRT_SPI|=(1<<DD_SS);
  68. //Check Write Busy Flag
  69. do
  70. {
  71. temp=read_status();
  72. } while ((temp&0x01)==1);
  73. }

  74. unsigned char read_25AA010A(unsigned char address){
  75. PRT_SPI&=~(1<<DD_SS);
  76. SPI_MasterTransmit(0x03);
  77. SPI_MasterTransmit(address&0x7F);
  78. SPI_MasterTransmit(0x00);
  79. _delay_us(100);
  80. unsigned char data=SPI_SlaveReceive();
  81. PRT_SPI|=(1<<DD_SS);
  82. return data;
  83. }

  84. int main(void)
  85. {
  86. /* Replace with your application code */
  87. SPI_MasterInit();
  88. PRT_SPI|=(1<<DD_SS);
  89. lcd_init();
  90. unsigned char temp[16]="ATMEGA644P SPI";
  91. for (unsigned char i=0;i<16;i++)
  92. {
  93. write_25AA010A(i,temp[i]);
  94. }
  95. for (unsigned char i=0;i<16;i++)
  96. {
  97. temp[i]=read_25AA010A(i);
  98. }
  99. lcd_text(temp);
  100. unsigned char temp_1[16]="25AA010A EEPROM";
  101. for (unsigned char i=16;i<32;i++)
  102. {
  103. write_25AA010A(i,temp_1[i]);
  104. }
  105. for (unsigned char i=16;i<32;i++)
  106. {
  107. temp_1[15-i]=read_25AA010A(i);
  108. }
  109. lcd_xy(1,2);
  110. lcd_text(temp_1);
  111. while (1)
  112. {
  113. }
  114. }

Click here to download this example.

 

 


 

320x50

Search This Blog

tyro-728x90