专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
51单片机
小弟初学单片机,有谁可以给我讲讲中断吗?
2019-07-15 23:43
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
11996
19
966
小弟才开始入手
单片机
最近学到了中断 可是对中断我只知道中断是怎么一个概念 其它的东西都一无所知 在这里请教各位了
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
爱我别走
2019-07-18 03:23
本帖最后由 爱我别走 于 2013-7-15 22:19 编辑
你好,我来用自己的话给你理一理,希望可以帮到你!
1.中断的理解
中断(interrupt),从字面上理解就是被中断,被打断的意思。比如,你正在写作业,突然有人敲门,你就要停止做作业,把作业的位置做个标记,然后去给开门,之后你根据做好的标记,继续写作业。程序也是这样,正常情况下,cpu顺序执行main函数里面的代码,从第一条代码到执行到最后一条代码,然后又返回到第一条代码往下执行,这样一直循环。突然cup接到中断请求(有人敲门),cpu就暂停当前执行的代码(停止做作业),做现场保护(把作业做标记),然后去执行中断代码(开门),执行完中断代码后,返回继续从被中断处往下执行正常代码(开完门继续做作业)。
2.单片机的中断源
中断源就是可以打断cup正常做事的东西。单片机有5个中断源,外部中断0(INT0),定时器0(Timer0),外部中断1(INT1),定时器1(Timer1),串口中断。
外部中断(INT0和INT1):简单理解就是通过外部输入来触发中断。
定时器中断(TImer0和Timer0):简单理解就是通过定时器,定时触发中断。
串口中断 :简单理解就是当接收到外部数据时触发中断。
3.怎样使用中断(以外部中断0为例)。
单片机有两个外部中断引脚,P3.2(对应INT0)和P3.3(对应INT1)。当这两个引脚出现低电平,或者下降沿时,就可以就触发单片机外部中断。
第一步,中断配置
/************************************************************
函数名 : INT0_Config
功能 :配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。
输入参数:
输出参数 :
************************************************************/
void INT0_Config(void)
{
IT0=1;//中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变);
EX0=1;//外部中断0的中断开关,每个中断源都有自己的中断开关。
EA=1;//打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。
}
第二步,中断服务,也就是cpu被中断后所要做的事。
/************************************************************
函数名 : Isr_INT0
功能 :中断服务
输入参数:
输出参数 :
************************************************************/
void Isr_INT0() interrupt 0 //这里的interrupt表明这个函数是中断函数,后面的标号表示是哪一个中断源产生的中断。(INT0)为0,
//Timer0为1,INT1为2,Timer3,串口中断为4。
{
// Add your code here
}
第三部 主函数
/************************************************************
函数名 : main
功能 :主函数
输入参数:
输出参数 :
************************************************************/
void main()
{
INT0_Config();//调用这个函数来配置外部中断
while(1)
{
//Add your code here
//CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,执行完成后,返回从断点处继续往下执行原
来的 代码。
}
}
加载中...
查看其它19个回答
一周热门
更多
>
相关问题
【东软载波ESF0654 PDS开发板活动】开箱
1 个回答
东软载波ESF0654 PDS开发板外部中断
1 个回答
东软载波ESF0654 PDS开发板高级控制定时器AD16C4T
1 个回答
用串口调试助手为什么只能在hex模式接收发送而在文本模式不行
9 个回答
触摸芯片SC02B/SC04B在地砖灯的设计方案
1 个回答
相关文章
51单片机与蓝牙模块连接
0个评论
51单片机的硬件结构
0个评论
基于51单片机的无线遥控器制作
0个评论
51单片机 AD转换
0个评论
51单片机数码管递增显示
0个评论
如何实现对单片机寄存器的访问
0个评论
基于51单片机的指纹密码锁
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
51单片机
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
你好,我来用自己的话给你理一理,希望可以帮到你!
1.中断的理解
中断(interrupt),从字面上理解就是被中断,被打断的意思。比如,你正在写作业,突然有人敲门,你就要停止做作业,把作业的位置做个标记,然后去给开门,之后你根据做好的标记,继续写作业。程序也是这样,正常情况下,cpu顺序执行main函数里面的代码,从第一条代码到执行到最后一条代码,然后又返回到第一条代码往下执行,这样一直循环。突然cup接到中断请求(有人敲门),cpu就暂停当前执行的代码(停止做作业),做现场保护(把作业做标记),然后去执行中断代码(开门),执行完中断代码后,返回继续从被中断处往下执行正常代码(开完门继续做作业)。
2.单片机的中断源
中断源就是可以打断cup正常做事的东西。单片机有5个中断源,外部中断0(INT0),定时器0(Timer0),外部中断1(INT1),定时器1(Timer1),串口中断。
外部中断(INT0和INT1):简单理解就是通过外部输入来触发中断。
定时器中断(TImer0和Timer0):简单理解就是通过定时器,定时触发中断。
串口中断 :简单理解就是当接收到外部数据时触发中断。
3.怎样使用中断(以外部中断0为例)。
单片机有两个外部中断引脚,P3.2(对应INT0)和P3.3(对应INT1)。当这两个引脚出现低电平,或者下降沿时,就可以就触发单片机外部中断。
第一步,中断配置
/************************************************************
函数名 : INT0_Config
功能 :配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。
输入参数:
输出参数 :
************************************************************/
void INT0_Config(void)
{
IT0=1;//中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变);
EX0=1;//外部中断0的中断开关,每个中断源都有自己的中断开关。
EA=1;//打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。
}
第二步,中断服务,也就是cpu被中断后所要做的事。
/************************************************************
函数名 : Isr_INT0
功能 :中断服务
输入参数:
输出参数 :
************************************************************/
void Isr_INT0() interrupt 0 //这里的interrupt表明这个函数是中断函数,后面的标号表示是哪一个中断源产生的中断。(INT0)为0,
//Timer0为1,INT1为2,Timer3,串口中断为4。
{
// Add your code here
}
第三部 主函数
/************************************************************
函数名 : main
功能 :主函数
输入参数:
输出参数 :
************************************************************/
void main()
{
INT0_Config();//调用这个函数来配置外部中断
while(1)
{
//Add your code here
//CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,执行完成后,返回从断点处继续往下执行原
来的 代码。
}
}
一周热门 更多>