/***************************************************************
功能:实现存储器 EEPROM AT45db081 的数据读写操作,同时了解硬件 spi 读写操作
作者:ZDP
时间:2005-11-30
版本:V1.0
***************************************************************/
#include <c8051f020.h>
#include <stdio.h>
#include <intrins.h>
unsigned int Count1msInc;
unsigned int AT450XXPageAddr;
void SYSCLK_Init (void);
void PORT_Init (void);
void SPI0_Init (void);
void Timer0_Init (void);
#define SYSCLK 11059200
#define DF_RESET P4&=~0x10; P4|=0x10; // AT45DB081 复位
#define DF_RDY_BUSY P4|=0x20; while(!(P4&0x20)); // 等待 AT45DB081 准备好
#define DF_CHIP_SELECT P4&=~0x4; // AT45DB081 片选开
#define DF_CHIP_NOSELECT P4|=0x4; // AT45DB081 片选关
#define RAM_CHIP_SELECT_BANK0 ES0=1;P4 = 0xF4;
#define RAM_CHIP_SELECT_BANK1 P4 = 0xF5;
#define BUFFER_1 0x00 // buffer 1
#define BUFFER_2 0x01 // buffer 2
#define BUFFER_1_WRITE 0x84 // buffer 1 write
#define BUFFER_2_WRITE 0x87 // buffer 2 write
#define BUFFER_1_READ 0x54 // buffer 1 read (change to 0xD4 for SPI mode 0,3)
#define BUFFER_2_READ 0x56 // buffer 2 read (change to 0xD6 for SPI mode 0,3)
#define B1_TO_PAGE_WITH_ERASE 0x83 // buffer 1 to main memory page program with
built-in erase
#define B2_TO_PAGE_WITH_ERASE 0x86 // buffer 2 to main memory page program with
built-in erase
#define B1_TO_PAGE_WITHOUT_ERASE 0x88 // buffer 1 to main memory page program
without built-in erase
#define B2_TO_PAGE_WITHOUT_ERASE 0x89 // buffer 2 to main memory page program
without built-in erase
#define PAGE_PROG_THROUGH_B1 0x82 // main memory page program through buffer 1
#define PAGE_PROG_THROUGH_B2 0x85 // main memory page program through buffer 2
#define AUTO_PAGE_REWRITE_THROUGH_B1 0x58 // auto page rewrite through buffer 1
#define AUTO_PAGE_REWRITE_THROUGH_B2 0x59 // auto page rewrite through buffer 2
#define PAGE_TO_B1_COMP 0x60 // main memory page compare to buffer 1
评论0