延时函数如何延时

延时函数如何延时延时函数如何延时**函数样例编译软件编译后的汇编指令Delay_ms(200);…

大家好,又见面了,我是你们的朋友全栈君。

延时函数如何延时

**函数样例                                                             编译软件编译后的 汇编指令
Delay_ms(200);                                         //     1、 0x0000058C 20C8      MOVS     r0,#0xC8
void Delay_ms(unsigned int time)
{
    unsigned char  n;
   while(time>0)                                               //       3、0x00000210 2800      CMP      r0,#0x00                                                                             
    {
			for(n=0;n<4;++n)                                  //      4、 0x00000204 2100      MOVS     r1,#0x00
			{                                               //   5、 0x00000206 1C49      ADDS     r1,r1,#1
				;                                           //  6、 0x00000208 B2C9      UXTB     r1,r1
				                                            // 7、 0x0000020A 2902      CMP      r1,#0x02
				                                           //    8、 0x0000020C D3FB      BCC      0x00000206
				                                           //    9、 0x0000020E 1E40      SUBS     r0,r0,#1
			}
			time--;                                    //     2、  0x00000202 E005      B        0x00000210
		}
}

所需要了解的信息
1、每一条汇编指令需要占用几个时钟周期,方便计算多少时间
2、时钟周期为1M时,其倒数为时间1us

文字解释

程序进入Delay_ms(200)延时函数后,其对应汇编指令运行顺序为1——2——3——4——5——6——7——8——9
其中的for空循环的汇编指令为5、6、7、8、9这四条,进入for循环这四条指令的运行次数为4(来源于自己设置的n<4)
本函数中对应的汇编指令一般占用一个时钟周期,其中第2和8条为跳转指令,占用2个时钟周期,本函数程序其硬件时钟设置为22MHz,故延时函数时间为(10+8*(n-1))*(1/22M)us

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151107.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java静态变量加载顺序_内部类为什么不能有静态

    java静态变量加载顺序_内部类为什么不能有静态静态内部类加载顺序我们先来区分一下两个概念:类加载、加载。类加载的过程包括加载,初始化,验证,解析,准备,初始化等五个过程。加载是类加载的一部分。区分完这两个概念之后我们再来看下面的问题。我们声明一个类,这个类有个内部静态类。还有主函数,当我们启动程序之后,运行javaapplication……

    2022年10月10日
  • 用python随机生成数字_如何实现python随机生成数字?

    用python随机生成数字_如何实现python随机生成数字?今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~说明:python中生成随机数主要用到random模块,方法主要包括:randint、uniform、random、sample、choice等几种常用方法;环境:MacOS10.14.6/Windows10、python3.7.31、在[a,b]之间产生随机整数(ran…

    2022年10月23日
  • Asp.net页面跳转的方法

    Asp.net页面跳转的方法Asp.net几种页面跳转的方法在asp.net下,经常需要页面的跳转,下面是具体的几种方法。跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirectsever.executeserver.transfer三种页面跳转的方法①response.redirect(慢!但全能!)这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不

    2022年7月20日
  • vue删除数组中某一元素_数组索引超出范围

    vue删除数组中某一元素_数组索引超出范围在前端开发中,我们经常需要对数组进行操作,增删改是经常的事情,那我们js中该如何删除指定的下标元素呢????我们用splice来操作1.定义和用法splice()方法用于添加或删除数组中的元素。注意:这种方法会改变原始数组。数组中添加新元素:varfruits=[“Banana”,”Orange”,”Apple”,”Mango”];fruits.splice(2,0,”Lemon”,”Kiwi”);fruits输出结果:Banana,Orange,Le.

    2022年8月10日
  • java中scanner的作用_Java中的Scanner类有什么作用[通俗易懂]

    java中scanner的作用_Java中的Scanner类有什么作用[通俗易懂]介绍:简单来说,Scanner就是用来获取用户在控制台输入的字符串,也可以获取一个文件中的字符串。java.util.Scanner是Java5的特征,一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。使用方法介绍:1、使用不同的next方法将得到的标记转换为不同类型的值,比如说要从获控制台取一个输入字符串中的int类型的数字,使用nextInt。代码示例:Scanners…

    2022年7月20日
  • potplayer_常用配置(窗口/快捷键/播放列表/)

    potplayer_常用配置(窗口/快捷键/播放列表/)文章目录播放窗口配置默认最大化/全屏窗口播放列表(专辑)打开/关闭播放列表菜单新建专辑(播放列表)为专辑添加音视频文件(比如文件夹)快捷键屏蔽(废弃)默认快捷键添加快捷键修改自定自定义的快捷键相关配置需要点击确定来使得配置生效,后面不再反复提及????有一个搜索框,可以搜索关键词碰碰运气(往往不如直接搜索引擎找方案)播放窗口点击起始配置默认最大化/全屏窗口播放列表(专辑)打开/关闭播放列表菜单或者也可以通过右键,点击列表新建专辑(播放列表)为专辑添加音视频文件(比如文件

    2022年5月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号