关于如何设置 TMOD (定时/计数 高低 共 8 位 寄存器)

2024-06-10 16:04

本文主要是介绍关于如何设置 TMOD (定时/计数 高低 共 8 位 寄存器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

TMOD 寄存器简介

TMOD 是 8051 单片机的定时器模式寄存器。它是一个 8 位寄存器,用于配置定时器/计数器的工作模式。TMOD 的每一位有特定的含义。

TMOD 的结构如下:

GATE | C/T | M1 | M0 | GATE | C/T | M1 | M07  |  6  |  5 |  4 |  3   |  2  |  1 |  0
  • GATE (位 7 和 3):门控控制位
    • 0:不使用外部中断来启动/停止定时器
    • 1:使用外部中断来启动/停止定时器
  • C/T (位 6 和 2):计数器/定时器选择位
    • 0:定时器模式(使用内部时钟)
    • 1:计数器模式(使用外部时钟)
  • M1, M0 (位 5, 4 和 1, 0):模式选择位
    • 00:模式 0(13 位定时器)
    • 01:模式 1(16 位定时器)
    • 10:模式 2(8 位自动重装)
    • 11:模式 3(两个独立的 8 位定时器,只有定时器 0 有效)

设定步骤

  1. 选择定时器

    • 使用定时器 0,则设置 TMOD 的低 4 位。
    • 使用定时器 1,则设置 TMOD 的高 4 位。
  2. 选择模式

    • 模式 1(16 位定时器)需要将 M1, M0 设置为 01。
  3. 选择定时器/计数器模式

    • 使用定时器模式(内部时钟),将 C/T 设置为 0。
  4. 选择是否使用门控

    • 不使用门控,将 GATE 设置为 0。

例子分析

我们假设使用定时器 0,模式 1,定时器模式(内部时钟),不使用门控。

  • GATE0 (位 3):0
  • C/T0 (位 2):0
  • M1, M0 (位 1, 0):01

高 4 位用于定时器 1,不使用,所以设置为 0000。

将这些组合起来得到 TMOD 的值:

高 4 位:0000
低 4 位:0001

即:

TMOD = 0000 0001 = 0x01

实际代码

TMOD = 0x01;  // 设置定时器 0 为模式 1(16 位定时器模式)
TH0 = 0xEC;   // 高 8 位初始值
TL0 = 0x78;   // 低 8 位初始值
TR0 = 1;      // 启动定时器 0

其他模式设置示例

如果你需要设置不同的模式或使用定时器 1,可以根据上面的步骤调整:

  • 使用定时器 1,模式 2(8 位自动重装),计数器模式,使用门控:
    GATE1 | C/T1 | M1 | M0 | GATE0 | C/T0 | M1 | M01   |  1   |  1 |  0 |   0   |  0   |  0 | 0
    TMOD = 1100 0000 = 0xC0
    

这篇关于关于如何设置 TMOD (定时/计数 高低 共 8 位 寄存器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048622

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja