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

📄 w39.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;  
}
//---------------------------------------------------------------
//373片选使能
//---------------------------------------------------------------
void OE_Enable_373()
{
  P3OUT &=~BIT1;
  return;
}
//---------------------------------------------------------------
//373片选disable
//---------------------------------------------------------------
void OE_Disable_373()
{
  P3OUT |=BIT1;
  return;
}
//---------------------------------------------------------------
//373LE enable
//---------------------------------------------------------------
void lE_Enable_373()
{
  P3OUT |=BIT2;
  return;
}
//---------------------------------------------------------------
//373LEdisable
//---------------------------------------------------------------
void LE_Disable_373()
{
  P3OUT &=~BIT2;
  return;
}
//------------------------------------------------------------------------------
//data convert
//------------------------------------------------------------------------------ 
uchar addrcon(uchar address)
{
  uchar i,j,nTemp;
  nTemp=0;
  for(i=8;i>0;i--)
  {
    j =address & 0x01;
    if(j==1)
    {
      nTemp |=1<<(i-1);
    }
    address >>=1;
  }
  return nTemp;
}
//----------------------------
//write a byte to w39l040
//----------------------------
void writebyte040000(uchar nVal)
{
  uchar i;
  CE_Enable_040();
  for(i=0; i<10; i++);
  OE_Disable_040();
  for(i=0; i<10; i++);
  WE_Enable_040();
  for(i=0; i<10; i++);
  P5DIR =0XFF;
  nVal =addrcon(nVal);
  P5OUT =nVal;
  for(i=0; i<10; i++);
  CE_Disable_040();
  for(i=0; i<10; i++);
  WE_Disable_040();
}
void writeaddr(ulong nAddr)
{
  uchar i;
  i=nAddr>>8;
  i=addrcon(i);
  P4OUT =i;
  OE_Enable_373();
  lE_Enable_373();
  for(i=0; i<10; i++);
  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 write040(ulong addr39,uchar nVal)
{
  //write040pre();
  writeaddr(addr39);
  writebyte040000(nVal);
  OE_Disable_373();
}
//------------------------------------------------------------------------------
// read byte from 040
//------------------------------------------------------------------------------ 
uchar read040(ulong addr39)
{
  uchar test;
  uchar i;
  P5DIR =0;
  writeaddr(addr39);
  P2OUT &=~BIT5;
  P2OUT &=~BIT4;
  P2OUT &=~BIT3;
  WE_Disable_040();
  for(i=0; i<10; i++);
  CE_Enable_040();
  for(i=0; i<10; i++);
  OE_Enable_040();
  for(i=0; i<10; i++);
  test =P5IN;
  for(i=0; i<10; i++);
  test =addrcon(test);
  CE_Disable_040();
  for(i=0; i<10; i++);
  OE_Disable_040();
  return test;
}

⌨️ 快捷键说明

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