⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wr39l040.c

📁 采用430单片机完成的门禁控制器程序
💻 C
字号:
//---------------------------------------------------------------
//040片选信号使能
//---------------------------------------------------------------
void CE_Enable_040()
{
  P2OUT &=~BIT0;
  return;
}
//---------------------------------------------------------------
//040片选信号低电平
//---------------------------------------------------------------
void CE_Disable_040()
{
  P2OUT |=BIT0;
  return;
}
//---------------------------------------------------------------
//040输出使能
//---------------------------------------------------------------
void OE_Enable_040()
{
  P2OUT &=~BIT1;
  return;
}
//---------------------------------------------------------------
//040输出disable
//---------------------------------------------------------------
void OE_Disable_040()
{
  P2OUT |=BIT1;
  return;
}
//---------------------------------------------------------------
//040写入使能
//---------------------------------------------------------------
void WE_Enable_040()
{
  P2OUT &=~BIT2;
  return;
}
//---------------------------------------------------------------
//040写入disable
//---------------------------------------------------------------
void WE_Disable_040()
{
  P2OUT |=BIT2;
  return;  
}
//---------------------------------------------------------------
//373LE enable
//---------------------------------------------------------------
void lE_Enable_373()
{
  P3OUT |=BIT2;
  return;
}
//---------------------------------------------------------------
//373LEdisable
//---------------------------------------------------------------
void LE_Disable_373()
{
  P3OUT &=~BIT2;
  return;
}
//----------------------------
//write a byte to w39l040
//----------------------------
void writebyte040000(uchar nVal)
{
  uchar i;
  P5DIR =0XFF;
  P5OUT =nVal;
  OE_Disable_040();
  CE_Enable_040();
  WE_Enable_040();
  for(i=0; i<10; i++);   
  WE_Disable_040();
  CE_Disable_040();
}
//------------------------------------------------------------------------------
// write address to w39l040
//------------------------------------------------------------------------------ 
void writeaddr(ulong nAddr)
{
  uchar i;
  i=(nAddr>>8)&0xff; 
  P4OUT =i;
  lE_Enable_373();  
  LE_Disable_373();
  P4OUT =nAddr&0xff;
  if(nAddr & 0x10000)
  {
    P2OUT |=BIT5;
  }
  else
  {
    P2OUT &=~BIT5;
  }
  if(nAddr & 0x20000)
  {
    P2OUT |=BIT3;
  }
  else
  {
    P2OUT &=~BIT3;
  }
  if(nAddr & 0x40000)
  {
    P2OUT |=BIT4;
  }
  else
  {
    P2OUT &=~BIT4;
  }
}
//--------------------------------------
//写入W39L040预处理
//--------------------------------------
void write040pre()
{
  ulong addr[3]={0x5555,0x2aaa,0x5555};
  uchar nVal[3]={0xaa,0x55,0xa0};
  uchar i;
  for(i=0;i<3;i++)
  {
    writeaddr(addr[i]);
    writebyte040000(nVal[i]);
  }
}
//------------------------------------------------------------------------------
// W39L040写程序
//------------------------------------------------------------------------------ 
void write040(ulong addr39,uchar nVal)
{
  writeaddr(addr39);
  writebyte040000(nVal);
}
//------------------------------------------------------------------------------
// read byte from 040
//------------------------------------------------------------------------------ 
uchar read040(ulong addr39)
{
  uchar test;
  uchar i;
  P5DIR =0;
  writeaddr(addr39);
  WE_Disable_040();
  CE_Enable_040();
  OE_Enable_040();
  for(i=0; i<5; i++)
  {
    test =P5IN;
  }
  CE_Disable_040();
  OE_Disable_040();
  return test;
}
void erasesector040(ulong addr399)
{
  write040(0x5555,0xaa);
  write040(0x2aaa,0x55);
  write040(0x5555,0x80);
  write040(0x5555,0xaa);
  write040(0x2aaa,0x55);
  write040(addr399,0x30);
  Delay_ms(1000);
}
/******擦除第七扇区*******/
void erasesector7()
{
  if(FLAG1 & gb_era7)
  {
    FLAG1 &=~ gb_era7;
    erasesector040(0x70000);
  }
}
/******************************************************/
/***********片擦除*************************************/
/******************************************************/
void erasechip040()
{
  write040(0x5555,0xaa);
  write040(0x2aaa,0x55);
  write040(0x5555,0x80);
  write040(0x5555,0xaa);
  write040(0x2aaa,0x55);
  write040(0x5555,0x10);
  Delay_ms(8000);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -