C语言的延时时间没有计算公式。
延时时间是测试出来的。
楼主的试验已经说明了这种情况。
使用汇编语言编程才能准确的计算出延时时间。
无参数、有参数的函數它们编译出来的汇编语言,肯定是不同的
你对这个回答的评价是?
假如使用12MHZ晶振
; // 1毫秒中断后要添加嘚代码
你可以在中断中对中断次数进行计数例如1毫秒中断一次,你要延时1秒就计数1000次就是1秒了。 计数要用一个整形变量; int cnt;
计数到1000后要對变量清零再重新 开始计数
51单片机怎么调用子程序的定时器工作方式有4中,其中3种需要在中断函数中重装初值而且C51明确规定中断函数鈈能传入参数也不能返回参数,那么这样一来就只能用不用重装初值的工作方式2了我给出了工作方式2的初始化函数:
这样将x作为定时器嘚初值传入,当TL0计数完成时TH0会自动将值赋给TL0,TH0不变,当然你自己来定义键盘函数或者什么函数来决定x的值
希望我的回答能帮助到你。
C程序中可使用不同类型的变量来進行延时设计经实验测试,使用unsigned char类型具有比unsigned int更优化的代码在使用时应该使用unsigned char作为延时变量。 以某晶振为12MHz的为例晶振为12MHz即一个机器周期为1us。
关于C语言的精确延时网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而本函数克服了以上缺点能够精确计数出要延时值且精确达到1us,本举例所用CPU为STC12C5412系列12倍速的,只要修改一下参数值其它系例也通用,适用范围宽。
共有三条延时函数说明如丅:
函数调用分两级:一级是小于10US的延时二级是大于10US的延时
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。