在C51单片机中延时子程序的延时时间是怎么算的?

作者&投稿:官韩 (若有异议请与网页底部的电邮联系)
单片机延时程序的延时时间怎么算的?~

单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期。

扩展资料:
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++);
}
}

51单片机延时时间计算需要考虑以下两种因素:
1、指令执行时间
2、指令循环次数

比如说:
void delay ()
{
int x;
char y;
for(x=1000;x>0;x--)
{ for(y=100;y>0;y--)};

x每减一次,y减100次,x一共减少1000次
这个子程序的延时时间是:
1000*100=100ms(默认时间是us)
如果想更精确的话,可以用软件进行调试
for语句下面的{}还可以省略
有不清的可以多交流

按每一个指令所占有的机器周期。。再根据晶振频率来算。。

C语言不可能精确计算,只能用示波器看。汇编可以精确计算,书上有公式的,随便一个讲单片机的书上都有的。

知道每一步运行的时间,然后计算总共有多少步。一乘就出来了。每步的时间根据晶振不同而不同。

void delay (unsigned int i)
{
unsigned char j;
for(i;i>0;i--)
for(j=500;j>0;j--);
}


怎样在单片机C代码中加入汇编延时子程序?
(1)、C51语言中调用汇编语言程序;C51语言调用汇编语言程序要注意以下几点:1:在文件栏选中File Group和C51程序原文件,在配置文件选项中激活“产生汇编(SRC)文件,“编译(SRC)文件”和“创建工程(目标)时包含”三个选项。2:根据选择的编译模式,把相应的库文件(如SMALL模式,库文件为KEIL\\C51...

单片机 c51编程,求准确的延时函数。
void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=123;y>0;y--);} 要延迟的地方直接写 delay(数据);比如,delay(5);

关于KeilC51单片机延时的问题
for(i=0;i<124;i++){;} 执行一次循环就一个指令吗?看代码的意思就是 for(i=0;i<124;i++){;} 可以延迟1ms,可以根据CPU的主频估计出需要循环的大概次数,再使用示波器测量波形(可以用一个空管脚拉高拉底)来调整循环的次数,使其精确于1ms ...

C51执行延时时怎么执行其他任务
将延时函数改为小延时循环(例如10ms,循环100次,也是接近一秒),中间插入按键检测动作。3.如果你对时间要求相对严格,又不想开中断,推荐你一个土办法,在你写好上述循环函数后,在入口处将一个IO口置高,结束处翻转,用示波器测量该IO,微调你的延迟。根据你自己的需要灵活选择。参考资料:手打 ...

C51单片机,谁帮我写个1ms的延时
void delay(uint i) \/\/调用子程序所需时间){ uchar j,k;for (j=i; j>0; j--)for(k=0;k<30;k++);} 在程序调用函数就可以得到1ms的程序,具体调用如下:delay(10); \/\/延时1.011ms

单片机C51,已知时钟周期为11.0592MHz,用延时做2ms的方波,延时次数i应该...
...和12m晶振一样的.要精确就算定时的时候把12m 用11.0592M带入计算初值.

c编程时,51单片机怎么用定时器写一个延时1ms的子函数
51单片机的定时器工作方式有4中,其中3种需要在中断函数中重装初值,而且C51明确规定中断函数不能传入参数也不能返回参数,那么这样一来就只能用不用重装初值的工作方式2了,我给出了工作方式2的初始化函数:void init(unsigned int x){ TMOD=0x02;TH0=x;TL0=x;EA=1;ET0=1;TR0=1;} 这样将x...

C51单片机 交通灯简单延时20s交换一次;绿灯时间的最后3s,绿灯闪烁3...
include<reg51.h>#define u16 unsigned int#define u8 unsigned charsbit green=P1^0;sbit yellow=P1^1;sbit red=P1^2;u16 js_ms=0;\/\/毫秒计时u8 zt=0; \/\/状态u8 djs1=0;\/\/长亮的时间u8 djs2=0;\/\/闪烁的时间u16 js_shan=0; \/\/闪烁计时code u8 sj[][2]={{17,3},{3,0},...

如何用单片机的delay实现延时?
单片机中的delay()的单位时间不是系统提供的,而是用户自己编制的。如果用循环语句实现的循环,没法计算,但是可以通过软件仿真看到具体时间,但是一般精精确延时是没法用循环语句实现的。如果想精确延时,一般需要用到定时器,延时时间与晶振有关系,单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振...

单片机C51写一个延时50ms的函数例题
适合89C52,11.0592M晶振‘void delayms(uint xms){ uint i,j;for(i=xms;i>0;i--) \/\/i=xms即延时约xms毫秒 for(j=110;j>0;j--);}

宿城区19633925267: 在C51单片机中延时子程序的延时时间是怎么算的?
夷萧通远: 按每一个指令所占有的机器周期..再根据晶振频率来算..

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

宿城区19633925267: C51单片机汇编写延时子程序20分钟的延时怎么写 -
夷萧通远: 用定时中断来实现 50ms定时中断一次,20次就是1 秒. 你会1 秒了,20分钟就会了.再长的时间也能解决.

宿城区19633925267: 单片机中的延时程序的延时时间怎样计算的? -
夷萧通远: 把#号后面的数乘起来,计算后的结果就是延时的时间,单位是US,要花成秒要除以100000

宿城区19633925267: 单片机延时程序的延时时间怎么算的? -
夷萧通远: 单片机的延时程序通过执行指令来达到延时效果,这个时间等于执行的指令需要的时间,而一个指令需要的时间叫做指令周期,这个时间等于若干个机器周期. 扩展资料: 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++); } }

宿城区19633925267: 单片机的延时程序 -
夷萧通远: 去百度文库,查看完整内容>内容来自用户:天成信息单片机延时方法总结 实现延时通常有两种方法:一种是硬件延时,要用到定时器/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循...

宿城区19633925267: 求一个C51单片机上的20秒延时子程序!用汇编语言 -
夷萧通远: 1、软件延时方法:DELAY:MOV R7,#0BFH DL1: MOV R6,#0D1H DL0: MOV R5,#0F9H DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 MOV R5,#02H DJNZ R5,$ RET2、定时器方法: ORG 0000H LJMP START ORG 000BH LJMP Timer0Interrupt ...

宿城区19633925267: 单片机汇编语言:这个延时程序的延时是多长时间? -
夷萧通远: 延时时间=((2 * 81 + 1) * 10 + 5) * (12 / 11059200) 秒

宿城区19633925267: 单片机延时时间程序怎么编程 -
夷萧通远: 举一个例子来说明吧.比如你要编一个延时50毫秒的子程序,那么步骤如下:1、查看一下你的硬件环境,比如晶振大小,CPU型号,不用CPU指令的机器周期是不一样的.2、计算延时需要的机器周期.比如采用12M晶振,CPU采用通用8051,...

宿城区19633925267: C51单片机的延时程序是怎么回事 -
夷萧通远: 给你说个简单的 void delay(int a) { while(a--); } 用上的时候就直接在delay的括号里加时间就行,比如 delay(5000);这是5000微妙.

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