c语言的单片机delay延时函数详解

您所在的位置:网站首页 vue3render函数如何使用指令 c语言的单片机delay延时函数详解

c语言的单片机delay延时函数详解

2023-08-06 08:57| 来源: 网络整理| 查看: 265

c语言及单片机delay延时函数 环境 延时函数一、是什么二、为什么三、用在哪里?四、怎么做1、循环延时2、定时器延时

环境

开发环境:NY-IDE 单片机 :NY8B062D

延时函数

延时函数,作为一种常用函数,在不同的领域有不同的用处。而在嵌入式以及C语言的编写中,我们常常遇到需要自己来编写延时函数的情况,这种情况之下,了解其原理就显得必要。

一、是什么

简单来说,延时函数的目的就在于等,实际上就是要等一段时间再来执行接下来的代码。而这种简单的等,又可以采用多种方法来实现。例如:

名称描述循环采用for或者while循环,让计算机跑无用的代码,从而达到延时的目的定时器通过定时器的计时功能,来达到延时的目的系统调用该功能其实还是通过以上的两种方式来实现,当时这种功能出现在有系统的程序里面,执行系统延时的情况下,单片机可以去执行别的函数,直到系统时间到,从而回来接着执行该代码,这实际上也提高了效率 二、为什么

为什么要延时? 我们有时候要等,但是又不能等太久。这就是延时函数的作用。简单来说,就是和上课铃一样,上课要上45分钟,我们就要延时。

三、用在哪里? 按键、io防抖动计时任务调度 四、怎么做 1、循环延时

首先我认为,要搞懂的东西就是几个周期的区别,这一篇文章有明确的介绍 链接: 关于时钟,指令,机器周期的详解

搞懂了周期的概念之后,来看看函数,这就是一个典型的例子

//延时函数 void delay(int count) { int i; for(i=1;i //;Initial Timer1 TMRH = 0; TMR1 = 0xFF; // Load 0xFF to TMR1 (Initial Timer1 register) T1CR1 = C_TMR1_Reload | C_TMR1_En; // Enable Timer1, Initial value reloaded from TMR1, Non-stop mode T1CR2 = C_TMR1_ClkSrc_Inst | C_PS1_Div256; // Enable Prescaler1, Prescaler1 dividing rate = 1:256, Timer1 clock source is instruction clock //;Setting Interrupt Enable Register INTE = C_INT_TMR1; // Enable Timer1 ENI(); // Enable all unmasked interrupts } 中断中设置事件 /**************************************************************************** * 函数名 : __interrupt() * 功 能 : 中断函数 * 输 入 : * 全局变量 : * 输 出 : *****************************************************************************/ void _isr(void) __interrupt(0) { static unsigned int timer_count = 0;//作计数使用 /*timer1 中断函数*/ if(INTFbits.T0IF) { if(timer_count delay_10s = 1; //延时十秒成功 timer_count=0; } INTF= (unsigned char)~(C_INT_TMR0); // Clear T0IF } } 最后在while里面处理 while(1) { if(delay_10s == 1) { /*这里就表示我们延时十秒成功了*/ } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3