繁体中文
高级搜索
 
首页 | 电子技术应用 | 行业最新动态 | 行业最新产品 | 软件资料下载 | 电路图纸欣赏 | 博客文章精选 | 电子精品论坛 | 电子技术贴吧

当前位置:首页 >> 电子技术应用 >> 单片机-----应用 >> X5045读写c程序
X5045读写c程序
作者:   来源: 发表时间:2007-02-28  字号:  

//X5045.H

#ifndef X5045_h
#define X5045_h


#define WDT1_4 0x00;
#define WDT600 0x10;
#define WDT200 0x20;
#define WDTDIS 0x30;

//BIT
sbit B_CS5045=P2^0;
sbit B_SO5045=P2^1;
sbit B_SCLK5045=P2^3;
sbit B_SI5045=P2^2;

extern unsigned char data tcX5045;

void RstWDT(void);
void WrB5045(unsigned char,unsigned char) reentrant; //写入单字节数据
unsigned char RdB5045(unsigned char); //读出单字节数据
void byteout(unsigned char); //向5045输出单字节
void wip_chk(void); //等待5045结束内部写周期
unsigned char rdsr(void); //5045状态寄存器读出程序
unsigned char bytein(void); //从5045读出一字节数据
unsigned char readx(void); //读地址,地址位于100h
void wrsr(unsigned char); //5045状态寄存器写入程序
void wren(void); //写允许
void wrdi(void); //写禁止

#endif

/*
X5045/3 读写驱动
*/

#include <reg51.h>
#include "X5045.h"

//复位看门狗
void RstWDT()
{
B_CS5045=0;
B_CS5045=1;
}

//向X5045写入单字节数据
//输入:x,待写数据,address,写入数据的地址
void WrB5045(unsigned char x,unsigned char address) reentrant //数据,地址
{
wren();
B_SCLK5045=0;
B_CS5045=0;
byteout(0x2); //write
byteout(address);
byteout(x);
B_SCLK5045=0;
B_CS5045=1;
wip_chk();
wrdi();
}

//从X5045读入单字节数据
//输入:address,待读数据地址
//返回:读出的数据
unsigned char RdB5045(unsigned char address)
{
unsigned char data x;
B_SCLK5045=0;
B_CS5045=0;
byteout(0x3); //read 000h
byteout(address);
x=bytein();
B_SCLK5045=0;
B_CS5045=1;
return (x);
}

//向X5045输出单字节
void byteout(unsigned char x)
{
unsigned char data i,j;
j=128;
for(i=0;i<8;i )
{
B_SCLK5045=0;
B_SI5045=x/j;
B_SCLK5045=1;
x%=j;
j/=2;
}
B_SI5045=0;
}

//等待X5045结束内部写周期
void wip_chk()
{
unsigned char data dat;
tcX5045=0;
do
{
dat=rdsr();
dat&=0x1;
if(tcX5045>=5) break;
}
while(dat);
}

//5045状态寄存器读出程序
unsigned char rdsr()
{
unsigned char data dat;
B_SCLK5045=0;
B_CS5045=0;
byteout(5);
dat=bytein();
B_SCLK5045=0;
B_CS5045=1;
return (dat);
}

//从X5045读出一字节数据
unsigned char bytein()
{
unsigned char data i,x;
x=0;
for (i=0;i<8;i )
{
B_SO5045=1;
B_SCLK5045=1;
B_SCLK5045=0;
if (B_SO5045) x=x x 1;
else x<<=1;
}
return(x);
}

//5045状态寄存器写入程序
void wrsr(unsigned char x)
{
wren();
B_SCLK5045=0;
B_CS5045=0;
byteout(1); //wrsr
byteout(x);
B_SCLK5045=0;
B_CS5045=1;
wip_chk();
wrdi();
}

//写允许
void wren()
{
B_SCLK5045=0;
B_CS5045=0;
byteout(6);
B_SCLK5045=0;
B_CS5045=1;
}

//写禁止
void wrdi()
{
B_SCLK5045=0;
B_CS5045=0;
byteout(4);
B_SCLK5045=0;
B_CS5045=1;
}


!注意:如果您发现此文章出现影响您的阅读的状况,请从浏览器地址栏里复制本文的链接到留言本报告给站长解决!
  • 上一篇: 实时时钟芯片HT1380读写c程序
  • 下一篇: [转载]铁电存储器FM24C256在仪表中的应用

  • >> 联系我们请给我们留言·留言本
    本站所有提供的信息软件资料均来自网络,版权及著作权归原作者所有,如果无意中侵犯了您的相关权利或触及法律法规,请给我们留言, 我们将在24小时内删除。
      浙ICP备05071687号  电子技术精品网