打印

求高手赐教,单片机新手,一个有关时序图的问题

[复制链接]
1529|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2287779862|  楼主 | 2012-11-24 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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是不是也忒不好理解了吧
* 求高手赐教一下,本人万分感激
*/

相关帖子

沙发
NE5532| | 2012-11-25 10:17 | 只看该作者
楼主问题没有描述,大家看不懂啊。

使用特权

评论回复
板凳
2287779862|  楼主 | 2012-11-26 16:23 | 只看该作者
C:\Documents and Settings\Administrator\桌面\QQ截图20121124163725.png

使用特权

评论回复
地板
2287779862|  楼主 | 2012-11-26 16:24 | 只看该作者
问题很好理解呀,就是我的时序都是正常的,但是为什么写错数据或者读错数据

使用特权

评论回复
5
2287779862|  楼主 | 2012-11-26 16:36 | 只看该作者
怎么贴图片呀

使用特权

评论回复
6
NE5532| | 2012-11-26 21:42 | 只看该作者
高级回复里面,作为附件上传后插入。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

25

帖子

0

粉丝