微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于时钟上升沿有效的问题

关于时钟上升沿有效的问题

时间:10-02 整理:3721RD 点击:
74HC165为并转串输出芯片,资料显示为时钟上升沿有效,会进行串行输出。所以我写了下面的读取函数
                for(i=0;i<8;i++)
                {
                   a=a<<1;   //最终获取的串行数据保存在变量a中
                   SCLK=0;    //SCLK为时钟
                   _nop_();        
                                    //②
                   SCLK=1;       
                   a=a|DATA;  //①         DATA为每次串口输出脚每次输出的电平信号         
                   _nop_();                                         
                }
我这么写,最终输出的数据少了一位。
从网上找资料看到大家都是把上面的①处的那句话写在了②处。问题是不是上升沿有效吗?这样子写的话感觉是在SCLK=1之后进行了第二次for循环的时候才会把DATA的数据第一次给了变量a。这样8次循环之后不也少一位吗?但是实际却是正确的,求大神解答

自己回答一下,刚查到份资料,在装载到寄存器后,其中高位已默认移了过去,第一次可以直接读就OK,剩下的按照时钟脉冲去一位位的读取

自己顶一下吧。

再顶

可以根据数据缺少在第几位来判断一下是什么问题,不太象是上升沿的问题

第一位缺失了,但是按照后面说的那种写法,缺失是没问题,和例成的唯一区别就在这。其他的都一样。想半天也不理解。上升沿的时候DATA允许改变,为啥不在上升沿结束之后给把这个改变赋给变量a呢?

是第一位移位进来的数据,还是最后一位移进来的数据,看跟移位的顺序有没有关系

应该不是移位顺序的关系。

再顶

继续

求大神解答啊

自己接着顶

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top