机器人魅力
获得 33 次赞
帮助过125人
这几天参看了两家公司的CMOS手册,对于自动白平衡都有一定的算法,但对于英文手册读的不是太懂,想请教那位了解的帮忙解释下自动白平衡的原理?
void Delay10ms(void) //误差 0us{ unsigned char abc; for(c=1;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--);}计算分析:程序共有三层循环一层循环n:R5*2 = 130*2 = 260us DJNZ 2us 这里130*2是干啥? 后面DJNZ啥意思?二层循环m:R6*(n+3) = 38*263 = 9994us DJNZ 2us + R5赋值 1us = 3us 这里(n+3)啥意思?DJINZ后面的什么意思?三层循环: R7*(m+3) = 1*9997 = 9997us DJNZ 2us + R6赋值 1us = 3us 循环外: 5us 子程序调用 2us + 子程序返回 2us + R7赋值 1us = 5us 这里面的都是干啥的?延时总时间 = 三层循环 + 循环外 = 9997+5 = 10002us =10.002ms计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5//误差 2us
大侠们,在使用51单片时候,使用的12M的晶振,使用延时函数void delay(int i){ while(i--);}这个函数实例中当i=1时提示延时大概为10μs。使用定时器:void Timer0Init(){ TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。 TH0=0XFC; //给定时器赋初值,定时1ms TL0=0X18; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 }其中实际上定时为1ms。定时器可以理解,但上面的延时函数说i=1时延时10us,对么?一个指令周期不是1us么?延时函数有几个指令周期?
在中断学习中遇到这么一段:void Timer0() interrupt 1 { static u16 i; TH0=0XFC; //给定时器赋初值,定时1ms TL0=0X18; i++; if(i==1000) { i=0; Second ++; } } 想知道这个static定义的i有什么特别的用途??能不能不定以为静态变量?