在编写单片机程序经常会用到延时,做到精确延时的方法有两种:软件延时(采用循环体实现)和硬件延时(定时器/计数器实现)。

补充_nop_()函数

  1. C语言中没有_nop_()函数,该函数是在51单片机中用的延时函数,延时一个指令周期。在单片机c语言中直接调用库函数即可:#include<intrins.h> // 声明了void nop(void);
  2. 编写延时函数的时候,要注意,在调用此函数时,需要一个调用指令,即LCALL指令消耗两个周期(2us),延时函数执行完后要返回主调函数,需要一个返回指令,即RET指令(2us)。
  3. 例如用6MHz的晶振,则如下for循环大约延时1秒。
    int i;
    for(i=0; i<6000000; i++)
    nop(); // 延时一个指令周期,相当于执行一条无意义的语言
  1. 指令周期(机器周期=1指令周期):CPU执行一条指令所需要的时间称为指令周期,它是以机器周期为单位的。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

  2. 振荡周期(时钟周期):一个振荡周期 = 晶振频率的倒数。对于单片机时钟周期,时钟周期是单片机的基本时间单位。两个振荡周期(时钟周期)组成一个状态周期。

  3. 机器周期:单片机的基本操作周期,在一个操作周期内,单片机完成一项基本操作,如取指令、存储器读/写等。

1个机器周期=6个状态周期=12个时钟周期=12个振荡周期。

一个机器周期(即一条单周期指令)被执行所占时间为12*(1/ 晶振频率)= x μs。
12MHZ的晶振:一个机器周期=12*[1/(12*10^6)]秒=1微秒

附上常用延时函数
  1. 11.0592MHz晶振
//延时n毫秒 ms
void delay_ms(usigned int n)
{usigned int i,j;
for(i=n;i>0;i–)
for(y=114;y>0;y–);
}
  1. 12MHz晶振
//延时n毫秒 ms
void delay_ms(unsigned int n)
{unsigned int i=0,j=0;for(i=0;i<n;i++)for(j=0;j<123;j++);
}
//延时n秒 s
void delay_m(unsigned int n)
{unsigned int i=0,j=0;for(i=0;i<n;i++)for(j=0;j<21738;j++);
}
  1. 24MHz晶振
//延时n秒  s
void delay_s(unsigned int n)
{  unsigned int i=0,j=0;  for(i=0;i<n;i++)  for(j=0;j<54053;j++);
}

【蓝桥杯】单片机精确延时——软件延时相关推荐

  1. 蓝桥杯单片机比赛学习:6、中断系统之定时器中断的基本原理

    上节我们讲了中断的外部中断,基本的了解了一下中断,这一节我们继续来学习中断系统的定时器中断基本原理,本节很重要无论是在比赛中还是在单片机.嵌入式等的学习上都有着很重要的地位.如对本作者有兴趣可以去我主 ...

  2. 蓝桥杯单片机第七届省赛-模拟风扇控制系统

    九层妖塔 起于垒土 ● 改编自国信长天蓝桥杯官方蓝皮书例程,按照自己的习惯进行了补充和修改 蓝桥杯单片机第七届省赛-模拟风扇控制系统 Notes1:按键按下后在某些情况下给一定的缓冲时间 Notes2 ...

  3. 蓝桥杯——单片机设计与开发初学者必备资料

    蓝桥杯--单片机设计与开发初学者必备资料 国信长天 大赛官方指定电子类比赛硬件提供方,可能大家只知道他们提供硬件,殊不知还有一些免费的视频讲解(只是老师可能说话带一点方言,嘻嘻),感兴趣的可以去看看, ...

  4. 蓝桥杯单片机第十届省赛题程序实现

    文章目录 main.c iic.c main.c #include<reg52.h> #include<intrins.h> #include<iic.h>sbit ...

  5. 蓝桥杯单片机-DAC-用板载板载PCF8591芯片在D/A引脚上输出指定的电压

    文章目录 题目 main.c iic.c iic.h 题目 1.控制板载PCF8591芯片在D/A引脚上输出指定的电压 2.数码管前三位显示输入数据0-255,后两位显示输出的电压值 3.按下按键S4 ...

  6. 蓝桥杯单片机串口通信学习提升笔记

    今日得以继续蓝桥杯国赛备赛之旅: 有道是 "不知何事萦怀抱,醒也无聊,醉也无聊,梦也何曾到谢桥." 那我们该如何 让这位诗人纳兰 "再听乐府曲 ,畅解相思苦"呢 ...

  7. 蓝桥杯单片机学习13——NE555方波发生器频率测量

    NE555 简介 引脚图 原理图 真值表 工作原理 频率测量原理 定时器测量频率方法 代码实现 总结(一堆废话) 简介 NE555是一种高度稳定的控制器,内部用三个阻值为5KΩ的电阻分压,因此叫做55 ...

  8. 【蓝桥杯单片机(24)】历届单片机客观题及答案解析

    目录 考前冲刺,专栏完结篇 ## 推荐链接: 推荐视频–小蜜蜂老师讲解 赛点资源包下载,提取码:brno 三极管基本知识总结 运算放大电路的基础 第十三届蓝桥杯单片机官方直播课录屏 目录 一些刷题后的 ...

  9. 蓝桥杯单片机组——榨干选手资源包(STC)

    文章目录 前言 巧用STC STC生成定时器 STC配置定时器(定时器中断) 定时器 定时器中断 STC获取数码管码表 STC上升沿下降沿检测 其他 总结 目录 前言 笔者参加的是第十一届蓝桥杯的单片 ...

  10. 电子信息工程专业打工人的蓝桥杯单片机竞赛时记

    文章目录 前言 一.基础入门 1.基础知识 2.51系列单片机 单片机周期知识: 单片机IO口知识 二.开发学习 1.基本外设功能 LED跑马灯 蜂鸣器与继电器 数码管 按键 外部中断 定时器中断 串 ...

最新文章

  1. php 添加工信部链接,常见程序(wordpress,dede,discuz)网页下方添加备案号,添加链接跳转到工信部...
  2. 如何成为一个合格的 Java程序员
  3. get 和post 方式请求数据
  4. 变革后的维密,做了一款不赚钱的内衣
  5. 华为harmonyos公测,华为鸿蒙 Harmony OS 2.0 第二轮公测已开启,赶紧申请报名
  6. 排序算法 —— 冒泡排序
  7. 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
  8. 潭州课堂25班:Ph201805201 django框架 第五课 自定义简单标签,包含标签,模型类创建,梳理类创建 (课堂笔记)...
  9. VB Environ系统环境变量函数大全
  10. 各大公司官网都有哪些显而易见的Bug?
  11. linux内核C -- 第09课:链接过程中的强符号和弱符号
  12. 在相近背景中找圆和直线
  13. smartDNS让你的网络一触即达
  14. 小狼毫输入法配置(搜狗词库+u模式+皮肤+同步)
  15. java实现同步的几种方式(总结)
  16. 医院管理系统服务器,医院管理的十大运行系统!
  17. java反射机制和运用
  18. 什么是 A 轮融资?有 B轮 C轮么?
  19. 在Qt中使用OpenGL(二)
  20. linux下并行运行脚本与让程序可靠运行

热门文章

  1. k8s常见报错解决--持续更新
  2. win10 安装驱动时 哈希值报错解决办法记录
  3. 《视觉SLAM十四讲》笔记——初识SLAM
  4. java实验二_Java实验2
  5. SpringBoot自定义Filter的三种方式
  6. 苏宁大数据怎么运营_苏宁云商:挖掘大数据 只为更懂用户的心
  7. GDB调试之定位段错误
  8. 面试积累(简单的单例模式)
  9. Cloudera Manager搭建集群服务器启动失败
  10. Mac OS X 10.4.7 DMG 文件如何转化成ISO文件