51单片机 学习之旅[3] 中断-定时器

2023-11-18

中断 就是 单片机main运行的时候 如果外部传来一个信号,那么就暂时停止现在的正在处理的 事情,转而去处理 这个信号。

处理这个信号完毕以后 又返回去main去继续处理之前的


有个比较好的例子是,

你正在晾衣服

你正在晾衣服,突然水烧开了,你要去把烧水的火关了,然后回来继续晾衣服


中断是有优先级的,如果同时来了多个中断信号,那么就会按一定的优先级来处理


你正在晾衣服,突然水烧开了,这个时候 电话又来了,你要先去接个电话,然后去把烧水的火关了,然后回来继续晾衣服


先权自高到低的顺序即:
外部中断0>定时/计数0>外部中断1>定时/计数1>串行接口






外部中断:

看到外部中断,INT0 是 在P3.2

然而 这个INT0是输入 “副功能”,如果设置某个寄存器的话 这个副功能是不打开的,这个口只是一个P3 的IO口

这个寄存器 是IE

如果要打开这个功能 需要两个 打开IE寄存器的EA,和INT0位,赋值为1


做到这个还单单不够,外部中断还分中断方式,

 1、电平触发方式时,中断标志寄存器不锁存中断请求信号,当为这个 P3.2 INT0 口,为低电平的时候出发

  2、边沿触发方式时,中断标志寄存器锁存了中断请求。,当这个P3.2 INT0扣为 高电平转为低电平时出发


通过设置TCON这个寄存器来设置上面的触发方式。

IT0 为1的时候 使用电平触发方式,并设置IE0 = 0;

IE0 为1的时候,使用边缘触发方式,并设置IT0 = 0;


在做实验的时候如何 让 INT0口 变为低电平,用杜邦线,接到这个口,然后另外一头接到地GND


///定时器

定时器 通过设置TMOD TCON IE 来控制,

经过的过程是

1.设置TMOD   来设置计时器的模式

3.设置计数的初始值TL0 TH0

3.设置IE 启动中断模式

4.设置TCON   启动计时器


其中 上面的过程3,4都可以打乱,

/**
每秒闪烁一次LED
**/
#include <REGX52.H>

#define MAX_INT 4394967295

sbit led = P1^0;

unsigned int count = 0;

void main(){
	//设置计时器,
	TMOD = T0_M0_;
	//设置时间,50000次一次中断(一个机器周期 50微秒)那么一次中断 下面的就 50ms;
	//通常 为了方便计算 ,和 节省资源 这里设置50ms 最合适,
	TH0 = (65536-50000)/256;
	TL0 = (65536-50000)%256;

	//启动计时器0
	TR0 = 1;

	//开启中断
	EA = 1;
	ET0 = 1;
	
	while(1);
}

void flash() interrupt 1{

	count++;
	if(count > MAX_INT){
		count = 0;
	}
	
	//因为 这里设置了 50ms 一次中断,所以基本20次 就是一秒
	if(count%20 == 0){
		led = !led;//闪烁
	}
}	


发现 会有现象因为计数器只有65536个,而一个时钟周期 是只有1微秒,这个根本不够一秒的计数,所以在自己 的那里 在做个%20的判断来计算,

现在按 50ms一次来算是最省资源的

总的来说 用到3个寄存器

IE 控制中断开关

TCON 控制中断启动 

TMOD 控制 中断的模式,


关于 计时 :

当一个 一个机器周期(等于12个震荡周期,一个震荡周期 等 1/晶振的频率,单位是微秒)过后,计数器就会+1,然后通过这样来计算,

如果一个 晶振是12MHZ 的那么一个 机器周期 就是 1ms,也就是说 计数器 每+1000 就是秒。




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机 学习之旅[3] 中断-定时器 的相关文章

  • 线程复习(针对面试)

    问题一 请说明一下进程和线程的区别 一个进程运行要给他分配系统资源 维护他的代码段和数据段 堆栈等 而线程跟他共享这些 节俭的多任务操作方式 典型的UNIX Linux进程可以看成只有一个控制线程 一个进程在同一时刻只做一件事情 有了多个控
  • (附源码)spring boot西安市中小学生护眼平台开发 毕业设计 080855

    springboot西安市中小学生护眼平台开发 摘要 俗话说 眼睛是心灵的窗户 可在这个科学技术日新月异发展的大千世界里 戴眼镜的人却随处可见 特别是我国在校学生3 2亿 平均近视率超过60 其中小学生为35 初中生为65 高中生达79 更

随机推荐

  • CAD螺纹lisp程序_公英制螺纹标注方法及加工大全

    普通螺纹的标记 螺纹公差带代号的标注在螺纹代号之后 中间用 分开 如果螺纹的中径公差带代号不同 则分别注出 前者表示中径公差带 后者表示顶径公差带 如果中径公差带与顶径公差带代号相同 则只标注一个代号 例如 M10 5g6g M10 1 6
  • shell是什么?ssh 与 git bash linux或cmd与 shell区别

    什么是shell Bash介绍及内容 1 认识Bash这个Shell 管理整个计算机硬件就是操作系统的内核 而内核是需要被保护的 不能让用户随便去修改不然系统崩溃了怎么办 所以一般用户只能通过Shell来跟内核沟通 shell的定义 什么是
  • ajax上传netcore插件,.NET Core Web 文件分片上传,带进度条实用插件

    git CMD命令 git initgit add 添加文件至暂存区 git commit m 描述性语句 随意写即可 git branch gh pages 创建仓库分支 git checkou 使用ARM模板部署自动扩展的Linux V
  • canvas圆形和正方形碰撞检测

    1 圆形碰撞检测 弧度转角度 function d2a n return n Math PI 180 角度转弧度 function a2d return n 180 Math PI window onload function let oC
  • 技术干货的选择性问题

    今天准备整理下微信的收藏夹 因为我发现好像在里面已经收藏了太多文章 这些收藏的文章并不是已经读过觉得不错故而收藏的 而是全没读过的 而其中的很大部份都是所谓的技术干货型文章 因为这类文章一方面比较长 另一方面比较费脑 所以我总是习惯在碰到的
  • 微软2013暑假实习生笔试题

    自己mark一下 以作后备 下面提交原文链接 原文博客 部分题目答案不确定 会持续更新 1 Which of the following calling convention s support s supportvariable leng
  • 报警服务器物理内存,从内存告警谈ESXi主机内存管理——内存构成

    在 如何处理ESXi主机的黄色告警 一文中我们提到了在没有冗余的管理网络或启用SSH的情况下 ESXi主机图标右下方将会出现黄色的告警 除了上述配置导致告警之外 另一种常见的告警就是ESXi主机的内存使用率过高 ESXi主机内存告警 当ES
  • osgEarth的Rex引擎原理分析(六十七)TileNode中的_surface(SurfaceNode)作用是什么

    目标 五十五 中的问题138 每个瓦片TileNode都有一个 surface SurfaceNode 这里面会存放瓦片的几何信息 drawable TileDrawable 这个几何信息会传给DrawTileCommand 用于绘制该瓦片
  • protobuf的安装使用

    简介 Protobuf是Protocol Buffers的简称 它是Google公司开发的一种数据描述语言 是一种轻便高效的结构化数据存储格式 可以用于结构化数据串行化 即序列化 它很适合做数据存储或 RPC 数据交换格式 可用于通讯协议
  • 转 使用Android Studio 创建第一个Android 应用

    转自 https blog csdn net u013926216 article details 81977815 一 使用Android Studio 开发Android 应用的流程 二 一个简单的登陆界面程序 程序功能说明 创建And
  • 有关win10的C:/ProgramFiles\WindowsApps\文件系统错误(12007)问题

    win10电脑开机的时候 突然出现这二个系统错误 C ProgramFiles WindowsApps b9eced6f asusbatteryhealthcharging 1 0 7 0 86 qmba6 以及 C ProgramFile
  • mysql 如何转换数据结构_如何将SQL查询结果转换为PANDAS数据结构?

    在这个问题上的任何帮助将不胜感激 所以基本上我想对我的SQL数据库运行查询并将返回的数据存储为Pandas数据结构 我已附上查询代码 我正在阅读有关Pandas的文档 但是在识别查询的返回类型时遇到了问题 我试图打印查询结果 但没有提供任何
  • 从零开始用C语言实现图片解码播放器(有源码)

    1 项目描述 1 1 项目硬件平台介绍 1 硬件平台 九鼎公司的X210开发板 S5PV210 Cortex A8内核 2 软件平台 linux2 6 35 7内核 直接基于linux API操作 1 2 项目功能介绍 1 调用编译好的可执
  • java---模块化

    模块的基本使用 模块的基本使用步骤 创建模块 按照以前的讲解方式创建模块 创建包 创建类 定义方法 为了体现模块的使用 我们创建2个模块 一个是myOne 一个是myTwo 在模块的src目录下新建一个名为module info java的
  • hard_socnet靶机(vulnhub)

    这个靶机的难度很高 慢慢摸索 接触新知识 首先这个靶机是2020 年的 我们如今2022年 2021出现了新的内核漏洞 CVE 2021 3493 我们这里可以利用 也成功了 但是 如果我们就在2020做此靶机怎么办呢 这里分享了两种打靶思
  • c#文件名去掉后缀_C# 怎么去掉文件名后缀

    public class test private static List getData String path List list new ArrayList lt gt try File f new File path File fs
  • FairGUI 坐标和Unity坐标转换

    一 FairGUI教程文档 https www bookstack cn read fairygui unity md 坐标系统 坐标原点 FairyGUI是以屏幕左上角为原点的 Unity的屏幕坐标是以左下角为原点的 一般这个转换都不需要
  • CNN卷积神经网络实现手写数字识别(基于tensorflow)

    1 1卷积神经网络简介 文章目录 1 1卷积神经网络简介 1 2 神经网络 1 2 1 神经元模型 1 2 2 神经网络模型 1 3 卷积神经网络 1 3 1卷积的概念 1 3 2 卷积的计算过程 1 3 3 感受野 1 3 4 步长和参数
  • python3_面向对象

    面向对象 魔术方法 描述器Descriptors 槽位slots 面向对象 OOP Object Oriented Programing 面向对象是认识世界的一种方法论 一切皆对象 类class 抽象的概念 一类具有共同特征的事物的集合 用
  • 51单片机 学习之旅[3] 中断-定时器

    中断 就是 单片机main运行的时候 如果外部传来一个信号 那么就暂时停止现在的正在处理的 事情 转而去处理 这个信号 处理这个信号完毕以后 又返回去main去继续处理之前的 有个比较好的例子是 你正在晾衣服 你正在晾衣服 突然水烧开了 你