📄 x5045.h
字号:
/* ========================================================================== */
/* */
/* x5045.h */
/* (c) 2001 Author */
/* */
/* Description */
/* */
/* ========================================================================== */
/******************************************************************
* -----------x5045--------- *
******************************************************************/
sbit CS = P1^0;
sbit SCK = P1^6;
sbit SIN = P1^7;
sbit SOUT = P1^5;
sbit WP = P1^1; //
sbit DOG = P1^0;
#define x_num 1 //X5045
#define x_addr 4 //X5045 X5045
#define x_mark 0 //X5045
#define XMARK 0x5a //X5045
void XReady(void)
{
CS=1;
SOUT=1;
SCK=0;
SIN=0;
return;
}
void XSendByte(unsigned char b)
{
int i;
unsigned char tb;
tb=b;
for (i=0;i<8;i++){
SCK=0;
SIN=((tb & 0x80)==0x80);
SCK=1;
tb<<=1;
}
SIN=0;
return;
}
unsigned char XGetByte(void)
{
int i;
unsigned char tb;
tb=0;
for (i=0;i<8;i++){
tb<<=1;
SCK=1;
SCK=0;
tb|=SOUT;
}
return tb;
}
void XWriteEn(void)
{
SCK=0;
CS=0;
XSendByte(0x06);
SCK=0;
CS=1;
return;
}
void XWriteDis(void)
{
SCK=0;
CS=0;
XSendByte(0x04);
SCK=0;
CS=1;
return;
}
unsigned char XReadStatus(void)
{
unsigned char tb;
CS=0;
XSendByte(0x05);
tb=XGetByte();
CS=1;
return tb;
}
void XWipPoll(void)
{
int i;
unsigned char r;
for (i=0;i<99;i++){
r=XReadStatus();
if((r&1)==0)return;
}
return;
}
void XWriteStatus(unsigned char b)
{
SCK=0;
CS=0;
XSendByte(0x01);
XSendByte(b);
SCK=0;
CS=1;
XWipPoll();
return ;
}
void XReadData(unsigned char *m,unsigned char x,unsigned char n)
{
int i;
SCK=0;
CS=0;
XSendByte(0x03);
XSendByte(x);
for(i=0;i<n;i++){
m[i]=XGetByte();
}
SCK=0;
CS=1;
return ;
}
void XWriteData(unsigned char *m,unsigned char x,unsigned char n)
{
int i;
SCK=0;
CS=0;
XSendByte(0x02);
XSendByte(x);
for(i=0;i<n;i++){
XSendByte(m[i]);
}
SCK=0;
CS=1;
XWipPoll();
return ;
}
#define XResetDog() {CS=0;CS=1;}
void InitX5045(void)
{
bit btmp;
unsigned char mm[x_num];
WP=1;
btmp=EA;
EA=0;
XReady();
XWriteEn();
XReadData(mm,x_addr,x_num);
if (mm[x_mark]!=XMARK){
mm[x_mark]=XMARK;
XReady();
XWriteEn();
XWriteData(mm,x_addr,x_num);
XWriteEn();
XWriteStatus(0x00);
_nop_();
}
else _nop_();
XWriteDis();
EA=btmp;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -