0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

请问NUC100VE3AN怎么IS61C6416AL 读写数据

/*下面的程序为什么读出来是0  究竟是什么问题呢 麻烦各位指点一下 谢谢了*/
/*
//  mtcGPIO_Open_PMD 的函数
int32_t mtcGPIO_Open_PMD(E_DRVGPIO_PORT port, int32_t i32Bit, E_DRVGPIO_IO mode)
{
    volatile uint32_t u32Reg;
    u32Reg = (uint32_t)&GPIOA->PMD + (port*PORT_OFFSET);  
  if ((mode == E_IO_INPUT) || (mode == E_IO_OUTPUT) || (mode == E_IO_OPENDRAIN) || (mode == E_IO_QUASI))
  {  
        outpw(u32Reg, i32Bit);
      }
return E_SUCCESS;
}
*/


#include
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"

#define     WE_         0x0100  //PC8;
#define     ALE         0x0100  //PB8;
#define     RAMALL_     0x8000  //PA15;
#define     I_O         0xFFFFFFFF  //PD0_15; 双向
#define     sc          0x55555555  //全部端口设置为输出模式
#define     sr          0    //全部端口设置为输入模式

uint32_t d,dd,num;

void delay_10ms(uint32_t x)
{
uint32_t i,j;
for(;x>0;x--)
  for(i=20;i>0;i--)
   for(j=100;j>0;j--)  ;
}


void  init_ram(void)
{
DrvGPIO_Open(E_GPB, 8, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 15, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 13, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 12, E_IO_OUTPUT);
DrvGPIO_Open(E_GPC, 8, E_IO_OUTPUT);

DrvGPIO_SetBit(E_GPA, 15);   //置位ce
// DrvGPIO_ClrBit(E_GPA, 15);
delay_10ms(1);

DrvGPIO_SetBit(E_GPA, 14);   //置位OE
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 13);   //置位UB
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 12);   //置位LB
delay_10ms(1);
DrvGPIO_SetBit(E_GPC, 8);   //置位WE
delay_10ms(1);
DrvGPIO_ClrBit(E_GPB, 8);
delay_10ms(1);


}
void  writeRamWords(void)
{
uint32_t c=0x33;
mtcGPIO_Open_PMD(E_GPD,sc, E_IO_INPUT);    //输出模式
delay_10ms(1);
DrvGPIO_SetPortBits(E_GPD,0x11);      ///写地址
delay_10ms(50);
DrvGPIO_ClrBit(E_GPB, 8);       ///地址锁存
delay_10ms(50);
DrvGPIO_SetBit(E_GPB, 8);       ///地址解锁
delay_10ms(50);
DrvGPIO_ClrBit(E_GPB, 8);       ///地址锁存
DrvGPIO_SetBit(E_GPA, 14);      //禁止OE

delay_10ms(50);
   DrvGPIO_ClrBit(E_GPA, 15);      ///使能CE
delay_10ms(1);
DrvGPIO_ClrBit(E_GPC, 8);    ///使能WE
delay_10ms(1);  
DrvGPIO_ClrBit(E_GPA, 13);       ///使能UB
delay_10ms(1);
DrvGPIO_ClrBit(E_GPA, 12);     ///使能LB
delay_10ms(1);
// DrvGPIO_SetBit(E_GPA, 14);      //禁止OE
delay_10ms(150);
DrvGPIO_SetPortBits(E_GPD,c);  ///写入数据
num=c;
delay_10ms(150);
// DrvGPIO_SetBit(E_GPA, 15);
   delay_10ms(1);
DrvGPIO_SetBit(E_GPC, 8);   ///置位WE
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 13);   //置位UB
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 12);   //置位LB
delay_10ms(1);
   DrvGPIO_SetBit(E_GPA, 15);      ///静止CE   
}

void  ReadRamWords(void)
{
mtcGPIO_Open_PMD(E_GPD,sc, E_IO_OUTPUT);        ///设置模式
delay_10ms(1);

DrvGPIO_SetPortBits(E_GPD,0x11);   ///写地址
delay_10ms(50);
DrvGPIO_ClrBit(E_GPB,8);    ///地址锁存
delay_10ms(50);
DrvGPIO_SetBit(E_GPB,8);    ///地址解锁
delay_10ms(50);
DrvGPIO_ClrBit(E_GPB,8);    ///地址锁存
delay_10ms(50);
mtcGPIO_Open_PMD(E_GPD,sr, E_IO_OUTPUT);        ///设置模式
delay_10ms(1);
DrvGPIO_SetBit(E_GPC, 8);   ///pc.8=1 WE
delay_10ms(1);
DrvGPIO_ClrBit(E_GPA, 15);    ///使能CE
delay_10ms(1);
DrvGPIO_ClrBit(E_GPA, 12);   ///使能LB
delay_10ms(1);
DrvGPIO_ClrBit(E_GPA, 13);     ///使能UB
delay_10ms(1);
  DrvGPIO_ClrBit(E_GPA, 14);    //使能OE
delay_10ms(150);
  

d=(DrvGPIO_GetPortBits(E_GPD));    //.读取数据
delay_10ms(150);
DrvGPIO_SetBit(E_GPA, 14);   //置位oe
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 13);   //置位UB
delay_10ms(1);
    DrvGPIO_SetBit(E_GPA, 12);   //置位LB
delay_10ms(1);
DrvGPIO_SetBit(E_GPA, 15);    ///置位CE
delay_10ms(150);
dd=(DrvGPIO_GetPortBits(E_GPD));    //.读取数据
}
int main(void)
{
init_ram();
delay_10ms(1);                      //初始化
DrvGPIO_Open(E_GPC, 10, E_IO_OUTPUT);    //设置c端口第10脚为输出模式
writeRamWords();         //向IS61c写入数据
delay_10ms(250);
ReadRamWords();            //从IS61c 读出数据

if(num == 0)   DrvGPIO_SetBit(E_GPC, 10);
if(d != 0)            
    DrvGPIO_SetBit(E_GPC, 10);       //读出的数据不等于0
else        
  DrvGPIO_ClrBit(E_GPC, 10);       //读出的数据等于0
            
    while(1);
   
}
提问者:60user88 地点:- 浏览次数:8008 提问时间:01-20 19:13
我有更好的答案
提 交
1条回答
tjgf 01-25 20:30 回答数:0 被采纳数:0
貌似模拟时序。
撰写答案
提 交
1 / 3
1 / 3