| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【51单片机】外部中断 -> 正文阅读 |
|
[嵌入式]【51单片机】外部中断 |
这里的触发条件是指:低电平或者下降沿,满足条件后会才执行中断函数。
?来看图: ?上图从左到右介绍:1:中断类型与中断号
?高优先级可以打断低优先级,但低优先级不能打断高的。 ?? 中断号不可更改,代表了中断类型,这是51单片机为了区别不同的中断专门引入的 2:外部中断触发方式 ?????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??这里以外部中断0为例,当 IT0 = 1 时为下降沿触发方式 ?????????????????????????????????????????? IT0 = 0 时为低电平触发方式 3:寄存器位4.中断开关和总开关?左边是中断号的开关,用哪个就闭合哪个,比如使用外部中断0,那么就要设置EX0 = 1; 右边是总中断开关,不管你用哪个中断,都需要打开总开关,也就是 EA = 1; 5:中断优先级控制位?中断的优先级别设置,还是以外部中断0为例:PX0 = 1 时为高优先级 ?????????????????????????????????????????????????????????????????????????? PX0 = 0 时为低优先级 同时触发时,单片机会优先执行高优先级的中断。 如果只有一个中断,可以不进行设置,默认为 PX0 = 0 ; 来看代码(以外部中断0为例):
一、这是外部中断0初始化的子程序: ?1.把所有开关打开: EX0 = 1; ? EA = 1; 这里我没有设置优先级【 PX0 = 1或者0 】,因为我程序只有一个中断,已经默认为PX0 = 0;当然进行设置也不会有问题。 2.然后设置触发方式:IT0 = 0; 低电平触发,外部中断0对应 I/O 口为P3^2,在单片机开发板上也就是K3按键: ?当按键按下,就是低电平,然后中断条件满足并且触发中断。 二、这是主程序: ?一方面中断初始化程序在等待中断条件触发,另一方面主程序在不断执行 P2 = 0Xff; 直到触发中断才会打断主程序执行。 三、这是中断函数: ?里面我只写了一条LED全部点亮的程序,当满足设置的 低电平触发 (IT0 = 0)条件后,就会进来执行这个程序。在执行该程序过程,会中断主程序main运行,只有中断程序执行完成而且中断条件已经不满足,才会退出中断,然后继续回去执行主程序。 这里有两个点值得提醒一下:???????? 1. INT0 这个是名字用户自定义的,跟子程序一样,换句话说你觉得什么名字好听都可以取,但是要符合取名字规范(不知道的可以百度 C语言的命名规则 )。建议一般要养成良好习惯,取一些一看就知道的。 2.中断号。在文章开头第一个表格有,中断号是固定的,名字不能改变,这是51单片机区别不同中断的重要途径。比如:外部中断0就是interrupt 0;外部中断1就是 interrupt 2;这都是对应好的。 而且如果你在打开的是外部中断0(EX0 = 1)开关,但是使用的中断号是外部中断1(interrupt 2),那么该中断也是无效的。只有外部中断0(EX0 = 1)对应 中断号(interrupt 0)才能正常使用中断。 ————————————————————分割线———————————————————— 关于中断,举个栗子: 小红在家洗碗,这个时候快递送到门口了,小红放下手中的活,去开门拿快递,拿完快递继续回来洗碗。 小红在家洗碗和快递送上门的过程是同时进行的,也称并行 ;中断在等待条件触发的过程中也是如此,在中断条件没有满足之前,中断会一直扫描等待,但它不会影响主程序和占用主程序内存。 小红去拿快递的过程,会停止手中工作;这里相当于执行中断的过程,执行中断会打断主程序运行,优先去执行中断的内容。 小红拿完快递后才会回来继续洗碗;这里相当于中断执行完成,然后继续回去执行未完成的主程序。 关于中断,就讲这么多吧。谢谢观看! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:40:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |