📄 x5045.c
字号:
#include "X5045CMD.H"
#include <INTRINS.H>
typedef unsigned char uchar;
typedef unsigned int uint;
#define WREN 0x06 //写允许
#define READ 0x03 //读书据
#define WRITE 0x02 //写数据
sbit DI5045=P0^3;
sbit SCK5045=P0^2;
sbit DO5045=P0^1;
sbit CS5045=P1^5;
void X5045OutData(unsigned char ddata)
{ unsigned char i;
for(i=8;i>0;i--)
{
SCK5045=0;
_nop_();
_nop_();
if(ddata&0x80)DI5045=1;
else DI5045=0;
ddata=ddata<<1;
_nop_();
_nop_();
_nop_();
SCK5045=1;
}
}
unsigned char X5045InData(void)
{ unsigned char ddata=0,i;
for(i=8;i>0;i--)
{
SCK5045=1;
_nop_();
_nop_();
_nop_();
SCK5045=0;
_nop_(); _nop_();
ddata=ddata<<1;
if(DO5045) ddata|=0x01;
_nop_();
_nop_();
}
return ddata;
}
unsigned char X5045_ReadStatue(void)
{ unsigned char ddata;
SCK5045=0;
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(RDSR_INST) ;
DO5045=1;
_nop_();
ddata=X5045InData() ;
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
return ddata;
}
/*
void X5045_WriteStatue(unsigned char cmd)
{
SCK5045=0;
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(WRSR_INST);
X5045OutData(cmd);
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
}
void X5045_WriteDisable(void)
{
SCK5045=0;
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(WRDI_INST);
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
}
*/
void X5045_WriteEnable(void)
{
SCK5045=0;
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(WREN_INST);
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
}
unsigned char X5045ByteRead(unsigned char addr)
{
unsigned char ddata;
SCK5045=0;
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(READ_INST) ;
X5045OutData(addr) ;
DO5045=1;
_nop_();
ddata=X5045InData() ;
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
return ddata;
}
void X5045_Write(unsigned char addr,unsigned char ddata) //注意:写之前首先要调用写允许(上面已经给出)
{
EA = 0; //然后判断是否正忙(调用状态读函数)
SCK5045=0; //最后调用此函数
_nop_();
CS5045=0;
_nop_();
_nop_();
X5045OutData(WRITE_INST);
X5045OutData(addr) ;
X5045OutData(ddata);
SCK5045=0;
_nop_();
_nop_();
CS5045=1;
EA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -