高级回复 X5045读写一体化C51程序包HotPower的文潭.docx

上传人:b****5 文档编号:6403290 上传时间:2023-01-06 格式:DOCX 页数:7 大小:15.20KB
下载 相关 举报
高级回复 X5045读写一体化C51程序包HotPower的文潭.docx_第1页
第1页 / 共7页
高级回复 X5045读写一体化C51程序包HotPower的文潭.docx_第2页
第2页 / 共7页
高级回复 X5045读写一体化C51程序包HotPower的文潭.docx_第3页
第3页 / 共7页
高级回复 X5045读写一体化C51程序包HotPower的文潭.docx_第4页
第4页 / 共7页
高级回复 X5045读写一体化C51程序包HotPower的文潭.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

高级回复 X5045读写一体化C51程序包HotPower的文潭.docx

《高级回复 X5045读写一体化C51程序包HotPower的文潭.docx》由会员分享,可在线阅读,更多相关《高级回复 X5045读写一体化C51程序包HotPower的文潭.docx(7页珍藏版)》请在冰豆网上搜索。

高级回复 X5045读写一体化C51程序包HotPower的文潭.docx

高级回复X5045读写一体化C51程序包HotPower的文潭

高级回复X5045读写一体化C51程序包--HotPower的文潭

X5045读写一体化C51程序包

发表于2006/12/301:

46:

50

X5045读写一体化C51程序包-(精)(11972字)hotpower2004-9-513:

37:

56[130次]voidX5045SpiOpen(void);//打开X5045片选

voidX5045SpiClose(void);//关闭X5045片选

voidX5045WriteEnable(void);//软件使能X5045写操作

voidX5045WriteDisable(void);//软件禁止X5045写操作

unsignedcharX5045SpiSend(unsignedcharval);//X5045收发SPI协议

voidX5045WriteByte(unsignedintaddr,unsignedcharval);//写X5045一个字节

voidX5045WriteWord(unsignedintaddr,unsignedintval);//写X5045一个字

unsignedcharX5045ReadByte(unsignedintaddr);//读X5045一个字节

unsignedintX5045ReadWord(unsignedintaddr);//读X5045一个字

unsignedcharX5045ReadStatus(void);//读X5045状态

voidX5045WriteStatus(unsignedcharval);//写X5045状态

voidX5045WriteWait(void);//等待X5045写入完成/*--------------------------------------

打开X5045片选

--------------------------------------*/

voidX5045SpiOpen(void)

{

EEPROMCS=1;//WDT

EEPROMSCK=0;

EEPROMSIO=1;//SO=SI=1,释放总线

EEPROMCS=0;//WDT;打开X5045片选CS

}

/*--------------------------------------

关闭X5045片选

--------------------------------------*/

voidX5045SpiClose(void)

{

EEPROMCS=1;//关闭X5045片选CS

EEPROMSIO=1;//SO=SI=1,释放总线

EEPROMSCK=0;

}/*--------------------------------------

软件使能X5045写操作

--------------------------------------*/voidX5045WriteEnable(void)

{

X5045SpiOpen();//打开X5045片选

EEPROMWP=1;//硬件使能X5045写操作

X5045SpiSend(WREN);//发送使能X5045写命令

X5045SpiClose();//关闭X5045片选

}/*--------------------------------------

软件禁止X5045写操作

--------------------------------------*/

voidX5045WriteDisable(void)

{

X5045SpiOpen();//打开X5045片选

X5045SpiSend(WRDI);//发送禁止X5045写命令

EEPROMWP=0;//硬件禁止X5045写操作

X5045SpiClose();//关闭X5045片选

}/*--------------------------------------

X5045收发SPI协议

--------------------------------------*/

unsignedcharX5045SpiSend(unsignedcharval)

{

unsignedchari;

WDTRST=0x1e;//89s52内狗

WDTRST=0xe1;//89s52内狗

ACC=val;

for(i=8;i>0;i--)

{

CY=EEPROMSO;//取数据SO

_rlca_();//存数据ACC.0读数据ACC.7同时进行

EEPROMSI=CY;//送数据SI

EEPROMSCK=1;//上升沿打入数据

_nop_();

EEPROMSCK=0;//下降沿读入数据(首次为假动作)

}

returnACC;

}/*--------------------------------------

写X5045一个字节

--------------------------------------*/

voidX5045WriteByte(unsignedintaddr,unsignedcharval)

{

unsignedchartemp;

temp=WRITE;

if((addr>>8)&0x01)temp|=8;

X5045WriteEnable();//使能X5045写操作

X5045SpiOpen();//打开X5045片选

X5045SpiSend(temp);//发送X5045写命令及高位地址

X5045SpiSend(addr&0xff);//发送X5045写低位地址

X5045SpiSend(val);//发送X5045写数据

X5045SpiClose();//关闭X5045片选

X5045WriteWait();//等待本次X5045写入完成

X5045WriteDisable();//禁止X5045写操作

}/*--------------------------------------

写X5045一个字

--------------------------------------*/

voidX5045WriteWord(unsignedintaddr,unsignedintval)

{

unsignedchartemp;

temp=WRITE;

if((addr>>8)&0x01)temp|=8;

X5045WriteEnable();//使能X5045写操作

X5045SpiOpen();//打开X5045片选

X5045SpiSend(temp);//发送X5045写命令及高位地址

X5045SpiSend(addr&0xff);//发送X5045写低位地址

X5045SpiSend(val&0xff);//发送X5045写低位数据

X5045SpiSend(val>>8);//发送X5045写高位数据

X5045SpiClose();//关闭X5045片选

X5045WriteWait();//等待本次X5045写入完成

X5045WriteDisable();//禁止X5045写操作

}/*--------------------------------------

读X5045一个字节

--------------------------------------*/

unsignedcharX5045ReadByte(unsignedintaddr)

{

unsignedcharval;

X5045SpiOpen();//打开X5045片选

val=READ;

if((addr>>8)&0x01)val|=8;

X5045SpiSend(val);//发送X5045读命令及高位地址

X5045SpiSend(addr&0xff);//发送X5045读低位地址

val=X5045SpiSend(0xff);//接收X5045读数据

X5045SpiClose();//关闭X5045片选

returnval;

}/*--------------------------------------

读X5045一个字

--------------------------------------*/

unsignedintX5045ReadWord(unsignedintaddr)

{

unsignedcharval;

X5045SpiOpen();//打开X5045片选

val=READ;

if((addr>>8)&0x01)val|=8;

X5045SpiSend(val);//发送X5045读命令及高位地址

X5045SpiSend(addr&0xff);//发送X5045读低位地址

val=X5045SpiSend(0xff);//接收X5045读低位数据

addr=X5045SpiSend(0xff);//接收X5045读高位数据

X5045SpiClose();//关闭X5045片选

addr<<=8;

addr|=val;

returnaddr;

}

/*--------------------------------------

读X5045状态

--------------------------------------*/

unsignedcharX5045ReadStatus(void)

{

unsignedcharval;

X5045SpiOpen();//打开X5045片选

X5045SpiSend(RDSR);//发送读X5045状态命令

val=X5045SpiSend(0xff);//接收X5045状态数据

X5045SpiClose();//关闭X5045片选

returnval;

}

/*--------------------------------------

写X5045状态

--------------------------------------*/

voidX5045WriteStatus(unsignedcharval)

{

X5045SpiOpen();//打开X5045片选

X5045SpiSend(WRSR);//发送写X5045状态命令

X5045SpiSend(val);//发送X5045状态数据

X5045SpiClose();//关闭X5045片选

}/*--------------------------------------

等待X5045写入完成

--------------------------------------*/

voidX5045WriteWait(void)

{

while(X5045ReadStatus()&WIP);//WIP=0退出

}系统注:

本文被午夜听风加精.

X5045SpiSend()的一个变例(平时EEPROMSCK=1)(868字)hotpower[18次]2004-9-519:

01:

01

unsignedcharX5045SpiSend(unsignedcharval)

{

unsignedchari;

ACC=val;

for(i=8;i>0;i--)

{

EEPROMSCK=0;//下降沿读入数据

_nop_();//延时

CY=EEPROMSO;//取数据SO

_rlca_();//存数据ACC.0读数据ACC.7同时进行

EEPROMSI=CY;//送数据SI

_nop_();//延时

EEPROMSCK=1;//上升沿打入数据

_nop_();//延时

EEPROMSI=1;//释放总线SI

}

returnACC;

}系统分类:

单片机

用户分类:

KeilC51

标签:

无标签

 

发表评论阅读全文(2673)|回复(0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1