闪存的接口头文件Flash.h 如下:
#ifndef _K9F4008_H_
#define _K9F4008_H_
void read_log_page(u8 sector,u8 page,u8 xdata *buf);
u8 prog_log_page(u8 sector,u8 page,u8 xdata *buf);
void erase_log_blk(u8 sector);
bit flash_init(void);
#endif
实现闪存的接口, 首先就是依据说明书的时序定义闪存的基本操作。这里是以宏定义实现基本操作的。
#define W_CMD(cmd_)
bCLE=1; bWE=0; P2=(cmd_); bWE=1; bCLE=0
#define W_ADDR(addr1_,addr2_,addr3_)
bALE=1; bWE=0; P2=(addr1_); bWE=1;
bWE=0; P2=(addr2_); bWE=1;
bWE=0; P2=(addr3_); bWE=1;
bALE=0
#define W_DAT(dat_) bWE=0; P2=(dat_); bWE=1
#define wait_RB while(! bRB)
#define l2p(x_) fat_tbl[(x_)]
3.4 EEPROM
内部集成的EEPROM 是与程序空间分开的, 利用ISP/IAP 技术可将内部DATAFLASH 当EEPROM,擦写次数10 万次以上。EEPROM 可分为若干个扇区, 每个扇区包含512 B.使用时, 建议同一次修改的数据放在同一个扇区, 不是同一次修改的数据放在不同的扇区, 不一定要用满。数据存储器的擦除操作是按扇区进行的。
sfr IAP_DATA = 0xC2; //Flash data register
sfr IAP_ADDRH = 0xC3; //Flash address HIGH
sfr IAP_ADDRL = 0xC4; //Flash address LOW
sfr IAP_CMD = 0xC5; //Flash command register
sfr IAP_TRIG = 0xC6; //Flash command trigger
sfr IAP_CONTR = 0xC7; //Flash control register
根据使用说明对EEPROM 的寄存器进行定义。
本文关键字:暂无联系方式显示电路-显示屏,单元电路 - 显示电路-显示屏