重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
最后,点击编译,生成HEX文件就可以了,这样51单片机延时语句就完成了。
创新互联专业提供大邑服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买大邑服务器托管服务,并享受7*24小时金牌售后服务。
延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。
比如12M晶振for(j=0;j120;j++);大概延时1毫秒,10592M晶振那么for(j=0;j110;j++);延时1毫秒,你这里的for(j=0;j100;j++);延时1毫秒的话,晶振应该是10M,不太常见哟,特别是在单片机方面。
C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。
程序延时本来就是一个大概的数。这个也不是很准的。中间的for循环120次大约是962周期,加上每次循环前后的“准备工作”,再加上函数调用/返回的时间,接近1Ms.实没为993个周期。
C:0x0809 70FC JNZ C:0807;A=0?,2时钟 循环共249次,一个循环共需4个时钟周期,加上第一个赋值语句1周期。
void delay(void){ unsigned int i;for(i=0;i20000;i++); //延迟函数,让程序数数,浪费时间。可以通过改变i的值来改变时间。
51单片机12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。
用的是10592M的,你如果真的需要是12M的,那自己直接修改成12M就可以了。
29940T RET 2 + 29940 + 1 = 29943T 总共是: 29943T。如果是 12MHz,时间就是:29943us。另外,执行这个程序,还需要一条 CALL 指令,应该再加上 2T。--怎么样实现5S的延时?慢慢算呗。
单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12MHz。
延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。
需要延时的时候,在程序中带参数调用DelayMs,参数传递给DelayMs的形式参数“unsigned char t”,t就有了数值。“while(t--);”执行t个循环后退出,t个循环用了若干时间。
关闭延时标志位。} } } ET0=1;} 调用程序:void delay1hour(){ delay_1hour=1;i=100;j=3600;TR0=1;}//在任意你想开始延时一小时的地方加这个函数。在延时期间,单片机还可以干其他指令。
for(a=2;a0;a--)是4微秒,即2*(142*4);for(c=1;c0;c--) // 2微秒, 执行1次,即2*(142*4)=1136微秒;b=125,1000/8=125,再减去其它调用时间,应该b取值不大于125。
51单片机精确延时有两个办法:采用定时器来延时。用汇编语言来编制延时程序。