延时函数的误差分析,matlab误差分析函数

【延时函数的误差分析,matlab误差分析函数】PLC硬件正常 , 但是设备的延时时间控制是误差 。一个是单片机的晶振频率,一个是定时器的误差,你的延时 函数是基于定时器还是为了什么延时?一个是单片机的晶振频率的误差,一个是定时器的误差,这是主要的,用C语言写这样的函数很容易 , 但是这个函数本身误差比较小估计最多不会超过200毫秒(不算启动延时) 。我想减少误差我得再写一个算法来减少启动时消耗的时间 。

1、stc12c5a60s2单片机,11.0592MHz晶振 。5us和5ms精确 延时 函数哥们,你想多了!11.在MHz晶振下,一个机器指令周期t((1*12)/)1.us,也就是一条空指令也需要1.us,所以5us的延时只能是五个空指令周期 , 误差很大,所以写成delay 。直接在程序里:_ NOP _();_ NOP _();_ NOP _();_ NOP _();_ NOP _();这是延时 5 * 1.us .至于5ms,可以用定时器 , 但是误差更大:void delay _ 5 ms(void){ tmod 0x 01;TH00x12TL00x00TR01while(TF00);TF00TR00}这个函数的执行时间会略长于5ms,略长的部分主要如下:1 。函数的入栈和出栈操作需要几个机器周期 , 这个可以自己算 。

2、keil调试 延时300ms,实际是268.3ms如下图,这是为什么?这 误差是必...怎么回事误差!这是你放delay(300)的时候;,误认为“延时300ms” 。你的延时 函数是基于定时器还是为了什么延时?如果想要准确 , 建议使用计时器 。同时注意使用的晶振频率 。不会,误差可以避免 。使用示波器或逻辑仪器进行调试 。精确计时需要计时器,delay 函数只能是一个大概的估计 。用C语言写这样的函数很容易 。
3、C语言编程中的 延时如果你指的是嵌入式方面,这个延迟是有用的,也是一个不精确定时器的实现方法 。我以一个12M晶振为例告诉你,12M晶振的机器周期是1/12M*12 , 即不同单片机在1us执行语句的机器周期不一定相同(比如Atmel51系列和大部分51s的一个机器周期是12个时钟周期,而华邦只需要4个时钟周期),然而,一般来说,一个for循环需要大约8个机器循环 。在12M晶振下,通常用以下代码实现延时for 1 ms:void delayms(unsigned intms){ unsigned chari;while(ms){ for(i0; 。

    推荐阅读