⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 for循环精确定时计算(2).cpp

📁 单片机延时计算程序源代码
💻 CPP
字号:
#include<stdio.h>

void main(void)
{
	int k,wck;
    long int i,j;
    long int n,n1;
    long int tempx,tempy;
    while(1)
    {
        printf("-------------------------------------------------------------------------------\n");
		printf("☆请输入☆\n两层循环最大延时为:130 820us\t最小延时为:10us\t最小步进为:2us\n");
		printf("-------------------------------------------------------------------------------\n");
yanshi:	printf("--------------------------------\n");
        printf("延迟时间us(单位:微秒):");
		scanf("%ld",&n);
		if(n>130820||n<10)
		{
			printf("\n输入错误!超出延迟时间范围...\a\n");
            goto yanshi;
		}
wucha:	printf("允许误差us(单位:微秒):");
		scanf("%d",&k);
		printf("--------------------------------\n");
        if(k>50)
		   {
			     printf("\n呵呵~大哥,这误差也未免太大了吧!呵呵,是不是不相信我的计算能力啊!\a\n");
			     goto wucha;
            }   	
         printf("Calculating....\n");
            for(j=1;j<256;j++)
                for(i=1;i<256;i++)
                    for(wck=1;wck<=k+1;wck++)
				        {
                            if((long int)(((2*i+3)*j+5)/wck)==(long int)(n/wck))
					           {
						          tempx=j;tempy=i;//最内
                                  n1=((2*tempy+3)*tempx+5);			
				                  printf("i=%ld\tj=%ld\tDelay_Time=%ld\n",tempx,tempy,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;\n");
		printf("    for(i=%d;i>0;i--)\n",tempx);
		printf("    for(j=%d;j>0;j--);\n",tempy);
		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位固定值,故不能接受参数
{
	unsigned char i,j;
	for(i=x;i>0;i--)
	for(j=y;j>0;j--);
}
【Delay_Time=[(2y+3)x+5】

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -