历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2021年04月01日 | c51写的X25045的读写程序

2021-04-01 来源:eefocus



/***************************************************************

*X25043/45applicationProcedures

*absoluteoneaddressaccess

***************************************************************

WARNING:Thefunctionwith'_'ahead,usermaynotuseit.asit

usedinternal

*/

//使用函数:write_status(status)写状态,一般写0

//clr_wchdog(void)清看门狗

//unsignedcharread_byte(address)//读一个字节

//voidwrite_byte(address,Data)//写一个字节


#defineALONE_COMPILE

#ifdefALONE_COMPILE

#include"INTRINS.H"

#endif


#ifndefnop2()

#definenop2()_nop_();_nop_();_nop_()

#endif


#defineWREN0x06

#defineWRDI0x04

#defineRDSR0x05

#defineWRSR0x01

#defineREAD0x03

#defineWRITE0x02


//#definePORTP1

sfrPORT=0x90;//25045的4根io脚接在同一端口,本例为p1

//请根据实际电路更改引脚定义

#define_SI0x80//si接在p1.3,0x80=00001000b

#define_SCK0x40//sck接在p1.2,0x80=00000100b

#define_SO0x20//so接在p1.1

#define_CS0x10//cs接在p1.0


//----------------------------------------------------------------

#ifndefdword

#definedwordunsignedlong

#definewordunsignedint

#definebyteunsignedchar

typedefunion{

wordw;

bytebh;

bytebl;

}WordType;


typedefunion{

dworddw;

wordw[2];

byteb[4];

}DwordType;


#endif


//----------------------------------------------------------------

void_w_byte(Data)

charData;

{

chari;


PORT&=(_SCK^0xff);

for(i=0;i<8;i++)

{

nop2();nop2();/////////////

if(Data&0x80)PORT|=_SI;

elsePORT&=(_SI^0xff);

nop2();nop2();/////////////

PORT|=_SCK;

nop2();nop2();/////////////

Data=Data<<1;

nop2();nop2();/////////////

PORT&=(_SCK^0xff);

nop2();nop2();/////////////

}

}

//----------------------------------------------------------------

char_r_byte(void)

{

chari;

charresult;


result=0;

for(i=0;i<8;i++)

{

nop2();nop2();/////////////

PORT|=_SCK;

result=result<<1;

nop2();nop2();/////////////

if((PORT&_SO)!=0)

result|=0x01;

nop2();nop2();/////////////

PORT&=(_SCK^0xff);

nop2();nop2();/////////////

}

return(result);

}

//----------------------------------------------------------------

voidwrite_status(status)

charstatus;

{

PORT&=(_CS^0xff);

nop2();nop2();/////////////

_w_byte(status);

PORT|=_CS;

nop2();nop2();/////////////

return;

}

//----------------------------------------------------------------

voidclr_wchdog(void)

{

PORT&=(_CS^0xff);

PORT|=_CS;

}

//----------------------------------------------------------------

voidwait_free(void)

{

unsignedintt;


t=3000;

while(--t);

}

//----------------------------------------------------------------

voidwrite_reg(_code)

char_code;

{

write_status(WREN);

PORT&=(_CS^0xff);

nop2();nop2();/////////////

_w_byte(WRSR);

_w_byte(_code);

nop2();nop2();/////////////

PORT|=_CS;

wait_free();

}

//----------------------------------------------------------------


unsignedcharread_byte(address)

unsignedintaddress;

{

charresult;


PORT&=(_CS^0xff);//Chipselect

nop2();nop2();/////////////

_w_byte((char)(address>255?(0x08|READ):READ));

_w_byte((char)(address&0x00ff));

result=_r_byte();

nop2();nop2();/////////////

PORT|=_CS;

//Chipunselect

return(result);

}

//----------------------------------------------------------------

voidwrite_byte(address,Data)

unsignedintaddress;

charData;

{

write_status(WREN);

nop2();nop2();/////////////

PORT&=(_CS^0xff);

nop2();nop2();/////////////

_w_byte((unsignedchar)(address>255?(0x08|WRITE):WRITE));

_w_byte((unsignedchar)(address&0x00ff));

_w_byte(Data);

nop2();nop2();/////////////

PORT|=_CS;

wait_free();

return;

}

/*

//----------------------------------------------------------------

unsignedlongread_data(format,address)

unsignedcharformat;

unsignedintaddress;

{

DwordTyperesult;


switch(format&0xdf)

{

case'L':

result.b[0]=read_byte(address);

result.b[1]=read_byte(address+1);

result.b[2]=read_byte(address+2);

result.b[3]=read_byte(address+3);

break;

case'D':

result.b[2]=read_byte(address);

result.b[3]=read_byte(address+1);

break;

case'C':

result.b[3]=read_byte(address);

break;

}

return(result.dw);

}

//----------------------------------------------------------------

voidwrite_data(format,address,Data)

unsignedcharformat;

unsignedintaddress;

DwordTypedata*Data;

{

switch(format&0xdf)

{

case'L':

write_byte(address,Data->b[0]);

write_byte(address+1,Data->b[1]);

write_byte(address+2,Data->b[2]);

write_byte(address+3,Data->b[3]);

break;

case'D':

write_byte(address,Data->b[2]);

write_byte(address+1,Data->b[3]);

break;

case'C':

write_byte(address,Data->b[3]);

break;

}


}

//----------------------------------------------------------------

*/


推荐阅读

史海拾趣

Eagle Plastic Devices公司的发展小趣事

为了保持技术领先地位和满足不断变化的市场需求,Eagle Plastic Devices公司不断加大研发投入,引进先进的研发设备和人才。公司建立了完善的研发体系,包括新产品开发、工艺改进、性能测试等环节。通过不断的技术创新和产品升级,Eagle Plastic Devices公司成功推出了多款具有竞争力的新产品,进一步巩固了其在行业内的领先地位。

AD Semiconductor公司的发展小趣事

Eagle Plastic Devices公司成立于20世纪90年代初期,当时市场上对于高性能塑料电子部件的需求日益增长。公司创始人张先生,凭借其在塑料材料科学和电子工程领域的深厚背景,带领团队研发出了一系列具有革命性的塑料电子封装和连接器产品。这些产品以其优异的电气性能、耐用性和成本效益,迅速在行业内获得了认可,为Eagle Plastic Devices公司奠定了坚实的基础。

Handok Co Ltd公司的发展小趣事

随着全球环保意识的不断提高,Eagle Plastic Devices公司也开始将环保理念融入产品研发和生产过程中。公司采用环保材料、改进生产工艺、降低能耗和排放等措施,努力降低产品对环境的影响。同时,公司还积极参与环保公益活动,倡导绿色消费和可持续发展。这些举措不仅提升了公司的品牌形象,也为公司带来了更多的市场机遇。

长江微电(cjiang)公司的发展小趣事

为了进一步扩大市场份额和品牌影响力,长江微电积极寻求与业内知名分销商的合作。基于对世强先进O2O技术分销模式的信赖与认可,长江微电与世强先进(深圳)科技股份有限公司签署了授权代理协议。双方将携手合作,共同为用户提供车规级电感、车规级耦合电感等全线产品。这一合作不仅丰富了世强硬创平台电子元器件产品的品类及信息,也为长江微电的市场拓展提供了有力支持。

Dau Semiconductor Inc公司的发展小趣事

在成立初期,Dau Semiconductor Inc公司面临着诸多技术挑战。其中,如何实现芯片的低功耗设计是困扰公司发展的一个难题。为了解决这个问题,公司投入大量研发资源,不断探索新的技术和材料。经过数年的努力,公司终于成功突破了技术瓶颈,研发出了一款具有超低功耗的半导体芯片。这款芯片的推出,不仅为公司赢得了市场认可,也为公司在行业中树立了技术领先的形象。

Daniel Woodhead公司的发展小趣事

随着技术的不断进步,Daniel Woodhead公司开始将目光投向更广阔的市场。公司推出了一系列基于自家微处理器的电子产品,如个人计算机、服务器和工作站等。这些产品凭借其出色的性能和稳定性,在市场上获得了良好的口碑。同时,公司还加大了品牌宣传力度,通过赞助科技展会和举办技术研讨会等活动,进一步提升了品牌影响力。

问答坊 | AI 解惑

这样的干扰怎么解决?请赐教

本人设计的工业仪表,遇到这样的问题:输入信号0-20MV。当用手触摸输入端子的时候,显示值会波动,这是什么干扰(好象是串模干扰),如何解决?注明:信号是经过了2个模拟开关(CD4051),由OP07放大 再采样。…

查看全部问答>

modelsim仿真工具版本问题

问下,我怎么发现用modelsim6.2与modelsim6.5仿真出来的波形不一样啊! 问下大家一般都用那个版本的modelsim啊?…

查看全部问答>

急问cmd

请问在DSP开发中,要设计CMD命令文件,听说只要根据不同类型的芯片将各个段的地址修改下就可以了,请问修改的根据是什么呀?具体大小是如何安排的呢?乞求大侠指点一二,欢迎联系QQ:468127218,感激不尽!…

查看全部问答>

求vhdl电子书

请问谁有《数字系统设计与vhdl》第二版 电子工业出版社 和《现代电子技术:vhdl数字系统设计》的电子书。…

查看全部问答>

如何让系统重新读取sd卡的内容?

我现在在做一个东东,上面有一个sd卡,sd卡又有引脚连接到wince系统,这样sd卡在wince系统中可见。 现在就相当于sd卡被wince和我的设备共享,使用时通过切换data线来实现。 问题来了,由于wince系统在sd卡插入时读取了里面的fat表并buffer起来, ...…

查看全部问答>

pxa3XX 从CF卡上启动nk.bin 的bootloader

    请问各位大侠有谁做过pxa310或者pxa270的bootloader 要求从CF卡启动nk.bin       我应该用什么软件来编译,用wce6.0 还是ARM提供的AXD     是不是wce6.0下生成bootimage.nb0 就是bootloader 我用仿 ...…

查看全部问答>

fat32 文件如何被创建,如何被删除?

我尝试着自己在fat1,fat2 中分配空闲空间,接着在dir根目录项中添加项,目标是在c盘下新建一个xxxxxxx.txt 的文件,我尝试着给dir各项赋了值。我用工具检验了,也写进去了。 可是为什么c盘未增加相应文件?我试着重新启动了计算机(本以为window ...…

查看全部问答>

急急急~~

各位大哥,小弟我最近在学嵌入式,用的是ARM7 S3C44BOX,最近碰到一个问题,本人想从CF卡上面下载数据到主机上,但是试验机上插上CF卡后,电脑没检测新硬件设备啊什么的,也就是说我的程序美和CF卡联系上,我是通过USB线连接试验机和电脑的,我不知 ...…

查看全部问答>

UBOOT开发的问题1

正在开发烧写UBOOT到NANDFLASH的烧写器代码,硬件环境I DAVINCI开发平台.软件环境:montavista linux.bootloader:UBOOT-1.1.3.集成开发环境:CCSv3.2.TI提供了烧写器源码,建立工程,添加源码文件.编译出现如下错误,请教其中原因.谢谢!----------------- ...…

查看全部问答>