void delay(unsigned int t)    //括号里面的是参数,可以定义在函数前面,这里为了方便就定义在这里{while(t--);           //将t定义为无符号整型,16位,是为了能延时更长时间
}                            //while后的分号可以理解为空语句,让while成为单独的语句

delay的延时原理

让芯片通过循环语句,做无意义的语句,以起到延时的作用。

delay的使用方法

简单来说就是,在主函数里调用写好的延时函数,达到延时的目的。 下面用单片机LED的闪烁实验举例:

#include<reg52.h>sbit led=P2^7;void delay(unsigned int t)
{while(t--);
}void main()
{while(1){led=0;delay(60000);      //调用delay函数,再给参数t赋值led=1;delay(60000);     //无符号整型,数字不能超过2的16次方,不然就会溢出}
}   

还有另一种方法写延时函数,而且所延迟的时间更加精确,使用单片机的烧入程序STC-ISP。

然后输入需要延时的时间,就可以得到相应的子函数了。用这个方法写的延时函数如下方式调用

void main()
{while(1){led=0;delay 100us();     //软件所给出的delay函数 led=1;delay 100us();    }
}   

注:子函数里面有个_nop_,要添加头文件<intrins.h>才不会出错。

时间的计算

相较于软件直接给出的函数,手写的延时函数如何较为准确的计算所延迟的时间?

这里教大家一种较为简单的方法,不用根据晶振大小计算时间。

逐条的运行就可以较为准确的计算t为各值时对应的时间。

萌新上路,制作不易,如有错误还请评论区指正。各位帅气逼人、美若天仙、颜值爆表的看官老爷点个赞吧,求求了。(在线卑微求赞)

简述一下延时函数delay怎么用相关推荐

  1. c语言延时函数delay延时一秒_IMX6UL裸机实现C语言LED实验

    C 语言部分有两个文件 main.c 和 main.h,main.h 里面主要是定义的寄存器地址,在 main.h里面输入代码: #ifndef MAIN_H #define MAIN_H1 /*2 ...

  2. 单片机自定义延时函数Delay取值详解

    我们想实现一个定时延时函数,在单片机里并没有什么sleep,需要我们自己实现. 延时函数跟 晶振频率 有很大的关系,因为晶振频率影响程序执行速度. 1.打开Keil 4 - Target Option ...

  3. c16语言延时函数delay,《linux设备驱动开发详解》笔记——10中断与时钟

    10.1 中断与定时器 中断一般有如下类型: 内部中断和外部中断:内部中断来自CPU,例如软件中断指令.溢出.除0错误等:外部中断有外部设备触发 可屏蔽中断和不可屏蔽中断 向量中断和非向量中断,ARM ...

  4. 延时函数delay与sleep有什么区别呢?

    在VC中使用带上头文件 #include <windows.h> 注意: 在VC中Sleep中的第一个英文字符为大写的"S" 在标准C中是sleep, 不要大写.. 下 ...

  5. c语言不用死等的延时函数,matlab延时函数怎么写

    1. c语言延时函数delay,怎么算延时 下面是delay 函延迟函数里执行的都是空语句,也就是说通过循环执行空语句来达到延迟的目的.每执行一条语句,即使是空语句都要耗费电脑一些处理时间的,就是因为 ...

  6. 递归重入c语言延时函数多任务程序设计中的函数重入问题按照Keil的规范对函数添加关键字“reentrant”,将函数定义为可重入的 void Delay_MS(x) reentrant

    c语言延时函数_子牙篇(2)多任务程序设计中的函数重入问题 weixin_39559333 2020-11-29 09:07:44  39  收藏 文章标签: c语言延时函数 c语言延时函数delay ...

  7. avr-gcc中关于delay延时函数的应用修改版[ourdev]

    在51中我们的延时函数都是自己编写的,无论是在汇编中还是在C言语中.虽然有模板,有时还是有点烦.呵呵.不过在应用avr 单片机的时候我们就有福了.因为avr-gcc 提供给我们很方便的delay 延时 ...

  8. c语言中延时函数delay1,delay什么意思_delay.h这一段是什么意思

    delay中文是什么意思 delay 英[dɪˈleɪ] 美[dɪˈle] n. 耽搁; 延迟,拖延; 被耽搁或推迟的时间; vt. 耽搁; 延期,推迟; vi. 延缓,延期; [例句]For sen ...

  9. void Delay(__IO u32 nCount)最简单的延时函数

    最开始学习单片机的时候,无论是51还是STM32等,都会在流水灯等示例中见到延时函数,刚开始我就弄不明白,我今天认真的剖析一下. 首先是函数体 void Delay(__IO u32 nCount) ...

最新文章

  1. Windows Server入门系列29 Hash加密与SAM数据库
  2. adc0808温度换算公式_温湿度传感器的三种模拟量换算关系
  3. 【HDU】3441 Rotation
  4. 如何屏蔽VS2013中的4996错误!
  5. 004_JSONArray对象公共方法
  6. 电子表单设计,表单打印,表单填写,数据发布,VC++,VB,源代码组件库
  7. explode() 字符串转换数组
  8. bootstarp table
  9. SpringBoot前端Ajax以JSON格式获取后台数据
  10. 使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
  11. excel制作录入和查询系统_Excel进销存管理系统,完整函数应用,出入查询库存更新自动显示...
  12. SpringCloud实战(一)基于nacos实现订单+视频服务的调用
  13. Echart地图的省级,以及所有地市级下载与使用
  14. Django笔记09:一招解决使用regroup模板标签出现的重复分组问题
  15. android光标Cursor
  16. cocos2dx.3.17中用VS2017启动本地windows调试器出现脚本错误解决办法
  17. 文件类型关联的文件图标
  18. Android 收银机Wifi 连接厨房厨单打印机
  19. 计算机内部信号表现形式,信号是数据在传输过程中的什么的表现形式
  20. 学生宿舍管理系统之概念结构设计

热门文章

  1. ssssssssssssssss
  2. bootloader的两种启动模式
  3. 性能监控工具-----ServerAgent
  4. python界面教学视频_tkinter 窗口可视化你的 Python程序GUI教学
  5. 一个轻量级的RGB颜色选择器--jscolor
  6. 基于SSM的企业OA办公系统
  7. springboot 2.x升级后出现Spring Security – There is no PasswordEncoder mapped for the id “null”的解决方案
  8. python根据出生日期计算年龄的源码
  9. Kdevelop安装与使用说明
  10. android程序ping服务器