电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

93c46读写程序

来源:-- 作者:-- 浏览:589

标签:

摘要: 93c46读写程序”#include?sbit?CS=P2^7;sbit?SK=P2^6;sbit?DI=P2^5;sbit?DO=P2^4; /*extern?unsigned?char?ReadChar(unsigned?char?address);extern?void?WriteChar(unsigned?char?address,unsigned?char?InData); &nbs

93c46读写程序”
#include?
sbit?CS=P2^7;
sbit?SK=P2^6;
sbit?DI=P2^5;
sbit?DO=P2^4;

/*
extern?unsigned?char?ReadChar(unsigned?char?address);
extern?void?WriteChar(unsigned?char?address,unsigned?char?InData);

 

extern?void?ReadString(unsigned?char?data?*RamAddress,unsigned?char?RomAddress,
unsigned?char?Number);
extern?void?WriteString(unsigned?char?data?*RamAddress,unsigned?char?RomAddress,unsigned?char?Number);
*/

//?Write?enable?must?precede?all?programming?modes.
void?Ewen(void)?{
  unsigned?char?temp,InData;
  CS=0;?
  SK=0;
  CS=1;
   InData=0x98;?//?10011XXXX
   for(temp=9;temp!=0;temp--)?{?//?9
   DI=InData&0x80;
   SK=1;?SK=0;
   InData<<=1;
   }
  CS=0;
}

//?DISAbles?all?programming?instructions.
void?Ewds(void)?{
   unsigned?char?temp,InData;
   CS=0;
   SK=0;
   CS=1;
   InData=0x80;?//?10000XXXX
   for(temp=9;temp!=0;temp--)?{?//?9
   DI=InData&0x80;
   SK=1;?SK=0;
   InData<<=1;
   }
   CS=0;
}

// Reads?data?stored?in?memory,?at?specified?address.
unsigned?int?Read(unsigned?char?address)?{
  unsigned?char?temp;
  unsigned?int?result;
  Ewen();
  SK=0;?DI=1;?//?110?A5-A0
  CS=0;?CS=1;
  SK=1;?SK=0;???//?1
   address=address&0x3f|0x80;
   for(temp=8;temp!=0;temp--)?{?//?8
   DI=address&0x80;
   SK=1;?SK=0;
   address<<=1;
  }
  DO=1;
   for(temp=16;temp!=0;temp--)?{?//?16
   SK=1;
   result=(result<<1)|DO;
   SK=0;
   }
   CS=0;
  Ewds();
   return(result);
}

//?Writes?memory?LOCation?An?-?A0.
void?Write(unsigned?char?address,unsigned?int?InData)?{
   unsigned?char?temp;
   Ewen();
  SK=0;?DI=1;?//?101?A5-A0
   CS=0;?CS=1;
   SK=1;?SK=0;???//?1
   address=address&0x3f|0x40;
   for(temp=8;temp!=0;temp--)?{?//?8
    DI=address&0x80;
    SK=1;?SK=0;
  address<<=1;
  }
  for(temp=16;temp!=0;temp--)?{?//?16
    DI=InData&0x8000;
    SK=1;?SK=0;
    InData<<=1;
   }
    CS=0;?DO=1;
    CS=1;?SK=1;
   while(DO==0)?{???//?busy?test
    SK=0;?SK=1;
   }
   SK=0;?CS=0;
   Ewds();
}

/*
//?Erase?memory?location?An?-?A0.
void?Erase(unsigned?char?address)?{
   unsigned?char?temp;
   Ewen();
   SK=0;?DI=1;?//?111?A5-A0
   CS=0;?CS=1;
   SK=1;?SK=0;???//?1
   address|=0xc0;
   for(temp=8;temp!=0;temp--)?{?//?8
   DI=address&0x80;
   SK=1;?SK=0;
   address<<=1;
   }
  CS=0;?DO=1;
   CS=1;?SK=1;
  while(DO==0)?{
   SK=0;?SK=1;
   }
   SK=0;?CS=0;
   Ewds();
}

//?Erases?all?memory?locations.?Valid?only?at?VCC?=?4.5V?to?5.5V.
void?Eral(void)?{
   unsigned?char?temp,InData;
    Ewen();
    CS=0;
    SK=0;
    CS=1;
   InData=0x90;?//?10010XXXX
   for(temp=9;temp!=0;temp--)?{?//?9
    DI=InData&0x80;
    SK=1;?SK=0;
     InData<<=1;
  }
   CS=0;?DO=1;
     CS=1;?SK=1;
    while(DO==0)?{
   SK=0;?SK=1;
  }
   SK=0;?CS=0;
   Ewds();
}

//?Writes?all?memory?locations.?Valid?only?at?VCC?=?4.5V?to?5.5V.
void?Wral(unsigned?int?InData)?{
   unsigned?char?temp,address;
   Ewen();
   CS=0;
   SK=0;
   CS=1;
   address=0x88;?//?10001XXXX
   for(temp=9;temp!=0;temp--)?{?//?9
    DI=address&0x80;
    SK=1;?SK=0;
    address<<=1;
   }
   for(temp=16;temp!=0;temp--)?{?//?16
   DI=InData&0x8000;
   SK=1;?SK=0;
   InData<<=1;
  }
   CS=0;?DO=1;
   CS=1;?SK=1;
   while(DO==0)?{
    SK=0;?SK=1;
   }
    SK=0;?CS=0;
   Ewds();
}

*/

unsigned?char?ReadChar(unsigned?char?address)?{
    unsigned?char?temp=address>>1;
    if(address&0x01)?return((unsigned?char)(Read(temp)>>8));
    else?return((unsigned?char)(Read(temp)));
}

void?WriteChar(unsigned?char?address,unsigned?char?InData)?{
   unsigned?char?temp=address>>1;
    if(address&0x01)?Write(temp,(unsigned?int)(Read(temp)&0x00ff|(InData<<8)));
    else?Write(temp,(unsigned?int)(Read(temp)&0xff00|InData));
}

void?ReadString(unsigned?char?data?*RamAddress,unsigned?char?RomAddress,unsigned?char?Number)?{
    while(Number!=0)?{
     *RamAddress=ReadChar(RomAddress);
     RamAddress++;
     RomAddress++;
    Number--;
  }
}

void?WriteString(unsigned?char?data?*RamAddress,unsigned?char?RomAddress,unsigned?char?Number)?{
    unsigned?int?temp;
   if(Number==0)?return;
  if(RomAddress&0x01)?{
    WriteChar(RomAddress,*RamAddress);
   RamAddress++;
   RomAddress++;
   Number--;
   }
   if(Number==0)?return;
  while(Number>>1)?{
   temp=*RamAddress;
   RamAddress++;
   temp=temp|(*RamAddress)<<8;
   RamAddress++;
   Write(RomAddress>>1,temp);
   RomAddress++;
   RomAddress++;
   Number--;
    Number--;
   }
   if(Number)?WriteChar(RomAddress,*RamAddress);

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67