12MHz 是什么嘛?晶振?频率?
时间和频率是怎么换算的呢<注意频率和时间并不是一个概念哦>?
T = 1/f
1Hz 等同于 1s
12MHz 等同于 1/12 us;
设一个变量T = 0;
每1/12us变化一次,(比如T++);
那么,20s中有多少个 1/12us,则T就需要自动加多少次;
当最后加完最后一个 1/12us的时候,延时计时变量就该溢出了嘛(清零了)
则用个for循环实现我的思路:
unsigned long long T = 0;
for(T = 0;T < (20s/(1/12us);T++))
{}
//处理代码
//计时变量恢复成0
T = 0; //如果你要进行第二轮处理的话。否则就没必要了
说明:for()循环里面的值不可以这么写哈,你得自己计算了;另外,也可以用while()结构;
当然楼上有人介绍用定时器,定时器还是考验了时间和频率之间的隐射关系。呵呵~~
追问是频率的 可以用汇编语言不
追答怎么不可以?
比如:
mov ax,#1000
mov bx,0
F:
sub ax,1
BNP ax,bx
B F
-------
我只给你说了个思路,汇编指令没经常用过,很多都忘了,如果错误了,别见笑!
另外,单片机有定时器中断,用那个最舒服了。