延时函数如何延时

延时函数如何延时延时函数如何延时**函数样例编译软件编译后的汇编指令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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++ vector 初始化大小[通俗易懂]

    C++ vector 初始化大小[通俗易懂]一维数组使用下面的代码可以初始化一个大小为n的一维数组vector<int>dp(n);二维数组使用下面的代码可以初始化一个row行col列的二维数组vector<vector<int>>dp(row,vector<int>(col));三维数组使用下面的代码可以初始化一个三维数组,维度分别为n1,n2,n3vector<vector<vector<int>>>dp(n1,vector&

    2022年9月18日
    0
  • vue如何引入js文件_vue中引入外部js好麻烦

    vue如何引入js文件_vue中引入外部js好麻烦js文件一定要放在static下面,不可放在assets下面,因为assets下面的内容最终是要被打包的,而static下面的内容是不用打包直接放过去的;摘自:https://www.jb51.net/article/150517.htm遇到问题:今天做一个VUE的项目,在引入第三方依赖的JS文件时,遇到了一个问题:控制台的提示:UncaughtSyntaxError:Unexpectedtoken<按照提示进入文件,再看如下图:仔细看了看..

    2022年10月8日
    0
  • 人工智能大作业—-八数码问题

    人工智能大作业—-八数码问题基于搜索策略的八数码问题求解大作业题目:基于搜索策略的八数码问题求解大作业目的:加深对搜索策略的理解,尤其是对启发式搜索的基本原理的理解,使学生能够通过编程实现图搜索的基本方法和启发式搜索算法,并能够解决一些应用问题。大作业要求:使用盲目搜索中的宽度优先搜索算法或者使用启发式搜索中的全局择优搜索或A*算法。每人提交一份大作业报告,该报告包括设计、实现、测试、实验对比结…

    2022年7月12日
    41
  • SCSA 模拟题 知识点 (一)

    SCSA 模拟题 知识点 (一)SCSA模拟题知识点(一)1、CIA三原则基本是安全业界的主流共识,CIA原则是:完整性、可用性、机密性2、【AC】关于流量管理功能说法正确的是:流控可以基于用户进行流控3、【AC】数据包如果经过二层交换机转发后,这个数据包的源MAC不会发生变化,如果经过三层交换机路由转发后,源MAC会发生变化4、【SSL】私有用户同一时间只允许一台PC使用;共有用户允许多人使用,在同一时间内同时登录SSLVPN;私有用户可以在线修改登录密码、DKEY的PIN码、手机号码等5、【EDR】病毒..

    2022年6月20日
    29
  • 树莓派控制摄像头_树莓派连接摄像头

    树莓派控制摄像头_树莓派连接摄像头树莓派外接摄像头,最常用的有两种:CSI摄像头、USB摄像头。当然网络摄像头也是可以的。一般的USB摄像头都是UVC免驱的,而且可以方便的插拔和安装,平时最为常用。一、硬件设备usb摄像头使用的罗技c310。(只要是UVC免驱就可以)二、连接并测试摄像头lsusb并将usb摄像头插上插入usb摄像头后,会显示设备ID和信息,像我的:Bus001Device008:ID046d:081bLogitech,Inc.WebcamC310…

    2022年10月10日
    0
  • rar.exe命令行参数与示例

    rar.exe命令行参数与示例

    2021年8月21日
    55

发表回复

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

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