电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 公众号

    电子元器件

    采购信息平台

  • 移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

93c46读写程序

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

标签:

摘要: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
Baidu
map