请教一下,关于读工作时序图的编程问题

2019-07-16 05:18发布



这是原图,拍的不是很好,请谅解。

书上分别用了汇编和C语言来写启动/读取程序,但是其中的时序却不一样,我被混淆了,望高人指点下
汇编:
AD_CONV:
        SETB CS
        CLR CLK
        NOP
        NOP
        CLR CS
        NOP
        NOP
        SETB CLK
        NOP
        NOP
        CLR CLK  //片选信号有效,启动ADC0831
        NOP
        NOP
        SETB CLK
        NOP
        NOP
        CLR CLK         //开始转换
        NOP
        NOP
        SETB CLK
        NOP
        MOV R0,#08H
        CLR CLK          //下降沿,串行数据移出一位
        MOV C,DO  // 读取

C语言:uchar i;
        uchar DATA;
        CLK=0;
        CS=0;
        _nop_();
        CLK=1;
        _nop_();
        CLK=0;
        _nop_();
        CLK=1;
        _nop_();
        CLK=0;
        _nop_();
        for(i=8;i>0;i--)
                {
                         DATA<<=1;
                        if(DO)
                        DATA++;
                        CLK=1;
                        _nop_();
                        CLK=0;
                        _nop_();
                }
        CS=1;
        CLK=0;
        for(i=40;i>0;i--)
                {
                                        _nop_();
                }
        return(DATA);

这两段程序里,汇编的是片选信号确认后,经过2个时钟脉冲再读取数据的,而C语言却是片选信号确认后,经过1个时钟脉冲后读取数据,对时序图还很不了解,恳请指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。