51单片机快速入门之延时代码 STC 51单片机

news2024/9/23 9:33:45

51单片机快速入门之延时代码

时序周期:简单的举例(早 中 晚)

时间基准:一个机器周期有 12个 振荡周期(晶振)

假设我们现在手上为12MHz晶振

单个振荡周期计算公式:T(时间周期)=1/f(晶振的频率)

在处理频率相关的计算时,通常会使用赫兹(Hz)作为基本单位,因为它是国际单位制中用于测量频率的标准单位。
12MHz转换成赫兹(Hz): 12x10^6

“兆”(Mega,缩写为 M)表示的是 10^6

T (单位 秒  s)=1/12x10^6 约等于 0.000 000 083333

1秒等于1,000,000微秒 10^6

(1/12x10^6)x10^6 = 1/12

这里转换结果就是 1/12 约等于0.083333 μs

不考虑其他因素下

机器周期的总时间将是:
12 x T 也就是 1 μs 微秒

机器周期,也称为指令周期

在一个简单的处理器中,执行一条加法指令可能需要以下几个步骤:

  1. 取指:从内存中读取指令。
  2. 解码:解析指令以确定要执行的操作。
  3. 执行:进行实际的加法运算。
  4. 存储:将结果存储回内存或寄存器。

每个步骤都需要一定数量的时钟周期。总的机器周期就是完成所有这些步骤所需的时间。

简单易用的代码:精度一般 while循环操作


 void delay(unsigned int t);//延时函数声明

void main()
{
  
        delay(6000);            


}
void delay(unsigned int t){
    while(t--);

}

```
C:0x000C    02001A   LJMP     main(C:001A) // 跳转到main函数

    14: void delay(unsigned int t){ // 延时函数
    15:         while(t--); // 循环直到t减到0
    16:  
C:0x000F    EF       MOV      A,R7 // 将R7的值赋给A
C:0x0010    1F       DEC      R7 // R7的值减1
C:0x0011    AC06     MOV      R4,0x06 // 将0x06赋给R4
C:0x0013    7001     JNZ      C:0016 // 如果A不为0,跳转到C:0016
C:0x0015    1E       DEC      R6 // R6的值减1
C:0x0016    4C       ORL      A,R4 // A的值与R4的值做或运算
C:0x0017    70F6     JNZ      delay(C:000F) // 如果A不为0,跳转到delay函数
    17: }
C:0x0019    22       RET      // 返回

     7: void main() // 主函数
C:0x001A    7F70     MOV      R7,#0x70 // 将0x70赋给R7
C:0x001C    7E17     MOV      R6,#0x17 // 将0x17赋给R6
C:0x001E    02000F   LJMP     delay(C:000F) // 跳转到delay函数
```

看看运行效果debug

我们可以看到 执行该程序只花费了0.05443000秒 也就是54,430微秒

如果用16位的 unsigned int,最大值为 2^16 - 1,即 65535

我们将会打得到刚好运行0.5秒多!

 for循环操作代码:可以发现基本上接近1S

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】【Vim】Vim 基础

Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…

Unity让摄像机跟随物体的方法(不借助父子关系)

在Unity中,不使用子对象的方式让相机跟随物体移动,我们通过编写脚本来实现。下面放一个从工程中摘出来的的C#脚本示例,用于将相机绑定到一个Target对象上并跟随其移动: using UnityEngine; public class FollowCamera : MonoBeh…

Mac 上终端使用 MySql 记录

文章目录 下载安装终端进入 MySql常用操作查看数据库选择一个数据库查看当前选择的数据库Navcat 打开提示报错参考文章 下载安装 先下载社区版的 MySql 安装的过程需要设置 root 的密码,这个是要进入数据库所设定的,所以要记住 终端进入 MySql 首先输…

docker+docker-compose+gitlab

Docker安装 下载 下载docker二级制文件docker-20.10.9.tgz https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz 上传到/data目录 解压文件 # cd /data # tar -zxf docker-20.10.9.tgz 移动解压出来的文件到/usr/bin目录 # mv docker/* /usr/b…

RAPIDS AI 加速制造业预测性维护效率

根据国际自动化协会(ISA)报告,每年有5%的工厂生产因机时间而受到损失。在另一种情况下,各行各业的制造商在全球范围内放弃了大约647亿美元,而相应的部分在生产中则接近13万亿美元。当前的挑战是预测这些机器的维护需求…

fastjson漏洞--以运维角度进行修复

文章目录 前言一、漏洞详情二、修复过程1.通过脚本方式修复1.1.脚本修复原理1.2.脚本演示1.3.执行脚本 2. 手动升级包2.1.修复步骤2.2.遇到的问题 前言 该漏洞是三个月前由安全团队扫描出来的,主要影响是: FastJSON是阿里巴巴的开源JSON解析库,它可以解…

机器人--手眼标定算法

教程 知乎1 CSDN博主 什么是手眼标定 eye_to_hand 相机不在机器人上-----相机坐标系相对于机器人基坐标系的转换矩阵不变; eye_in_hand 相机在机器人上-----相机坐标系相对于机器人工具坐标系的转换矩阵不变; 手眼标定的目的 目的:求解出…

模板语法

模板语法 {{.}} 模板语法都包含在 {{ 和 }} 中间,其中{{ . }}中的点表示当前对象。 当传入一个结构体对象时,可以根据 . 来访问结构体的对应字段。 当传入的变量是map时,也可以在模板文件中通过 . 根据key来取值。 main.go package maini…

S3C2440 ARM设备驱动(boot loader,kernel,rootfs)

一、开发板Linux启动需求 1、bootloader 为内核启动准备环境,并引导内核启动 2、kernel(linux内核) 操作系统的核心,(狭义上的操作系统) 3、rootfs 一堆有组织的文件 1. bootloader(一个裸机程序) 初始化C…

【MM24】【水下目标分割】Dual_SAM

论文:https://arxiv.org/abs/2404.04996 代码:https://github.com/Drchip61/Dual_SAM 点评 这篇文章介绍的改进SAM,面向海洋生物的分割。但是海洋图像易受噪声影响,论文中仅是通过一个gamma变换减弱了这种影响。双主干网络的参数量并没有提及…

2.队列和队列集

队列的本质就是环形buff,加了互斥操作,加了阻塞-唤醒. 1.介绍一下环形BUFF 2.阻塞和唤醒 在我们队列中是有一个读list 链表 和 一个写list链表 他们就是用来保存 读 或者 写阻塞 的任务 假设我们 就绪链表中有A 和 B两个任务 他们正常情况下都是轮流运行, 这个时候 A 想读队…

IDEA中集成Git及Github

我的博客大纲 我的GIT学习大纲 1、IDEA中集成Git 1.1.设置IDEA忽略一些文件: a.为什么要忽略一些文件 1.在将项目推送之前,有一些文件是可以忽略的,忽略这些文件与实际功能无关,不参与服务器上部署运行,把他们忽略掉…

【DCL】Dual Contrastive Learning for General Face Forgery Detection

文章目录 Dual Contrastive Learning for General Face Forgery Detectionkey points:贡献方法数据视图生成对比学习架构实例间对比学习实例内对比学习总损失函数实验实验细节定量结果跨数据集评估跨操作评估消融实验可视化Dual Contrastive Learning for General Face Forgery…

HarmonyOS开发5.0【封装request泛型方法】axios

一 准备工作 1. 先开启一下虚拟机的权限 src/main/module.json5 打开module.json5在15~19行 进行配置网络权限 2. 在终端下载安装一下 ohpm install ohos/axios 复制 粘贴进去回车就行 3. 这样显示就是安装好了 如果导入不行就关了重新启动 二 创建一个ETS文件,…

后端开发刷题 | 矩阵的最小路径和

描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 数据范围: 1≤n,m≤500,矩阵中任意值都满足 0≤ai,j…

Linux系统:cd命令

1、命令详解: cd命令用于改变当前工作目录的命令,切换到指定的路径,全称为change directory,若目录名称省略,则默认变换至使用者的 home 目录。 2、官方参数: 选项:-L 强制遵循符号链接-P 使用…

基于RFID技术的光交箱哑资源智能化管理方案

一、现状 (一)现状与挑战 在当前通信网络基础设施中,哑资源如光缆接头、跳线等在网络中占据着重要地位。然而,传统的哑资源管理方式存在诸多问题,一方面,管理主要依赖人工记录和定期巡检,效率…

每日OJ_牛客_合唱团(打家劫舍dp)

目录 牛客_合唱团(打家劫舍dp) 解析代码1 解析代码2 牛客_合唱团(打家劫舍dp) 合唱团__牛客网 有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求…

MongoDB高可用和分片集群知识

一、MongoDB实现高可用 1. MongoDB复制集(Replication Set) 在实际生产中,MongoDB要实现高可用,以免MongoDB单实例挂了,服务不可用。MongoDB实现高可用是以MongoDB复制集的形式实现,和集群部署概念相同,MongoDB复制集…

火柴人跑酷

运行图片: 这里面有三个boss,和各种元素属性列举一下: 元素作用 火 运用火元素将攻击抵消 水 和火元素一致 磁 自动吸取经验…