51单片机计算定时器初值

news2024/11/23 7:00:51

51单片机计算定时器初值

  • 前言
  • 理论分析
    • 工作方式寄存器 TMOD
        • GATE 门控位
        • C/T' 计数器模式和定时器模式选择位
        • M1 M0 工作方式选择位
    • 定时器/计数器控制寄存器 TCON
      • TCON补充(中断相关)
  • 计算过程
    • 补充: 方式2运行原理
    • 源码

前言

  • 芯片使用AT89S51
  • 参考书目《单片机原理与应用设计 C51编程+Proteus仿真》(第二版) 张毅刚主编 电子工业出版社

理论分析

工作方式寄存器 TMOD

TMOD的字节地址位89H, 不能位寻址, TMOD共八位, 高四位控制T1工作方式, 低四位控制T0工作方式

D7D6D5D4D3D2D1D0
GATEC/T’M1M0GATEC/T’M1M0

GATE 门控位

  1. GATE = 0 : 定时器/计数器是否计数仅由控制位TRx(x = 0,1))来控制, TRx(x = 0,1)为高电平允许T1(T0)对脉冲计数
  2. GATE = 1 : 定时器/计数器是否计数由外中断引脚INT1’ or INT0’和TRx(x = 0,1)共同控制, 当二者全为1时允许T1(T0)对脉冲计数

C/T’ 计数器模式和定时器模式选择位

  1. C/T’ = 0 : 定时器模式, 对系统时钟12分频后的内部脉冲进行计数
  2. C/T’ = 1 : 计数器模式, 对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)进行计数

M1 M0 工作方式选择位

M1 M0工作方式
0 0方式0, 13位定时器/计数器
0 1方式1, 16位定时器/计数器
1 0方式2, 8位的常数自动重新装载的定时器/计数器
1 1方式3, 仅适用于T0, 此时T0分为2个八位计数器, T1停止计数

定时器/计数器控制寄存器 TCON

TCON的字节地址为88H, 可位寻址

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0

其低四位与外部中断有空

  1. TF1, TF0 计数溢出标志位: 当计数器计数溢出时, 该位置1. 使用查询方式时, 该位可供CPU查询, 但应注意查询后, 应使用软件计时将该位清0. 使用中断方式时, 该位作为中断请求标志位, 进入中断服务程序后由硬件自动清0.
  2. TR1 , TR0 计数运行控制位 : TRx = 1时, 启动定时器/计数器计数的必要条件(由于GATE位的不确定, 只知道TRx = 1不能确定定时器/计数器是否启动).TRx = 0时, 停止定时器/计数器计数该位可由软件置1或清0.

TCON补充(中断相关)

D7D6D5D4D3D2D1D0
ICONTF1TR1TF0TR0IETIT1IE0IT0
位地址8FH8DH8BH8AH89H88H
  1. IT0: 选择外部中断请求0, 1为下降沿触发方式, 0为低电平触发.
  2. IT1: 选择外部中断请求1, 触发方式选择与IT0类似.

计算过程

若使用定时器T0, 采用方式2定时, 输出周期为400us占空比位25%的矩形脉冲(晶振频率为12MHz)

  1. 使用定时器T0 -> 对TH0和TL0写入数据(TH0为T0的高八位, TL0为T0的第八位)
  2. 采用方式2定时 -> TMOD的M1 M0为10(方式2的运行原理在补充内容中)
  3. 输出周期为400us, 占空比为25% -> 高电平持续时间为400*25%us = 100us, 低电平持续时间为400us - 100us = 300us

定时时间 = 计数值 * 机器周期

  • 定时时间 : 高电平持续时间和低电平持续时间的最大公约数, 此例中为100us
  • 计数值 : 记为n, 需计算求出
  • 机器周期 : 机器周期 = 1/晶振频率 = 1/12Mhz = 1us

所以, 100us = n * 1us -> n = 100

计数值 = 最大计数值 - 计算初值

  • 计数值 : 上式中的n, 解得为100
  • 最大计数值 : 方式2为8位计数器/定时器, 最大计数值为2^8 = 256
  • 计算初值: 记为x, 需计算解出

所以, 100 = 256 - x, 解得x = 256 - 100

综上, TH0 = TL0 = 256 - 100;

补充: 方式2运行原理

工作方式2为自动恢复初值(初值自动装入)的8为定时器/计数器, TLx(x = 0, 1)作为常数缓冲器, 当TLx计数溢出时, 在溢出标志位TFx置1的同时, 还自动将THx中的初值发送至TLx, 使TLx从初值开始重新计数.

源码

课后题7-5硬件仿真原理图
课后题7-5波形图

/* 
 * 功能实现:  使用T0, 采用方式2定时中断, 在P1.0引脚上输出周期为400us, 占空比为25%的矩形脉冲 
 * 编写环境: Neovim + Keil5
 * 硬件仿真: Proteus 8 Professional
 * 日期: 2022-11-15
 */

#include <reg51.h>

sbit Pluse = P1^0; // 定义P1.0口为Pulse

unsigned char count = 0;

int main(void)
{
    TMOD = 0x01; // 定时器T0为方式1

    TH0 = 256 - 100; // 设置定时器初值
    TL0 = 256 - 100; 

    Pluse = 0; // P1.1输出低电平
    EA = 1; // 总中断开
    ET0 = 1; // T0中断开
    TR0 = 1; // 启动T0

    while(1) // 循环等待
    {
        ;
    }

    return 0;
}

void timer0() interrupt 1 // T0中断程序
{

    TH0 = 256 - 100; // 重新赋值
    TL0 = 256 - 100; 

    count++;

    if (1 == count) // 100us过后, 高电平持续时间结束, 需将P1.1变为低电平
    {
        Pluse = 0;
    }
    else if (4 == count) // (4-1) * 100us过后, 低电平持续时间结束, 需将P1.1变为高电平
    {
        Pluse = 1;
		count = 0; // 一个脉冲周期结束, 将count清零 
    }

    return;
}

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

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

相关文章

Vue2.0开发之——Vue基础用法-列表渲染指令(24)

一 概述 列表渲染指令v-forv-for 中的索引使用 key 维护列表的状态key 的注意事项 二 列表渲染指令v-for 2.1 概念 vue 提供了 v-for 列表渲染指令&#xff0c;用来辅助开发者基于一个数组来循环渲染一个列表结构。v-for 指令需要使 用 item in items 形式的特殊语法&#x…

C#程序发布时,一定要好好地保护,不然你会后悔的

上次分享一个C#混淆开源项目《一个对C#程序混淆加密&#xff0c;小巧但够用的小工具》&#xff0c;发现大家都非常感兴趣&#xff0c;但也发现很多人&#xff0c;不了解为什么没有混淆&#xff0c;就会很容易被破解。 所以今天给大家做一个教程&#xff1a;如何通过工具来反编…

[网络工程师]-传输层协议-UDP协议

用户数据协议&#xff08;User Datagram Protocol&#xff0c;UDP&#xff09;是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据附加了源端口号和目标端口号等UDP报头字段后&#xff0c;直接发往目的主机。这时&#xff0c;每个数据报的…

【数据结构】链表

目录 一、线性表接口 二、单链表 2.1 单链表的结构定义 2.2 头插法 2.3中间位置的插入 2.4尾插法 2.5遍历链表 2.6查询线性表中是否包含指定元素 2.7返回索引为index的元素值 2.8修改索引为index位置的元素为新值&#xff0c;返回修改前的元素值 2.9删除链表中索引为…

公众号免费搜题系统

公众号免费搜题系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击…

嵌入式FreeRTOS学习十,任务调度和任务就绪链表任务调度过程

一.main函数里面的栈是哪里分配的 main函数里面用到的栈&#xff0c;假设为msp,是汇编代码里面设定的&#xff0c;对于STM32F103,在汇编代码里的向量表设置了一个栈_initial_sp,那这个栈是给谁用的呢&#xff1f; 可以看到&#xff0c;这个_initial_sp在内存中分配了一个空间区…

案例驱动,手把手教你学PyTorch(二)

通过案例学PyTorch。 扫码关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 Autograd Autograd 是 PyTorch 的自动微分包。多亏了它&#xff0c;我们不需要担心偏导数、链式法则或类似的东西。 那么&#xff0c;我们如何告诉 PyTorch 做它的事情并计…

python在线及离线安装库

目录 一、配置python环境变量&#xff1a; 二、在线安装python库&#xff1a; 三、离线安装python库&#xff1a; 一、配置python环境变量&#xff1a; 1、以windows10为例&#xff0c;右键电脑->>属性: 2、选择高级系统设置&#xff1a; 3、选择环境变量&#xff1a…

八行代码一键照片转漫画

有些小程序可以实现照片转漫画的功能&#xff0c;本文和你一起来探索其背后的原理。用Python实现八行代码一键照片转漫画。    文章目录一、效果展示二、代码详解1 导入库2 照片转漫画一、效果展示 在介绍代码之前&#xff0c;先来看下本文的实现效果。    喜欢的小伙伴也…

操作系统主引导扇区代码是如何被加载到内存的?

1. 问题&#xff1a;OS引导代码为什么需要org 07c00h&#xff1f; 在前几天在知乎上的的一个回答《想带着学生做一个操作系统&#xff0c;可行性有多大&#xff1f;》中&#xff0c;我们引用了一段主引导扇区MBR中的操作系统加载代码&#xff1a; org 07c00h ; 告诉编译器程…

PCA实现降维的过程

PCA将相关性高的变量转变为较少的独立新变量&#xff0c;实现用较少的综合指标分别代表存在于各个变量中的各类信息&#xff0c;既减少高维数据的变量维度&#xff0c;又尽量降低原变量数据包含信息的损失程度&#xff0c;是一种典型的数据降维方法。PCA保留了高维数据最重要的…

web前端期末大作业 HTML+CSS+JavaScript仿京东

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目| HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&am…

SpringBoot发送邮件

06.发送邮件 在使用javaSE时&#xff0c;我们会发现发送邮件较为麻烦&#xff0c;而在SpringBoot中&#xff0c;发送邮件就变成一件较为简单的时。 导入mail的maven的启动类。 <dependency><groupId>org.springframework.boot</groupId><artifactId>…

DSPE PEG Azide, DSPE-PEG-N3;磷脂聚乙二醇叠氮

中文名称&#xff1a;磷脂聚乙二醇叠氮(DSPE-PEG-N3) 中文别名&#xff1a;N-二硬脂酰磷脂酰乙酰胺-PEG-叠氮 磷脂PEG叠氮 英文名称&#xff1a;DSPE PEG Azide, DSPE-PEG-N3 性状&#xff1a;根据不同的分子量为固体或者粘稠液体。 溶剂&#xff1a;溶于DCM&#xff0c;…

表单标签。。

一、任务目标 掌握表单标签及其属性的使用 二、任务背景 HTML表单用于收集用户输入。表单元素指的是不同类型的 input 元素、复选框、单选按钮、提交按钮等。 三、任务内容 1、<form></form>标签 用于创建HTML表单&#xff0c;常用属性如下&#xff1a; action&…

OpenGL ES 学习(一) -- 基本概念

最近在研究 SurfaceView 和 TextureView&#xff0c;发现栅格化这东西&#xff0c;一直没怎么搞明白&#xff0c;一搜都是关于 OpenGL 的&#xff0c;没办法&#xff0c;当初也是要学习这个&#xff0c;现在重试拾起。 之前接触 OpenGL &#xff0c;是主要解决一个渲染模糊问题…

JavaEE-操作系统

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录操作系统介绍操作系统的定位进程进程控制块内存管理进程间通信思维导图总结操作系统介绍 操作系统是一组做计算机资源管理的软…

文献学习01_Attention Is All You Need_20221119

论文信息 Subjects: Computation and Language (cs.CL); Machine Learning (cs.LG) &#xff08;1&#xff09;题目&#xff1a;Attention Is All You Need &#xff08;你需要的就是关注&#xff09; &#xff08;2&#xff09;文章下载地址&#xff1a;https://doi.org/10.4…

今天给大家介绍一篇基于javaWeb的汽车订票系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

牛客网之SQL非技术快速入门(3)-排序、关联关系

知识点&#xff1a; &#xff08;1&#xff09;order by colunm_name(s) ASC|DESC order by ID ASC,name ASC,sex DESC 不写就是默认升序&#xff0c;DESC降序 &#xff08;2&#xff09;3中关联关系&#xff1a;left join、right join、inner join/join 21、现在运营想要查…