单片机延时计算程序源代码
源代码在线查看: for循环精确定时计算.cpp
#include
void main(void)
{
int k,wck;
long int i,j,l;
long int n,n1;
long int tempx,tempy,tempz;
while(1)
{
printf("-------------------------------------------------------------------------------\n");
printf("☆请输入☆\n三层循环最大延时为:33 358 595us\t最小延时为:13us\t最小步进为:3us\n");
printf("-------------------------------------------------------------------------------\n");
yanshi: printf("--------------------------------\n");
printf("延迟时间us(单位:微秒):");
scanf("%ld",&n);
if(n>33358595||n {
printf("\n输入错误!超出延迟时间范围...\a\n");
goto yanshi;
}
wucha: printf("允许误差us(单位:微秒):");
scanf("%d",&k);
printf("--------------------------------\n");
if(k>5)
{
printf("\n呵呵~大哥,这误差也未免太大了吧!呵呵,是不是不相信我的计算能力啊!\a\n");
goto wucha;
}
printf("Calculating....\n");
for(l=1;l for(j=1;j for(i=1;i for(wck=1;wck {
if((long int)((((2*i+3)*j+3)*l+5)/wck)==(long int)(n/wck))
{
tempx=l;tempy=j;tempz=i;//最内
n1=(((2*tempz+3)*tempy+3)*tempx+5);
printf("i=%ld\tj=%ld\tk=%ld\tDelay_Time=%ld\n",tempx,tempy,tempz,n1);
}
}
printf("\n【C51代码:】\n");
printf("--------------------------------------------------------------\n");
printf("//延时%ld%+dus 函数定义\n",n,(n1-n));
printf("void delay%ldms(void)\n",(n/1000));
printf("{\n");
printf(" unsigned char i,j,k;\n");
printf(" for(i=%d;i>0;i--)\n",tempx);
printf(" for(j=%d;j>0;j--)\n",tempy);
printf(" for(k=%d;k>0;k--);\n",tempz);
printf("}");
printf("\n--------------------------------------------------------------\n");
printf("使用技巧:\n");
printf("①Alt+空格→E→K 用鼠标选择代码(背景为白色);\n②Alt+空格→E→Y OK!复制完成.(化繁为简,祝你马到成功!)\n");
printf("③如果要退出,方法很多:◆Alt+空格→C\t◆鼠标双击左上角\t◆鼠标单击右上角\n");
}
}
/*
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
★最后,实验总结:
【C51代码:】
▲程序代码:
void delay__ms(void) //x,y,z位固定值,故不能接受参数
{
unsigned char i,j,k;
for(i=x;i>0;i--)
for(j=y;j>0;j--)
for(k=z;k>0;k--);
}
【Delay_Time=[(2z+3)*y+3]*x+5】
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
*/