伟的博客 研发工程师

51单片机的精确延时程序一

2014-04-22
c

51单片机的精确延时程序一 (2011-11-30 14:01:00)te style=”font-style: normal; line-height: 23px; padding: 0px 20px 0px 32px; height: 23px; min-width: 1px; overflow-x: visible; width: 34px; display: inline-block !important; background- -28px; background-repeat: no-repeat no-repeat;” >转载▼te>标签: 杂谈分类: C51单片机51单片机的精确延时程序分析(C语言和汇编语言程序)一、C51程序在晶振为11.0592的情况下,如下程序能实现ms级的比较精确的延时:1 void Delayms(unsigned int n)2 {3 unsigned int i,j;4 for(j=n;j>0;j–)5 for(i=112;i>0;i–);6 }用keil可以看出这个延时的时间,我们先延时1ms,即Delayms(1)。进入Delayms前,sec=0.00042209s
延时后,sec=0.00142253s 可以知道Delayms(1)实际延时0.00142253s—0.00042209s=0.00100044s≈1ms同样如果想延时15ms的话,用Delayms(15),实际延时0.01480903s≈15ms,延时还是挺精确的。 以下程序精度有待调试:#include #include sbit P20=P2^0; void delay1s(void) { unsigned char h,i,j,k; for(h=5;h>0;h--) for(i=4;i>0;i--) for(j=116;j>0;j--) for(k=214;k>0;k--); } void main(void) { while(1) { P20=!P20; delay1s(); } }


Comments