51单片机定时器初值的计算

2023-05-16

什么是时钟周期?什么是机器周期?什么是指令周期?

时钟周期 

时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期

 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

指令周期 

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。


一、10MS定时器初值的计算: 

          1.晶振12M 

             12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。
              65536-10000=55536(d8f0)  
              TH0=0xd8,TL0=0xf0  
        2.晶振11.0592M 

              11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。
              65536-9216=56320(dc00)   
              TH0=0xdc,TL0=0x00

  二、50MS定时器初值的计算:   

       1.晶振12M 
             12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。   

             65536-50000=15536(3cb0) 

             TH0=0x3c,TL0=0xb0

       2.晶振11.0592M 

            11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 

            65536-46080=19456(4c00) 

                TH0=0x4c,TL0=0x00 
 

 三、使用说明 

            以12M晶振为例:每秒钟可以执行1000000次机器周期个机器周期。而T 每次溢出 最多65536 个机器周期。我们尽量应该让溢出中断的次数最少(如50ms),这样对主程序的干扰也就最小。   开发的时候可能会根据需要更换不同频率的晶振(比如c51单片机,用11.0592M的晶振,很适合产生串口时钟,而12M晶振很方便计算定时器的时间),使用插接式比较方便。  
             对12MHz  1个机器周期 1us  12/fosc = 1us

             方式0  13位定时器最大时间间隔  = 2^13 = 8.192ms 

             方式1  16位定时器最大时间间隔  = 2^16 = 65.536ms 

             方式2  8位定时器最大时间间隔  = 2^8 = 0.256ms =256 us  定时5ms,计算计时器初值  M = 2^K-X*Fosc/12  12MHz 方式0: K=13,X=5ms,Fosc=12MHz 则 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78         THx = 0CH,TLx = 78H, 
              方式1: K=16,X=5ms,Fosc=12MHz 则 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78        THx = ECH,TLx = 78H,   

             50ms 12MHz   THx = 3CH,TLx = B0H,         10ms       THx = D8H,TLx = F0H,

            方式2: 最大时间 2^8Fosc/12 = 0.256ms  

            十进制数是怎么来的?   6MHz 一个机器周期 12/6 = 2us   定时1ms  计数初值x (2^16-x)*2us  = 1000us x = 2^16 - 500 ,TH,TL 可置 -500  
             12MHz 一个机器周期 12/12 = 1us 12MHz 一个机器周期 12/12 = 1us 定时50ms  计数初值x (2^16-x)*1us  = 50000us x = 2^16 - 50000 ,TH,TL 可置 -500  定时器  计内部晶振频率 
计数器  计外部输入CPU脚上的脉冲个数  P3.4(T0)  P3.5(T1) 负跳变加一 
当晶振为6MHz时,最高计数频率500KHz
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机定时器初值的计算 的相关文章

  • JDBC通过SSL方式连接MySQL

    环境说明 MySQL 版本 MySQL 5 7 26 pom xml span class token tag span class token tag span class token punctuation lt span depend
  • Token验证失败:JWT signature does not match locally computed signature. 问题解决

    问题 异常提示 xff1a JWT signature does not match locally computed signature JWT validity cannot be asserted and should not be
  • 厦门理工嵌入式开发LPC1768开发板教程

    LPC1768开发板教程 注意 xff1a 本文档基于LPC1768 h头文件和EZ1768 h头文件 xff08 在文档结尾附出 xff09 文章目录 LPC1768开发板教程1 GPIO1 1 设置GPIO1 2 设置输入输出1 3 查
  • 安装conda遇到的问题

    安装了anaconda之后 xff0c 输入conda version提示 conda version 39 不是内部或外部命令 xff0c 也不是可运行的程序 或批处理文件 是因为犯了两个错误 xff1a 1 conda version的
  • Ubuntu通过终端命令行换阿里源(顺带解决ubuntu过时版本问题)

    1 检查Ubuntu系统的Codename lsb release a 得到结果 No LSB modules are available Distributor ID Ubuntu Description Ubuntu 17 10 Rel
  • Debian10 更换apt源

    http mirrors 163 com help debian html 163 官方源地址 xff0c 每4小时更新一次 如果是 Debian10 更换apt源 xff0c 查看debian10具体代号 xff0c 是buster xf
  • 位运算符之左移右移(简单易懂)

    前言 位运算符是用来对二进制位进行操作的 c语言中有6种位运算符 amp 按位与 链接 https blog csdn net weixin 42837024 article details 98736834 按位或 链接 https bl
  • Win10 快捷键大全(史上最全)

    windows 10常用快捷键 win10正式版是微软续已发布的Windows系统的最新版操作系统 windows10 win10正式版 让人感到最意外的就是直接跳过了win9 那么今天我为大家讲解他推出的常用快捷键 希望能够帮到大家 复制
  • clash配置只代理某一个网站

    1 如果你已经导入了某一个订阅 xff0c 右键edit 2 在rules里配置 例如 xff1a 配置只代理域名为aa com开头的网站 DOMAIN SUFFIX aa com proxy1 参数说明 xff1a DOMAIN SUFF
  • bash/tcsh实现回收站(rm -rf 血的教训)

    rm rf 慎用 命令敲得多了 xff0c 常在河边走 xff0c 难免会湿鞋 昨天 xff0c 一个手误 xff0c 敲错了命令 xff0c 把原本想要留的文件夹给rm rf掉了 几天心血全木有了 xff0c 靠 xff0c 死的心都有了
  • Windows远程连接Ubuntu (远程桌面和XDMCP)

    从 RHEL CentOS 转过来 xff0c 几乎所有的编码都在 windows 下 xff0c 不习惯原生 linux 开发 总结了远程连接的两种方式 xff0c 一种用 Windows 自带的 rdp 协议 xff0c 另外一种用 x
  • Linux启动java程序很慢

    Linux启动java程序很慢 xff0c 原因有很多 网上的解决方式也很多 1 修改jre配置参数 xff08 尝试无效 xff0c 可能场景不一 xff09 JAVA HOME jre lib security java securit
  • MySQL数据库备份的几种方式

    MySQL备份的几种方式 最近一直想写点博客 xff0c 但是不知道写什么 xff0c 感觉自己最近的知识没有什么增加 xff0c 今天想到了一篇可以写的博客 以前试过根据data文件夹备份MySQL xff0c 但是从来没有成功过 xff
  • 【docker】深入探讨container,通过container生成image

    深入探讨container 对于上图的理解 image其实是由一层一层的layer来组成的 最底层基于linux内核在上面加了一层一层的layer 从docker仓库pull的image是由Dockerfile来生成 这个image是只读的
  • 创建表时附带的ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic 的解释

    ENGINE 61 InnoDB DEFAULT CHARSET 61 utf8 COLLATE 61 utf8 general ci ROW FORMAT的解释 1 示例 CREATE TABLE 96 student 96 96 id
  • c语言编程“水仙花数”

    文章目录 打印所有的水仙花数 所谓的 水仙花数 是指一个三位数 xff0c 其各位数字的立方和等于该数本身 例如 xff0c 153是水仙花数 xff0c 因为153 61 1 3 43 5 3 43 3 3 打印所有的水仙花数 所谓的 水
  • inux查看日志的几种方法

    linux 日志查看 tail head cat tac sed less echo 1 命令格式 tail 必要参数 选择参数 文件 f 循环读取 q 不显示处理信息 v 显示详细的处理信息 c lt 数目 gt 显示的字节数 n lt
  • asp不能正常用的原因

    前几天做网站时 xff0c 机子出现了这种症状 xff0c 重装过IE和IIS一样也无法解决 xff0c 在百度里找了一下 xff0c 下面的方法真的很适用 症状 xff1a 运行asp程序 包括其他动态网页程序 出现500内部错误信息 x
  • 用DLL实现把数据库的记录导出到EXCEL中(VB)

    39 新建一个ActiveX DLL工程工程名为DbToExcel 39 工程 gt 引用 引用Microsoft ActiveX Data Objects 2 6 Library 39 Microsoft Excel 9 0 Object
  • MySQL转换为SqlServer数据库

    如何将MySQL数据导入到SqlServer中 xff0c 请看以下步骤 xff1a 1 安装mysql数据库的ODBC驱动 xff0c mysql connector odbc 3 51 19 win32 msi 2 打开控制面板管理工具

随机推荐

  • DataTimePicker数据绑定遇到Null时异常的原因

    DateTimePicker1 DataBindings Add 34 Value 34 bindingSource1 34 assessortime 34 如果字段 assessortime的值 为 null 时 就会出现异常 后来发现
  • c#中DataTable与实体集合相互转换

    以下是将集合类转换成DataTable lt summary gt 将集合类转换成DataTable lt summary gt lt param name 61 34 list 34 gt 集合 lt param gt lt return
  • 用Linux命令行生成随机密码的十种方法

    转载自 极客范 xff0c 不得不夸夸强大的Bash啊 xff01 xff01 xff01 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • C++20 Ranges

    VS2019 C 43 43 20的Ranges 01 引入范围的动机02 范围 ranges 03 range v3库04 C 43 43 20 range demo 01 引入范围的动机 C 43 43 17以前的标准库中大多数通用算法
  • 面向对象分析设计步骤

    一 创建用例 初步确定用例 xff1a 1 确定参与者 2 确定用例 xff08 系统操作 xff09 3 确定参与者与用例之间的关系 用例细节描述 xff1a 1 用例名称 2 操作详细描述 3 前置条件描述 4 部署约束 5 正常事件流
  • collect2: ld terminated with signal 9 错误解决办法

    编译android是出现如下错误 xff1a target Java CameraEffectsTests out target common obj APPS CameraEffectsTests intermediates classe
  • 浅谈Stein算法求最大公约数(GCD)的原理及简单应用

    一 Stein算法过程及其简单证明 1 一般步骤 xff1a s1 当两数均为偶数时将其同时除以2至至少一数为奇数为止 xff0c 记录除掉的所有公因数2的乘积k xff1b s2 如果仍有一数为偶数 xff0c 连续除以2直至该数为奇数为
  • 【已解决】@Configration爆红

    64 Configration爆红 问题原因 xff1a 一 xff1a 没有添加依赖 二 xff1a 添加依赖了 xff0c 但是依赖版本过低 解决方法 xff1a 把依赖的版本改的高一点 span class token generic
  • 关于冒泡排序的程序( 第三次作业)

    此前想过把两种排序方式都一起写在一个工程文件里 xff0c 但做了下 xff0c 能力有限 xff0c 没法写完整 xff0c 所以就只能分别写 xff0c 这个是冒泡排序 xff0c 代码已尽量做到准确的注释 xff0c 希望提醒自己往后
  • BSS段

    深入理解计算机系统 bss段 xff0c data段 text段 堆 heap 和栈 stack 1 关于BSS段的大小 2 1 BSS段中的内容 2 2 BSS段在加载运行前的处理 3 3 BSS段的作用 3 4 代码优化对BSS段的影响
  • Java 比较两个List对象差集(根据某一值)

    很多都是比较List lt String gt 的 xff0c 和自身业务不符 xff0c jdk1 8 新特性强大的Stream API xff0c 具体是什么方法 xff0c 什么作用自行百度 xff0c 复制粘贴可以解决问题就OK 4
  • Windows10 安装Redis(图文教程)

    Redis xff08 Remote Dictionary Server xff0c 即远程字典服务 xff0c 是一个开源的使用ANSI C语言编写 支持网络 可基于内存亦可持久化的日志型 Key Value数据库 一 下载redis客户
  • e17 enlightenment 介绍及配置

    为什么要有一个窗口管理器 为什么一定要有一个桌面背景 xff0c 甚至是标题栏 或是如果把一个应用程序如firefox当成桌面背景行不行 桌面能不能再快一点 我不想把资源浪费在那些用不到的地方 Linux那么多虚拟桌面 xff0c 为什么我
  • Vim: Warning: input is not from a terminal 后退出 vim 终端异常

    Vim Warning input is not from a terminal 后退出 vim 终端异常 今天执行了如下命令调用 vi 来打开 find 搜索到的文件 xff1a longyu 64 longyu pc span clas
  • UNPV2 学习:Posix Message Queues

    文章目录 特点消息队列的释放mq notify 函数mq notify 使用信号通知消息到达直接在信号处理函数中调用 mq notify 与 mq receive 函数来接收数据在信号处理函数中设置标志在程序主逻辑中调用 mq notify
  • VMware ESXI虚拟机磁盘在线扩容后fdisk -l 找不到问题解决

    VMware ESXI虚拟机磁盘在线扩容后fdisk l 找不到问题解决 在VMware ESXI终端页面为虚拟机新增磁盘后 xff0c 进入虚拟机执行fdisk l 找不到新增的盘 重启系统肯定是可以解决的 xff0c 但是机器有在跑测试
  • go调用python

    安装 安装python和go的环境 xff0c 在debian和ubuntu系统上 xff0c 还要sudo apt install python all dev安装sudo apt get install pkg config安装go g
  • C++ 20 Concept 语法

    requires expression 一种表达式 xff0c 它很像一个lambda表达式 xff0c 一个未命名元函数 例如 xff1a requires int a int b a 43 b 其中 xff1a xff08 xff09
  • 带你一步步破解Android微信聊天记录解决方案

    哪个小可爱在偷偷的看我 前言 最近公司需要做个内部应用 xff0c 需求有通话并录音上传服务器 xff0c 微信聊天记录上传服务器 xff0c 我擦 xff0c 竟然要做严重窃取隐私的功能 xff0c 一万个草泥马奔腾而来 xff0c 于是
  • 51单片机定时器初值的计算

    什么是时钟周期 xff1f 什么是机器周期 xff1f 什么是指令周期 xff1f 时钟周期 时钟周期也称为振荡周期 xff0c 定义为时钟脉冲的倒数 xff08 可以这样来理解 xff0c 时钟周期就是单片机外接晶振的倒数 xff0c 例