51单片机74165并转串芯片编程中的疑问
时间:10-02
整理:3721RD
点击:
小弟新人,以前没玩过单片机,最近买了个开发板自学,看到讲并转串74H165C编程时有点疑问。
它教程中的读取串口数据的语句如下:
//它的程序中SCK连接74165芯片时钟管脚,定义了个字符型indata存放读取的数值;IN_Data为连接芯片输出端的管脚;其时序图不知道怎么贴。
for(i=0; i<8; i++)
{
indata = indata<<1; //<<左移一位,空出的地方补0.
SCK = 0; //时钟置0
_nop_();
indata |= IN_Data;//我很疑惑为什么这里要在时钟置1前或等于?不是应该时钟置1,才能发生跳变吗?
然后芯片才有移位数据输出吗?然后我把这个句子移到SCK=1后,读取的数值少了一位,怎么也想不明白,求前辈们指点。
SCK = 1; //时钟置1
}
它教程中的读取串口数据的语句如下:
//它的程序中SCK连接74165芯片时钟管脚,定义了个字符型indata存放读取的数值;IN_Data为连接芯片输出端的管脚;其时序图不知道怎么贴。
for(i=0; i<8; i++)
{
indata = indata<<1; //<<左移一位,空出的地方补0.
SCK = 0; //时钟置0
_nop_();
indata |= IN_Data;//我很疑惑为什么这里要在时钟置1前或等于?不是应该时钟置1,才能发生跳变吗?
然后芯片才有移位数据输出吗?然后我把这个句子移到SCK=1后,读取的数值少了一位,怎么也想不明白,求前辈们指点。
SCK = 1; //时钟置1
}
都没人理吗?
我也有同样的疑问,遇到了同样的问题。题主你解决了吗?如果解决了的话,可以指导下我吗?留下邮箱a998229239@126.com 谢谢
问题找到了吗
我也是个新手。我个人理解是:传输8个数据需要8个clock;如果把indata |= IN_Data放在SCK = 1之前,就是第一个clock就会传输1个数据,8个clock传输8个数据;当indata |= IN_Data放在SCK = 1之后,也就是第一个clock到第二个clock之间传输1个数据;这样就会导致8个clock只传输了7个数据。