单片机 延时函数-延时函数时间计算问题

问题描述

延时函数时间计算问题

void delay_n_ms(uchar num)
{
uchar time;
while(num)
{
time = 250; // fosc = 11.0592MHz CLK_DIV = 0;
while(time) time --;
num --;
}
}

这个函数的周期是1ms吗?为什么?求大神详解!

解决方案

你用这种循环是得不到精确的延时时间的,要想得到精确的1ms还的配置定时器来定时。
另外,你的这个函数周期是不是1ms我没有算,但是这是和你单片机的指令运行周期有关,即对于一个while指令,其指令周期并不是1,而是和单片机本身有关的。
如果你想做一个大致的延时函数,去查一下while指令在单片机中的指令周期,然后再计算一下。

解决方案二:

Keil MDK查看延时函数延时时间

解决方案三:

你用这种循环是得不到精确的延时时间的,要想得到精确的1ms还的配置定时器来定时。
另外,你的这个函数周期是不是1ms我没有算,但是这是和你单片机的指令运行周期有关,即对于一个while指令,其指令周期并不是1,而是和单片机本身有关的。

时间: 2024-10-19 00:44:59

单片机 延时函数-延时函数时间计算问题的相关文章

Linux时间时区、常用时间函数、整形时间计算思路详解

Linux时间时区详解与常用时间函数 时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间. Ø  UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计算的. Ø  UTC时间与本地时间 UTC + 时区差 = 本地时间 时区差东为正,西为负.在此,把东八区时区差记为 +0800 UTC + (+0800) = 本地(北京)时间 Ø  UTC与Unix时间戳 在计算机中看到的UTC时间都是从(1970年01月0

《51单片机应用开发从入门到精通》——2.4 延时时间计算实例

2.4 延时时间计算实例 51单片机应用开发从入门到精通 在单片机的实时控制系统中,常常需要用到延时操作,所以,延时子程序往往是编写单片机程序中不可缺少的一部分.延时方法有硬件延时和软件延时,硬件延时将在后面有关章节中介绍,本节将介绍软件延时方法. 所谓软件延时,就是让计算机重复执行一些无具体任务的程序,利用执行程序的时间来达到延时的目的. 2.4.1 机器周期和指令周期 单片机读.写操作都需要消耗一定的时间,机器周期是指单片机完成一个基本操作所用的时间,如读操作.写操作等.当石英晶体为12MH

freertos-在FreeRTOS下开发软件,想延时1ms里面的延时delay的函数是怎么用?

问题描述 在FreeRTOS下开发软件,想延时1ms里面的延时delay的函数是怎么用? 求高人解答,在FreeRTOS下开发软件,想延时1ms里面的延时delay的函数是怎么用? 解决方案 参考:http://blog.chinaunix.net/uid-20564848-id-72931.html

关于8051在IAR中延时程序的时长计算

问题描述 关于8051在IAR中延时程序的时长计算 小生初涉单片机,误打误撞认识了CSDN,怎么感觉好像运气不错哟,哈哈! 今天纠结在延时程序的编写,想知道如何根据主时钟频率按需编写一定时长的延时程序,特请各位同学老师指点一二,么么哒!谢谢啦!!! 主时钟频率32MHz,为何下面这个程序延时1秒呢,如何计算出来1070这个关键数字? void DelayMS(uint msec) { uint i,j; uint msec=1000; for (i=0; i<msec; i++) for (j=

《迷人的8051单片机》----3.3 函数

3.3 函数 将解决某一问题的算法汇集起来,组成一个相对独立的函数,在需要时就可以调用这个函数来处理相应的问题,可以说,C程序的全部工作都是由多个不同的函数来完成的.函数可以根据需要自行定义,这一类函数我们称其为自定义函数.另外,为了简化代码编写的难度,通常C编译器还会将一些相对固定的功能事先编写成函数,以库的形式存储起来,这一类函数称为库函数. 3.3.1 自定义函数 这一类函数是用户根据需要自行定义的函数,须先定义后使用.自定义函数的形式如下: 类型标识符 函数名(形式参数列表) { 声明部

MySql中DATEDIFF函数和TIMESTAMPDIFF时间函数

在 MySql中对于时间处理方式比较多,不过最近在用到 DATEDIFF 函数 和 TIMESTAMPDIFF 时间 函数的时候发现了点以前没注意的地方: 不多说了 看例子 : SELECT DATEDIFF('2012-12-12','2012-12-15'); (或者时间格式不一致可以处理下在调用函数 SELECT DATEDIFF(DATE_FORMAT('2012-12-12 11:10:02','%Y-%m-%d'),'2012-12-15');) 运行结果: -3 得出结论: DAT

php使用gettimeofday函数返回当前时间并存放在关联数组里

 这篇文章主要介绍了php使用gettimeofday函数返回当前时间并存放在关联数组里的方法,涉及php中gettimeofday函数的使用技巧,需要的朋友可以参考下     本文实例讲述了php使用gettimeofday函数返回当前时间并存放在关联数组里的方法.分享给大家供大家参考.具体分析如下: 英文官方描述如下: Key Description sec Seconds since midnight before January 1, 1970 usec Microseconds sin

javascript时区函数介绍_时间日期

js的时区函数: 设datename为创建的一个Date对象 ==================== datename.getTimezoneOffset() --取得当地时间和GMT时间(格林威治时间)的差值,返回值以分钟为单位 ==================== 举例:根据本地时间获得GMT时间和任意时区的时间 d=new Date(); //创建一个Date对象 localTime = d.getTime(); localOffset=d.getTimezoneOffset()*6

[LeetCode] Exclusive Time of Functions 函数的独家时间

Given the running logs of n functions that are executed in a nonpreemptive single threaded CPU, find the exclusive time of these functions. Each function has a unique id, start from 0 to n-1. A function may be called recursively or by another functio