关于时钟上升沿有效的问题
时间: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次循环之后不也少一位吗?但是实际却是正确的,求大神解答
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呢?
是第一位移位进来的数据,还是最后一位移进来的数据,看跟移位的顺序有没有关系
应该不是移位顺序的关系。
再顶
继续
求大神解答啊
自己接着顶