
void delay1ms(unsigned int i) { unsigned char j; while(i--) { for(j=0;j<115;j++) //1ms 5
2个回答
展开全部
和你说下for循环还现实延时的原理吧
对于一个空循环for(i = 0; i < n; i++);该如何来估算这个最合适的n值,来实现我们需要的延时呢?我们都知道CPU执行的是机器指令,而最接近于机器指令的语言是汇编语言,所以我们可以先把这个空循环简单地写成如下汇编代码后再进行分析:
loop:
mov dx i ;将i置入dx寄存器
inc dx ;将dx寄存器加1
mov i dx ;将dx中的值赋回i
cmp i n ;比较i和n
jl loop ;i小于n时则重复循环
假设这段代码要运行的CPU是P4 2.4Ghz(2.4 * 10的9次方个时钟周期每秒)。现代CPU每个时钟周期可以执行两条以上的代码,那么我们就取平均值两条,于是让(2 400 000 000 * 2)/5=960 000 000(循环/秒),也就是说CPU 1秒钟可以运行这个空循环960 000 000次。
对于一个空循环for(i = 0; i < n; i++);该如何来估算这个最合适的n值,来实现我们需要的延时呢?我们都知道CPU执行的是机器指令,而最接近于机器指令的语言是汇编语言,所以我们可以先把这个空循环简单地写成如下汇编代码后再进行分析:
loop:
mov dx i ;将i置入dx寄存器
inc dx ;将dx寄存器加1
mov i dx ;将dx中的值赋回i
cmp i n ;比较i和n
jl loop ;i小于n时则重复循环
假设这段代码要运行的CPU是P4 2.4Ghz(2.4 * 10的9次方个时钟周期每秒)。现代CPU每个时钟周期可以执行两条以上的代码,那么我们就取平均值两条,于是让(2 400 000 000 * 2)/5=960 000 000(循环/秒),也就是说CPU 1秒钟可以运行这个空循环960 000 000次。
展开全部
这是一个延时函数 你学的是单片机吧? 这个函数是用两个循环实现延时
首先定义了一个 无符号字符 j 大小是0~255 变量 i 应该是定义要延时的毫秒数 i--的意思是先进行运算在-1 while和for 都是循环语句 例如 定义 i =3 那么先循环执行语句 while(3)然后i 变为2 在执行for语句 j从0开始加 每次加1 一直加到115 时间大约为1MS,然后 执行while(2) 一直到i等于0时不执行 即 执行 i=3 i=2 i=1 三次 当i=0是跳出while循环
首先定义了一个 无符号字符 j 大小是0~255 变量 i 应该是定义要延时的毫秒数 i--的意思是先进行运算在-1 while和for 都是循环语句 例如 定义 i =3 那么先循环执行语句 while(3)然后i 变为2 在执行for语句 j从0开始加 每次加1 一直加到115 时间大约为1MS,然后 执行while(2) 一直到i等于0时不执行 即 执行 i=3 i=2 i=1 三次 当i=0是跳出while循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询