#define CS553X_CS PORTCbits.RC5 // 只选择了一个通道
#define CS553X_DI PORTCbits.RC4 // input
#define CS553X_DO PORTCbits.RC3 // output
#define CS553X_SCLK PORTCbits.RC2 // output
void CS553XWriteCmd( unsigned char cmd )
{
unsigned char i = 0;
unsigned char _cmd = cmd;
// CS553X_CS = 0; //********************************************
CS553X_SCLK = 0;
CS553X_DI = 0;
Delay10TCYx( 1 );
for ( i = 0; i < 8; i++ )
{
// 建立数据
if ( _cmd & 0x80 )
CS553X_DI = 1;
else
CS553X_DI = 0;
_cmd = _cmd << 1;
CS553X_SCLK = 1;
// 数据保持
Delay10TCYx( 1 );
CS553X_SCLK = 0;
}
CS553X_DI = 0;
// CS553X_CS = 1; //********************************************
}
// CS553X write
void CS553XWrite( unsigned char cmd, unsigned long info )
{
unsigned char i = 0;
unsigned char _cmd = cmd;
unsigned long _info = info;
// CS553X_CS = 0; //********************************************
CS553X_SCLK = 0;
CS553X_DI = 0;
Delay10TCYx( 1 );
for ( i = 0; i < 8; i++ )
{
// 数据建立
if( _cmd & 0x80 )
CS553X_DI = 1;
else
CS553X_DI = 0;
_cmd = _cmd << 1;
CS553X_SCLK = 1;
// 数据保持
Delay10TCYx( 1 );
CS553X_SCLK = 0;
}
// info
for ( i = 0; i < 32; i++ )
{
// 数据建立
if( _cmd & 0x80000000 )
CS553X_DI = 1;
else
CS553X_DI = 0;
_info = _info << 1;
CS553X_SCLK = 1;
// 数据保持
Delay10TCYx( 1 );
CS553X_SCLK = 0;
}
CS553X_DI = 0;
// CS553X_CS = 1; //********************************************
}
// CS553X read
unsigned long CS553XRead32( unsigned char cmd )
{
unsigned char _cmd = cmd;
unsigned char i;
unsigned long info = 0x0;
CS553X_CS = 0; //********************************************
CS553X_SCLK = 0;
CS553X_DI = 0;
while ( !(CS553X_DO & 1) ) ;
if ( CS553X_DO == 1 )
{
// Delay10TCYx( 3 );
for ( i = 0; i < 8; i++ )
{
// 数据建立
if( _cmd & 0x80 )
CS553X_DI = 1;
else
CS553X_DI = 0;
_cmd = _cmd << 1;
CS553X_SCLK = 1;
// 数据保持
Delay10TCYx( 1 );
CS553X_SCLK = 0;
}
CS553X_DI = 0;
for ( i = 0; i < 32; i++ )
{
// 数据建立
info = info << 1;
if ( CS553X_DO & 1 )
info = info | 0x1;
//Delay10TCYx( 1 );
CS553X_SCLK = 1;
Delay10TCYx( 1 );
CS553X_SCLK = 0;
}
CS553X_DI = 0;
}
while ( !(CS553X_DO & 0x1) ) ;
CS553X_CS = 1; //********************************************
return info;
}
/* 我都是按照时序图一步一步写的,
* 但是总读数据不正常,不知道是读的问题,还是写的问题
* 先初始化芯片,需要写
* 然后才能读操作
* 貌似好像与时间有关,这个ns是不是也忒不好理解了吧
* 求高手赐教一下,本人万分感激
*/ |