#include"at89x52.h"
sbit SO=P1^6;/*25045输出*/
sbit SI=P1^7;/*25045输入*/
sbit SCK=P1^4;/*25045时钟*/
sbit CS=P1^5;/*25045片选*/
void wr_byte(unsigned char aa)
{
unsigned char my_flag1;
signed char i;
for (i=7;i>=0;i--)
{
my_flag1=aa;
SI=((my_flag1>>i)&0x01);
SCK=0;
SCK=1;
}
}
unsigned char rd_byte(void)
{
unsigned aa,my_flag;
signed char i;
aa=0x00;
for (i=7;i>=0;i--)
{
my_flag=(unsigned char)(SO);
SCK=1;
SCK=0;
aa=(aa|(my_flag<<i));
}
return aa;
}
unsigned char rd_sr(void)
{
unsigned char aa;
CS=0;
wr_byte(0x05);
aa=rd_byte();
CS=1;
return aa;
}
unsigned char pd(void)
{
unsigned char aa;
aa=rd_sr();
if(aa&0x01) return 1;
else return 0;
}
void wr_sr(void)
{
while(pd());
CS=0;
wr_byte(0x06);
CS=1;
CS=0;
wr_byte(0x01);
wr_byte(0x18);//只用下半部(00H-ffH). 600ms
CS=0;
CS=1;
return;
}
unsigned char rd_b(unsigned char d)
{ unsigned char a;
while(pd());
CS=0;
wr_byte(0x03);
wr_byte(d);
a=rd_byte();
CS=1;
return a;
}
void wr_b(unsigned char d,unsigned char a)
{
while(pd());
CS=0;
wr_byte(0x06);
CS=1;
CS=0;
wr_byte(0x02);
wr_byte(d);
wr_byte(a);
CS=0;
CS=1;
return;
}