单片机怎么调用子程序同一个程序,调用两次不同时间延时函数,调试发现时间相同

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的延时

}

我要回帖

更多关于 单片机怎么调用子程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信