单片机c51中 延时的次数怎么计算啊? 急!!!!!!

作者&投稿:爱军 (若有异议请与网页底部的电邮联系)
单片机C51延时时间怎样计算?~

C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的单片机 为例,晶振为12MHz即一个机器周期为1us。一. 500ms延时子程序程序: void delay500ms(void){unsigned char i,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}计算分析:程序共有三层循环一层循环n:R5*2 = 81*2 = 162us DJNZ 2us二层循环m:R6*(n+3) = 202*165 = 33330us DJNZ 2us + R5赋值 1us = 3us三层循环: R7*(m+3) = 15*33333 = 499995us DJNZ 2us + R6赋值 1us = 3us循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5二. 200ms延时子程序程序:void delay200ms(void){unsigned char i,j,k;for(i=5;i>0;i--)for(j=132;j>0;j--)for(k=150;k>0;k--);}三. 10ms延时子程序程序:void delay10ms(void){unsigned char i,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);}四. 1s延时子程序程序:void delay1s(void){unsigned char h,i,j,k;for(h=5;h>0;h--)

软件延时都是不精确延时,精确延时需要用到定时器中断。软件延时的计算可以反汇编,汇编指令有对应的执行机器周期,机器周期=时钟周期*12,时钟周期就是晶振频率的倒数。

这些都可以通过“单片机小精灵”这个软件实现,本来就不是精确延时,没必要深究,而且不同的51单片机运行速度不一样,延时的时间也不一样。

一条指令执行的时间乘以你所设置的跳转数,就是延时的时间。希望对你有帮助。

写个例子吧:
void delay(){
unsigned int j,k;
for(j=200;j>0;j--)
for(k=500;k>0;k--);
}

程序中j=200 k=500 , j每减一次,k减500次, 算出来一共要减200*500=100000次,此程序才跳出来!


郴州市13186964452: 单片机c51中 延时的次数怎么计算啊? 急!!!!!! -
须玉如乐: 一条指令执行的时间乘以你所设置的跳转数,就是延时的时间.希望对你有帮助.

郴州市13186964452: 单片机C51延时时间怎样计算? -
须玉如乐: 去百度文库,查看完整内容>内容来自用户:云海寻峰C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量.以某晶振为12MHz...

郴州市13186964452: 单片机延时计算方法?
须玉如乐: 以C51为例,12MHZ晶振的话,1个时钟周期为1/12微秒,1个机器周期=12个时钟周期,定时器每个机器周期可延时12*1/12微秒=1微秒.如果晶振为8MHZ的话,定时器每个机器周期可延时12*1/8微秒=1.5微秒

郴州市13186964452: 在C51单片机中延时子程序的延时时间是怎么算的?
须玉如乐: 按每一个指令所占有的机器周期..再根据晶振频率来算..

郴州市13186964452: C51单片机延时问题,使用delay函数这个延时时间是如何计算?
须玉如乐: 1.你可以通过keil仿真,多试几次找出这个值.仿真可以看时间.2.还可以把程序下到板子上,比如运行1分钟.通过多次试验,也能找出这个值.3.也可以理论计算,51有机器周期、指令周期,考虑晶振,看一个for要多少指令,最后也能算出来.不同单片机不一样,有的没有机器周期,有的指令周期也不一样,晶振也不一样.推荐前两种方法.

郴州市13186964452: C51单片机的延时是怎么计算的?l -
须玉如乐: C语言软延时一般用于不要求准确延时的场合,准确计算比较困难,不象汇编语言有公式,一般用软件仿真试验的方法获得,不准确时可以按比例调a和 b的值,但并不完全成正比,如果说要求精确定时,还需定时器

郴州市13186964452: 单片机延时程序的延时时间怎么算的? -
须玉如乐: 单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期. 扩展资料: 1丶指令周期,是每种运算需要的时间,如加法、逻辑等,是每一步进行这种指令运算需要的时间,是机器周期的整数倍,这种周期不定. 2丶51单片机12M晶振,晶振周期1/12微妙,一个机器周期包含12个晶振周期,所以12M晶振时机器周期=12x(1/12)微妙=1微妙. 3丶1个毫秒延时子程序如下: void delay1ms(uint ms) { uint i,j; for(i=0;i<ms;i++) { for(j=0;j<110;j++); } }

郴州市13186964452: C51单片机延时函数的计算 -
须玉如乐: 软件延时都是不精确延时,精确延时需要用到定时器中断.软件延时的计算可以反汇编,汇编指令有对应的执行机器周期,机器周期=时钟周期*12,时钟周期就是晶振频率的倒数.这些都可以通过“单片机小精灵”这个软件实现,本来就不是精确延时,没必要深究,而且不同的51单片机运行速度不一样,延时的时间也不一样.

郴州市13186964452: 51单片机延时程序时间是怎么计算的 -
须玉如乐: 51单片机延时时间计算需要考虑以下两种因素:1、指令执行时间2、指令循环次数

郴州市13186964452: 单片机中的延时程序的延时时间怎样计算的? -
须玉如乐: 把#号后面的数乘起来,计算后的结果就是延时的时间,单位是US,要花成秒要除以100000

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网