📄 is62lv1024test.c
字号:
/***************************************************************
功能:实现外部存储器IS62LV1024的数据读写操作,采用非复用地址方式,
128K分块操作(BANK0:0-64K,BANK1:64-128K)
作者:ZDP
时间:2005-11-30
版本:V1.0
***************************************************************/
#include <c8051f020.h> // SFR declarations
#include <intrins.h>
#define SYSCLK 22118400 // SYSCLK frequency in Hz
#define CEON P4|=0x1; // 片选允许
#define CEOFF P4&=~0x1; // 片选禁止
#define BANK1 P4|=0x2; // 选择BANK1:64-128K
#define BANK0 P4&=~0x2; // 选择BANK0:0-64K
void SYSCLK_Init (void);
void PORT_Init(void);
void main (void) {
unsigned int i;
unsigned char j;
unsigned char xdata *Point1;
WDTCN = 0xde;
WDTCN = 0xad; //关闭WDT
PORT_Init();
SYSCLK_Init ();
CEON; //片选使能
BANK0; // 选择BANK0:0-64K
Point1=0x0000;
//从0X0000-0XFFFF写数据
for(i=0;i<0xFFFE;i++)
{
j=i%0x100;
*Point1=j; //写数据至外部RAM
if(j!=*Point1) //读外部RAM数据与刚写入数据比较
{
while(1); //读出数据出错
}
Point1++;
}
_nop_();
CEON; //片选使能
BANK1; // 选择BANK1:64K-128K
Point1=0x0000;
//从0X0000-0XFFFF写数据
for(i=0;i<0xFFFE;i++)
{
j=i%0x100;
*Point1=j; //写数据至外部RAM
if(j!=*Point1) //读外部RAM数据与刚写入数据比较
{
while(1); //读出数据出错
}
Point1++;
}
_nop_();
while (1);
}
//-----------------------------------------------------------------------------
// 系统时钟配置
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
int i; // delay counter
OSCXCN = 0x76; // start external oscillator with
// 22.1184MHz crystal
for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms)
while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
OSCICN = 0x88; // select external oscillator as SYSCLK
// source and enable missing clock
// detector
}
//-----------------------------------------------------------------------------
// I/O配置
//-----------------------------------------------------------------------------
void PORT_Init()
{
XBR2 = 0x40; // 交叉开关使能
EMI0TC = 0x75; //地址建立和保持时间为1SYSCLK,WR、RD保持时间为14SYSCLK
// EMI0CF =0x37; //EMIF端口接到P4-P7,选择非复用方式,工作模式为不带块选择(低于4K在内部,高于4K在外部)。
EMI0CF =0x3f; //EMIF端口接到P4-P7,选择非复用方式,工作模式为全外部RAM。
P74OUT = 0x3f; //P7为开漏输出,P6、5、P4的高4位为推挽输出
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -