延时函数如何延时

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


相关推荐

  • FQDN_dns资源记录类型有哪些

    FQDN_dns资源记录类型有哪些FQDN全域名(FQDN,FullyQualifiedDomainName)是指主机名加上全路径,全路径中列出了序列中所有域成员。全域名可以从逻辑上准确地表示出主机在什么地方,也可以说全域名是主机名的一种完全表示形式。从全域名中包含的信息可以看出主机在域名树中的位置。例如,acmecompany公司的Web服务器的全域名可以是[url]www.acmecom…

    2025年8月16日
    1
  • python hashlib_Python hashlib模块实例使用详解

    python hashlib_Python hashlib模块实例使用详解这篇文章主要介绍了Pythonhashlib模块实例使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下hashlib模块主要的作用:加密保护消息安全,常用的加密算法如MD5,SHA1等。1、查看可用的算法有哪些hashlib_algorithms.py#!/usr/bin/envpython#-*-coding:utf-8-*-i…

    2022年6月6日
    31
  • TransparentBitmap函数设置透明位图的原理分析

    TransparentBitmap函数设置透明位图的原理分析1、函数的功能:把一张位图设置成透明,不影响背景图的显示,并可改变大小2、函数的思想: (1)以当前的hdc创建5个设备兼容dc(HDC):hMem,hSave,hBack,hObject,hTemp (2)将要透明处理的位图块选入其中一个hTemp,获取宽高,并转换成逻辑点值; (3)创建4个临时位图(HBITMAP):bmMem,bmSave,bmBack,bmObjec

    2022年7月21日
    20
  • 使用CODELF[通俗易懂]

    使用CODELF[通俗易懂]CODELF是对代码中名字进行命名的工具使用方法如下:在浏览器中找到搜索引擎然后添加或修改搜索引擎:之后在浏览器地址栏,输入关键字后,点一下Tab,输入要搜索的变量名字即可,搜索结果如下图点击箭头处可以找到调用这个变量的相关代码…

    2022年6月4日
    93
  • Radius协议-学习

    Radius协议-学习百度百科定义:RADIUS:RemoteAuthenticationDialInUserService,远程用户拨号认证系统由RFC2865,RFC2866定义,是应用最广泛的AAA协议。

    2022年7月1日
    34
  • docker离线安装部署 linux_docker官方中文文档

    docker离线安装部署 linux_docker官方中文文档linux下离线安装docker一、基础环境1、操作系统:centos7.32、docker版本:18.06.1官方下载地址(打不开可能很慢)4、官方参考文档:二、docker安装1、解压tar-xvfdocker-18.06.1-ce.tgz2、将解压出来的docker文件内容移动到/usr/bin/目录下mvdocker/*/usr/bin/3、将docker注册为servic…

    2022年9月26日
    2

发表回复

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

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