| 
 
金牌会员  
 
	积分1648金钱1648 注册时间2012-8-28在线时间73 小时 | 
 
 发表于 2013-6-11 08:46:24
|
显示全部楼层 
| uchar SPI_RW(uchar byte) <br>{
 <br> uchar i;
 <br> for(i=0;i<8;i++)
 <br> {
 <br>   MOSI=(byte&0x80);  
 <br>   byte=(byte<<1);
 <br>   SCK=1;//由此可见,写数据是在SCK=0时进行,SCK上升沿把数据写进去    
 <br>   byte|=MISO;//由此可见,读数据是在SCK高电平期间进行  
 <br>   SCK=0;  
 <br> }
 <br> return(byte);
 <br>} 
 <br>你可以分析下这个函数的流程:
 <br>byte比如是11100001
 <br>1   byte=(byte<<1)(这里可以知道每次只取高位1,1,1,0,0,0,0,1)
 <br>2   SCK=1; //sck时钟高电平,一般用引脚控制,如用PA2脚控制
 <br>3   byte|=MISO;//由此可见,读数据是在SCK高电平期间进行  
 <br>4   SCK=0;//sck时钟低电平
 <br>流程是1~2~4把byte写给ic     那3~4~2是取出byte的值
 | 
 |