【MCS-51单片机汇编语言】期末复习总结⑤——定时器中断方式与查询方式程序设计(题型五)

news2024/12/27 10:15:30

在这里插入图片描述

文章目录

  • 知识准备
    • 工作方式寄存器TMOD
    • TCON寄存器
    • IE寄存器
  • 定时/计数器的使用
    • 初始化
  • 常考题型
    • 例题1
        • 题目描述
        • 题目解析
        • 题解
    • 例题2
        • 题目描述
        • 题目解析
        • 题解

知识准备

工作方式寄存器TMOD

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0
  • [注]:TMOD高4位T1相关,低4位T0相关。

  • GATE

    • 0:定时器/计数器的运行由TRX决定;
    • 1: 定时器/计数器的运行由TRX外中断引脚共同决定;
  • C/T

    • 0:定时器模式;
    • 1:计数器模式;
  • M1/M0

M1M0方式n
00方式013位(重要)
01方式116位(重要)
10方式28位
11方式32个8位(仅适用于T0)

TCON寄存器

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0
  • IT0/IT1:外部中断0/1的中断触发方式选择

    • 1:沿边触发,由10的下降沿有效;
    • 0:电平触发,低电平有效;
  • IE0/IE1:外部中断0/1的中断标志位

    • 1:发生中断;
    • 0:未发生中断;
  • TR0/TR1:T0/T1运行控制位

    • 1:运行;
    • 0:不运行;
  • TF0/TF1:T0/T1的溢出标志位

    • 0:定时器未溢出;
    • 1:定时器溢出;

IE寄存器

D7D6D5D4D3D2D1D0
EAESET1EX1ET0EX0
  • EX0/EX1外部中断0/1的中断允许设置位:

    • 1:允许中断;
    • 0:禁止中断;
  • ET0/ET1定时器中断T0/T1的中断允许设置位:

    • 1:允许中断;
    • 0:禁止中断;
  • ES串行口的中断允许设置位:

    • 1:允许中断;
    • 0:禁止中断;
  • EA中断允许总开关设置位:

    • 1:允许总中断;
    • 0:禁止总中断;

定时/计数器的使用

初始化

  1. 设置TMOD:设置定时器的工作方式(四种工作方式,一般选择方式0或方式1);
  2. 计算初值(上一章中已详细介绍):
  3. 将初值写入TH0、TL0TH1、TL1
  4. 开放定时器中断和ETXEA(若选择中断的方式则需要开启,查询方式不需要);
  5. 启动定时器/计数器:TR0TR1

常考题型

例题1

题目描述

  • 系统时钟晶振频率为12MHZ,利用T0定时器选择方式0在P1.0引脚上输出周期为2ms的方波,允许中断

题目解析

  • 方波周期为2ms,则波峰、波谷各持续1ms,所以解决本题的主要思路为:利用定时器实现定时1ms,当定时器溢出(即计时1ms后),立即对P1.0进行取反,实现方波一低一高。

题解

准备工作

  1. 设置TMODGATE = 0C/T = 0M1、M0 = 00(因为选择方式0),所以 TMOD = 00H
  2. 计算初值(步骤参考上一篇文章),定时时间为1ms,代入公式得 初值X = 7192 = 1C18H= 1 1100 0001 1000
  3. 写入TH0,TL0:因为选择方式0,所以TH0取X的高8位TL0取X的后5位,即TH0 = 1 1100 000 = 0E0HTL0 = (前面补0)0001 1000 = 18H

中断方式程序设计

	ORG		0000H
	AJMP	MAIN
	ORG		000BH		;T0中断入口地址
	AJMP	TIME		;跳转到定时中断服务程序
	ORG		0030H
MAIN:
	MOV		TMOD,	#00H;设置TMOD
	MOV		TL0,	#18H;填充定时器初值
	MOV		TH0,	#0E0H
	SETB	ET0			;允许定时器0中断
	SETB	EA			;中断允许总开关
	SETB	TR0			;启用定时器T0
LOOP:
	SJMP	LOOP		;死循环
TIME:
	MOV		TL0,	#18H;重装初值
	MOV		TH0,	#0E0H
	CPL		P1.0		;P1.0取反,实现方波一低一高
	RETI
	END	

在这里插入图片描述

查询方式程序设计

	ORG		0000H
	AJMP	MAIN
	ORG		0030H
MAIN:
	MOV		TMOD,	#00H;设置TMOD
	MOV		TL0,	#18H;填充定时器初值
	MOV		TH0,	#0E0H
	SETB	TR0			;启用定时器T0
HERE:
	JBC		TF0,	LOOP;当(TF0) = 1时,跳转到LOOP并且(TF0) -> 0
	AJMP	HERE
LOOP:
	MOV		TL0,	#18H;重装初值
	MOV		TH0,	#0E0H
	CPL		P1.0		;P1.0取反,实现方波一低一高
	RETI
	END
  • 注意查询方式与中断方式最明显的不同是省略了设置中断各种开关的步骤。查询方式把定时器溢出就中断的效果代替为HERE所在的指令,即一直监视TF0(定时器溢出标志位),若定时器溢出则跳转到LOOP,否则继续原地死循环。

例题2

题目描述

  • 系统时钟晶振频率为12MHZ,利用T1方式2定时模式,在P1.0引脚上输出周期为500微秒的方波。

题目解析

  • 本题与上一题思路完全相同,不同的是定时时间为250微秒,晶振频率为12MHZ,并且选择T1方式2。

题解

  1. 设置TMODGATE = 0C/T = 0M1、M0 = 10(因为选择方式2),所以TMOD = 20H
  2. 计算初值:由公式 T定时 = (2n - X) · 12/ ∫晶振 = (28 - X) · 12/12MHZ = 250,解得初值X = 06H
  3. 写入TH0,TL0:TH1 = 06HTL1 = 06H

中断方式程序设计

	ORG		0000H
	AJMP	MAIN
	ORG		001BH		;T1的中断入口地址
	AJMP	TIME		;跳转到定时中断服务程序
	ORG		0030H
MAIN:
	MOV		TMOD,	#20H;设置TMOD
	MOV		TL0,	#06H;填充定时器初值
	MOV		TH0,	#06H
	SETB	ET1			;允许定时器1中断
	SETB	EA			;中断允许总开关
	SETB	TR1			;启用定时器T1
LOOP:
	SJMP	LOOP		;死循环
TIME:
	CPL		P1.0		;P1.0取反,实现方波一低一高
	RETI
	END	

查询方式程序设计

	ORG		0000H
	AJMP	MAIN
	ORG		0030H
MAIN:
	MOV		TMOD,	#20H;设置TMOD
	MOV		TL0,	#06H;填充定时器初值
	MOV		TH0,	#06H
	SETB	TR1			;启用定时器T1
HERE:
	JBC		TF1,	LOOP;当(TF1) = 1时,跳转到LOOP并且(TF1) -> 0
	AJMP	HERE
LOOP:
	CPL		P1.0		;P1.0取反,实现方波一低一高
	RETI
	END	

可将题解当作解题模板背下……

在这里插入图片描述

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

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

相关文章

iptables和防火墙

文章目录 1.防火墙2.Iptables基本介绍2.1 什么是iptables2.2 什么是包过滤防火墙2.3 包过滤防火墙如何实现 1.防火墙 Linux防火墙主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,典型的包过滤防火墙,基于内核编码实现,具有非…

Qt(C++)绘制指针仪表盘显示当前温度

一、功能介绍 当前文章要实现的功能: 使用Qt绘制一个仪表盘,用来显示当前的温度,绘制刻度、绘制数字、绘制温度指针。仪表盘全程使用QPainter进行绘制,QPainter是Qt框架中非常重要的一个类,绘制功能的实现离不开它。如果想要使用Qt进行高质量的绘图或UI设计,必须掌握QP…

Groovy 基本语法

一、简介 类型转换:当需要时,类型之间会自动发生类型转换: 字符串(String)、基本类型(如int) 和类型的包装类(如Integer) 类说明:如果在一个groovy 文件中没有任何类定义,它将被当做script 来处理,也就意味着这个文件将…

DragGAN-点对点的手动P图

原文网站link以及论文链接: https://vcai.mpi-inf.mpg.de/projects/DragGAN/ https://arxiv.org/pdf/2305.10973.pdf 简介 深度生成模型近年在合成随机真实感图像方面取得了不错的成绩。在现实世界的应用中,这种基于学习的图像合成方法中一个关键功能是…

文心一言 VS 讯飞星火 VS chatgpt (31)-- 算法导论5.2 3题

三、利用指示器随机变量来计算掷n 个骰子之和的期望值。 文心一言: 为了计算掷n个骰子之和的期望值,我们需要先了解一个重要的概念:指示器随机变量。 指示器随机变量是一种特殊的随机变量,它只有两个取值:0和1。通常…

《计算机网络——自顶向下方法》精炼——3.7(2)

读书有三到:谓心到,眼到,口到。——明朱熹 文章目录 对链接吞吐量的简化描述高带宽路径的TCP公平性 对链接吞吐量的简化描述 为了简化对一条TCP连接吞吐量的描述,我们首先忽略连接过程中处于慢启动状态的时间,因为这一…

AWD练习平台搭建 附虚拟机资源

文章目录 前言基本环境平台搭建系统安装平台部署环境启动实现效果 参考后记 前言 最近需要准备线下AWD了,但是没有那么多金币每天上BugKu的PVP在线AWD对战进行练习,于是想着可以自己搭建一个团队内部使用的AWD攻防平台,浅浅的记录一下 基本…

基于SSM框架的学生信息管理系统

项目介绍 主要功能: 基于Spring、SpringMVC、Mybatis框架LayUI完成了这么一套系统 ①角色登录:管理员登录、教师登录、学生登录 ②基本管理:学生管理、教师管理、班级管理、专业管理、教室管理 ③教务管理:课程管理、开课管理、课…

Packet Tracer - 综合技能练习

Packet Tracer - 综合技能练习 拓扑 地址分配表 32-1913 2^132^8*2^5 256*32 32个C 16 16 (1)172.16.128.0~172.16.143.255 255.255.240.0 (2)172.16.144.0~172.16.159.255 255.255.240.0 G0/0 172.16.159.254 G0/1 172.16.143.254 设备 接口 IP 地址 子网掩码 …

深入理解API网关Kong:初识Kong网关

深入理解API网关Kong:初识Kong网关 介绍 Kong是一个开源的、可扩展的、微服务 API 网关,它已经在全球范围内的各种规模的组织中广泛使用。Kong的设计原则是为了处理服务到服务的通信,通过提供功能丰富的平台,实现对API的全面管理…

Verilog基础之一、触发器实现

目录 一、触发器简介 1.1 触发器作用 1.2 触发器信号 1.3 使用规范 1.4 Vivado综合触发器 二、代码实现 三、综合结果 一、触发器简介 1.1 触发器作用 触发器是工程中基础的单元结构也是相当重要的组成,时序电路的实现离不开触发器。触发器是具有存储功能的器件&…

chatgpt赋能python:Python升序排序不用sort

Python 升序排序不用 sort 如果你在Python编程领域有多年的经验,那么你肯定对sort函数非常熟悉。sort是Python自带的用于列表或数组进行排序的函数。sort函数可以根据元素的值进行升序排序或降序排序,非常方便。但是,如果你需要在不使用sort…

【小白教程】Docker安装使用教程,以及常用命令!

【小白教程】Docker安装使用教程,以及常用命令! - 带你薅羊毛最近调试Docker内容,顺手记录一下,我常用的几个命令!这里总结一下,方便自己也同时方便大家使用! 内容慢慢完善更新!如有…

Linux 之JavaEE定制篇-搭建JavaEE 环境

Linux 之JavaEE 定制篇-搭建JavaEE 环境 注意 本篇软件链接提供 链接:https://pan.baidu.com/s/1y5qqQvWGQ-iz5M2WUrjD3A?pwdv5l2 提取码:v5l2 如果嫌自己下载麻烦或者难找可以考虑 概述 如果需要在Linux 下进行JavaEE 的开发,我们需要…

极速版手机蓝牙APP开发

极速版手机蓝牙APP开发 零、效果展示一、环境介绍二、开发过程控件布局代码逻辑蓝牙部分摇杆部分其他部分 三、整体优化四、结束语 零、效果展示 “这是一个充满科技风的手机蓝牙APP” 一、环境介绍 App Inventor是一款谷歌公司开发的手机编程软件,主要支持各种…

vue 实现 dragover拖拽到页面底部时元素自动向下滚动

公司要求做一个类似于企业微信的日程功能 然后呢 日程组件 需要能拖拽时间段创建 这里 我们使用 dragstartdragenddragover 记录被拖动位置完成的 如果没接触过 可以查看我的文章 vue记录鼠标拖拽划过位置并将划过位置变色 这里的话 其实可以在dragover中做操作 界面上 drag…

【C++ 基础篇:20】:类的 (const)static 静态成员:面试题:实现一个类,计算程序中创建出了多少个类对象?

本系列 C 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C的三大特性等&#…

区块链基础之共识机制

1.1共识机制 1.1.1核心定义 区块链上的共识机制主要解决由谁来构造区块,以及如何维护区块链统一的问题 1.1.2共识机制分类 1.1.3 共识算法 1.1.3.1 POW(工作量证明) 代表项目:BTC 由于不同的节点接受数据有所区别,为了保证数据一致性&a…

改善录音直播收音环境,只需一副监听耳机,丁一号G800S体验

现在很多人已经习惯了使用蓝牙耳机,但在平时直播、录音的时候,把蓝牙耳机当作耳返工具并不好用,经常有延迟高之类的问题,影响我们的录音效果和沟通体验,这时候需要配备一个监听耳机,才能够了解到实际的收音…

斐波那契数列题解(非递归c++方法实现)

在做信奥赛(信息学奥赛)中的for循环题目时,有一道斐波那契数列,想到的第一个方法是使用递归求解;因为以往题目最多使用的就是递归形式,但鉴于该题目在for循环题目堆,所以就思考了一些新方法&…