单片机的C语言关于延时函数主要有两种
创新互联公司成都企业网站建设服务,提供成都网站设计、网站制作、外贸营销网站建设网站开发,网站定制,建网站,网站搭建,网站设计,成都响应式网站建设公司,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18982081108
一种是用for循环,通过单片机执行空指令达到延时的目的
如:
for(i=0;i100;i++)
{
;
}
这个简单的语句会执行100次空指令
每一次指令的时间可以大概确定
因此这个是最简单的延时函数
第二种是通过定时器的方式来实现
定时器是通过对单片机的晶振进行计数
然后在定时器中断服务函数里面实现定时时间的计算及设置
51单片机的定时器0中断服务函数为
void
time0()
interrupt
1
{
...
}
C语言的延迟函数一般是利用无意义程序运行来控制时间从而达到延时的目的
举个例子:
for(i=0;ix;i++)
for(j=0;j120;j++);
这是延时x毫秒的for循环语句。
值得注意的是记得最后的;一定得记得写。
延时函数(延时子程序)是主程序正常运行时执行的,
---主程序运行的时间即是延时函数的延时时间。
定时器中断是在主程序中插入的事件,是在主程序的某个时间点,跳出主程序去执行定时器中断要做的事情。
所以如果一个延时子程序不停地被中断(包括定时器中断或者其他中断)打断,
就没有时间完成自身运行一次所需的那些语句。
等到它自身运行完一次,可能原定延时时间的很多倍已经过去了。
所谓中断,就是可以打断正常运行的程序,这个程序也可以是正在运行的延时程序,除非程序中主动禁止
定时器中断
,总会到时响应中断,即打断正在运行的程序,去调用
中断服务程序
,结束中断服务程序后,再在断点
恢复现场
继续运行,就好像没有调用过中断服务程序一样。由于中断服务程序打断了delay,因此delay程序实际上延时是原先没有中断程序时多延时
一点时间
(因为延时期间被中断插入执行了若干次服务程序,增加了
运行时间
)