智能车制作

标题: XS128延时1US [打印本页]

作者: yEs、先生    时间: 2013-1-24 20:33
标题: XS128延时1US
xs128 40M的总线时钟延时1US是不是40个空指令就行了   
void delay1us()
{
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);_asm(nop);
}

这样对不??请大侠们解答下啊  ,谢谢啦

作者: 音之夏萤    时间: 2013-1-24 20:44
不用这样来延时吧,写一个延时子程序嘛,你这太奇葩了
作者: yEs、先生    时间: 2013-1-24 20:49
音之夏萤 发表于 2013-1-24 20:44
不用这样来延时吧,写一个延时子程序嘛,你这太奇葩了

这个我不知道是之前在哪看到的,可是延时1US时间我不知道怎么精确的计算出来啊

作者: qurrer    时间: 2013-1-24 20:59
延时没有精确的
作者: qurrer    时间: 2013-1-24 21:00
想精确的用定时器
作者: yEs、先生    时间: 2013-1-24 21:02
qurrer 发表于 2013-1-24 21:00
想精确的用定时器

如果不用定时器的话,40M时钟延时1ms怎么计算呢

作者: nick-lzd    时间: 2013-1-24 22:12
蓝宙的ccd代码是这样实现软延时的,不过靠不靠谱,就不知道了
作者: 王谦623    时间: 2013-1-25 13:37
yEs、先生 发表于 2013-1-24 20:49
这个我不知道是之前在哪看到的,可是延时1US时间我不知道怎么精确的计算出来啊

拿示波器来标定一下执行所用时间!
作者: yEs、先生    时间: 2013-1-25 15:34
王谦623 发表于 2013-1-25 13:37
拿示波器来标定一下执行所用时间!

怎么用示波器标定呢??我没弄过,不好意思

作者: lionel88cn    时间: 2013-1-25 19:29
总线时钟跟CPU时钟一样吗?我记得好像有个倍频关系吧?

作者: 王谦623    时间: 2013-1-26 13:31
yEs、先生 发表于 2013-1-25 15:34
怎么用示波器标定呢??我没弄过,不好意思

在程序的开头拉高IO口电平,在程序结束的地方拉低电平,用示波器观测这个口的翻转情况,而后用示波器上的cursor键进行标定,进而时间便被测定出来了!
作者: yEs、先生    时间: 2013-1-26 18:07
王谦623 发表于 2013-1-26 13:31
在程序的开头拉高IO口电平,在程序结束的地方拉低电平,用示波器观测这个口的翻转情况,而后用示波器上的 ...

好办法啊,,谢谢啦

作者: 王谦623    时间: 2013-1-27 13:25
yEs、先生 发表于 2013-1-26 18:07
好办法啊,,谢谢啦

加油!
作者: yEs、先生    时间: 2013-1-28 13:25
lionel88cn 发表于 2013-1-25 19:29
总线时钟跟CPU时钟一样吗?我记得好像有个倍频关系吧?

震荡周期跟机器周期之间好像有个倍率关系。。但是总线周期有没有倍率的关系我就不知道了。。貌似是没有的

作者: Dwe    时间: 2013-1-31 20:54
王谦623 发表于 2013-1-26 13:31
在程序的开头拉高IO口电平,在程序结束的地方拉低电平,用示波器观测这个口的翻转情况,而后用示波器上的 ...

thanks,
作者: glacier0    时间: 2013-2-1 18:05
延时很难精确,需要不断的调试
作者: 2601819196    时间: 2013-2-1 18:33
void delay1ms(unsigned int n)
{
    unsigned int i;
    for(i=0;i<n;i++)
    {
        TFLG1_C1F = 1;              
        TC1 = TCNT + 250;            
        while(TFLG1_C1F == 0);    //一毫秒精确延时,ECT时钟频率0.25MHZ
    }
}
作者: ludlee    时间: 2013-2-2 08:25
17﹟pit 不错
作者: yEs、先生    时间: 2013-2-2 17:25
ludlee 发表于 2013-2-2 08:25
17﹟pit 不错

我就是不想用定时器的,这样就得有的浪费资源

作者: 不吃萝卜的兔子    时间: 2013-2-3 10:32
缺乏51基础。。。
作者: yEs、先生    时间: 2013-2-3 10:54
不吃萝卜的兔子 发表于 2013-2-3 10:32
缺乏51基础。。。

晕死。。KILL可以通过仿真直接算出1MS的延时,请问CodeWarror怎么实现??你51基础好的话那你跟我说下延时1ms怎么计算??谢谢
作者: 不吃萝卜的兔子    时间: 2013-2-3 19:40
yEs、先生 发表于 2013-2-3 10:54
晕死。。KILL可以通过仿真直接算出1MS的延时,请问CodeWarror怎么实现??你51基础好的话那你跟我说下延时 ...

没用过KILL

作者: yEs、先生    时间: 2013-2-3 21:25
不吃萝卜的兔子 发表于 2013-2-3 19:40
没用过KILL

keil 打错了
作者: 王谦623    时间: 2013-3-3 17:32

作者: 遗落の行者    时间: 2013-10-20 09:53
yEs、先生 发表于 2013-1-24 20:49
这个我不知道是之前在哪看到的,可是延时1US时间我不知道怎么精确的计算出来啊

是不是里面写 36个_asm(nop)就行了





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2