大家好,欢迎来到IT知识分享网。
博主福利:100G+电子设计资料合集https://dwz.date/fyQa
一、简述
中断,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,再返回到暂停处(断点)继续执行原来的程序。
二、中断请求标志控制寄存器TCON
三、中断请求标志控制寄存器SCON
四、中断允许寄存器IE
五、中断函数
关键字using 后的m 是所选择的寄存器组,取值范围是0~3。
using m这部分通常可以省略,由编译器自动选择一个寄存组。
举例:
六、完整例子
1、效果:当按键按下时,蜂鸣器就会响,不松开就一直响,松开关闭。
(主程序死循环,通过CPU中断可以暂时中断,先执行其他任务,然后再回来继续执行被中断的任务。例子中开启外部中断0,中断方式为下降沿触发,比如控制端口原来是高电平的,按下按钮使控制端口变为低电平,高电平到低电平有个下降过程,下降沿触发中断0,调用中断服务处理函数,蜂鸣器响。中断服务处理函数有个循环检测直到按钮释放才关闭蜂鸣器,退出中断服务处理函数,控制端口恢复为高电平。)
2、Keil文件结构
3、仿真电路
4、alarm.c文件
#include<reg51.h> #define uint unsigned int #define uchar unsigned char sbit P3_2=P3^2;//将P3^2定义为中断0控制口 sbit beep=P3^3;//将P3^3定义为蜂鸣器控制口 void main() { EA=1;//开许总中断 EX0=1;//开外部中断0 IT0=0;//中断触发方式为低电平触发 while(1) //主程序一直在死循环,外部中断可以暂时执行中断处理函数 {} } // //函数名:int0rupt() interrupt 0 //功能:外部中断0中断响应程序 //调用函数: //输入参数: //输出参数: //说明:当P3^2口为低电平时进入响应程序 // void int0rupt() interrupt 0//当P3^2键口为低电平时 { beep=0;//开蜂鸣器 while(P3_2!=1);//当P3^2口置高检测,就是按钮不释放蜂鸣器就一直响 beep=1;//关蜂鸣器 }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/140761.html