EEPROM是单片机应用系统中经常会用到的存储器,它主要用来保存一些掉电后需要保持不变的数据。在以前的单片机系统中,通常都是在单片机外面再扩充一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,很多单片机的公司都推出了集成有小容量EEPROM的单片机,这样就方便了使用,降低了成本,提高了可靠性。 STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为特色的是,在STM8单片机中,对EEPROM的访问就象常规的RAM一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。 下面的实验程序,就是先给EEPROM中的第一个单元004000H写入55H,然后再读到全局变量ch中。 同样还是利用ST的开发工具,生成一个C语言程序的框架,然后修改其中的main.c,修改后的代码如下。 // 程序描述:对芯片内部的EEPROM存储单元进行实验 #include "STM8S207C_S.h" unsigned char ch; main() { unsigned char *p; p = (unsigned char *)0x4000; // 指针p指向芯片内部的EEPROM第一个单元 // 对数据EEPROM进行解锁 do { FLASH_DUKR = 0xae; // 写入第一个密钥 FLASH_DUKR = 0x56; // 写入第二个密钥 } while((FLASH_IAPSR & 0x08) == 0); // 若解锁未成功,则重新再来 *p = 0xaa; // 写入第一个字节 while((FLASH_IAPSR & 0x04) == 0); // 等待写操作成功 ch = *p; // 将写入的内容读到变量ch中 while(1) { ; } }
|