这是原图,拍的不是很好,请谅解。
书上分别用了汇编和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个时钟脉冲后读取数据,对时序图还很不了解,恳请指点
一周热门 更多>