单片机原理与应用(C51编程+Proteus仿真) 课件 5单片机中断系统_第1页
单片机原理与应用(C51编程+Proteus仿真) 课件 5单片机中断系统_第2页
单片机原理与应用(C51编程+Proteus仿真) 课件 5单片机中断系统_第3页
单片机原理与应用(C51编程+Proteus仿真) 课件 5单片机中断系统_第4页
单片机原理与应用(C51编程+Proteus仿真) 课件 5单片机中断系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机中断系统05

介绍中断的基本概念、基本结构、相关的特殊功能寄存器以及对中断系统的的初始化编程以及中断函数的设计。05AT89S52的硬件结构01单片机中断技术概述0203外部中断的仿真实例单片机中断系统结构5.1AT89S52单片机的硬件组成中断事件中断程序主程序中断说明:1、中断技术主要用于实时监测与控制,要求单片机快速响应与及时处理2、没有中断系统,单片机大量时间可能会浪费在查询是否有服务请求上

3、采用中断技术完全消除查询方式的等待,提高单片机工作效率和实时性是指CPU执行正常程序时,系统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件(执行中断服务程序),处理完毕(中断服务完成)后,CPU自动返回原程序的过程。05AT89S52的硬件结构01单片机中断技术概述0203外部中断的仿真实例单片机中断系统结构5.2AT89S52单片机的引脚中断系统内部结构图5.2AT89S52单片机的引脚一、中断源63

定时器/计数器T0(P3.4):5

定时器/计数器T2:4

定时器/计数器T1(P3.5)T2(P1.0)计满溢出触发T2EX(P1.1)下跳沿触发RXD(P3.0):接收完一帧数据触发计满溢出触发计满溢出触发

串行通信口TXD(P3.1):发送完一帧数据触发5.2AT89S52单片机的引脚二、中断请求3T0:TF0

硬件置位清零4T1:TF1

硬件置位清零5T2:TF2硬件置位、软件清零EXF2硬件置位、软件清零6

串行通信口RI

硬件置位、软件清零TI硬件置位、软件清零5.2AT89S52单片机的引脚三、中断允许=0,开关断开=1,开关闭合【例】

若允许片内2个外部中断,并禁止其他中断源的中断请求,写设置IE程序段。EX0=1; EX1=1;EA=1; IE=0x85;字节操作位操作总开关保留T2串口T1INT1T0INT05.2AT89S52单片机的引脚四、中断优先级=0,开关断开=1,开关闭合T2串口T1INT1T0INT0【例】两个外中断请求为高优先级,其他中断请求为低优先级。写设置IP程序段。PX0=1; PX1=1; IP=0x05;字节操作位操作思考:1.多个同级中断同时申请,CPU该优先响应哪个中断?2.低级中断正在执行,有高级中断申请,CPU该如何响应?5.2AT89S52单片机的引脚四、中断优先级T2串口T1INT1T0INT0自然优先级顺序:低高多个同级中断同时申请,CPU该优先响应哪个中断?12低级中断正在执行,有高级中断申请,CPU该如何响应?高级中断服务程序低级中断服务程序2级中断嵌套:

主程序低级中断高级中断两个不可寻址的“优先级激活触发器”指示某高优先级中断正在执行,所有后来中断均被阻止指示某低优先级中断正在执行,所有同级中断都被阻止,但不阻断高优先级的中断请求。5.2AT89S52单片机的引脚四、中断优先级多个中断同时申请时中断优先原则:(概括为四句话)

不同优先级的中断同时申请:先高后低相同优先级的中断同时申请:按自然顺序执行正处理低优先级中断又接到高级别中断:高打断低正处理高优先级中断又接到低级别中断:高不理低3一个中断正在执行,又一个同级中断申请,CPU该如何响应?5.2AT89S52单片机的引脚五、中断响应当满足下列条件时CPU才会响应中断1.有中断源发出的中断请求,即中断请求标志为“1”;2.总中断允许位EA=1,即CPU开中断;3.申请中断的中断源的中断允许位为“1”,即中断没有被屏蔽;4.无同级或更高级中断服务程序正在运行;5.当前的指令周期已经结束。当CPU响应中断后,由硬件自动执行了下列操作1.查询优先级激活触发器,对后来的同级或低级中断请求不予响应;2.保护断点,即PC的内容送入堆栈保存;3.清除可清除的中断请求标志位:IE0、IE1、TF0、TF14.中断入口地址送PC,进入相应的中断函数开始执行;5.断点出栈送给PC,开放同级或低级中断允许,返回主程序断点执行。5.2AT89S52单片机的引脚六、中断函数中断入口地址1序号中断源

入口地址(汇编语言用)

中断号(C语言用)1INT00x000302T00x000B13INT10x001324T10x001B35

串口0x002346T20x002B5中断服务函数2void函数名(void)interrupt

n

[usingm]{函数体语句}[usingm]项可省略n是中断号,n=0~5m=0~3RS0和RS1决定①中断函数没有返回值,也没有参数;②中断函数无需调用,由系统自动调用。③中断函数不能被其他函数调用;④中断函数应尽量简短;!5.3外部中断的仿真实例5.3.1

基于外部中断控制的LED灯仿真实例任务要求:按键(中断方式)控制LED亮灭,每按一次按钮,改变一次LED状态。1硬件电路设计软件设计2①触发方式:下降沿触发,IT0=1;②开放INT0中断允许:EX0=1;③优先级别:

PX0=1;④开放总中断:EA=1;⑤中断服务程序:LED取反5.3外部中断的仿真实例5.3.1

基于外部中断控制的LED灯仿真实例任务要求:按键(中断方式)控制LED亮灭,每按一次按钮,改变一次LED状态。软件设计2①触发方式:下降沿触发,IT0=1;②开放INT0中断允许:EX0=1;③优先级别:

PX0=1;④开放总中断:EA=1;⑤中断服务程序:LED取反#include<reg52.h>sbitLED=P1^0; //LED控制引脚/**************主函数************/voidmain(){IT0=1; //外中断0下降沿触发

EX0=1; //允许外中断0中断

PX0=1; //优先级设置,可选

EA=1; //总中断允许

while(1);}/********外部中断0中断服务函数****/voidEX_INT0(void)interrupt0using2{LED=!LED;//取反LED灯}5.3外部中断的仿真实例5.3.2入场人数检测仿真实例任务要求:设计入场人数检测计数装置,使用红外对射光电开关作为入场检测传感器,使用四位数码管作为显示器,显示入场人数。硬件电路设计1软件设计2①INT1初始化下降沿触发:IT1=1;开INT1中断允许:EX1=1;开放总中断:EA=1;②中断服务程序人数累加:PCount++;③显示:动态显示P1.3~P1.0位选P0段码段5.3外部中断的仿真实例5.3.2入场人数检测仿真实例任务要求:设计入场人数检测计数装置,使用红外对射光电开关作为入场检测传感器,使用四位数码管作为显示器,显示入场人数。#include<reg52.h>#defineucharunsignedchar #defineuintunsignedint ucharcodedisp_code[]={0xC0,0xF9,0xA4,

0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};uchardisBuf[4]; uintPCount=0;//记录人数voiddisp_delay();//用于显示的延时函数voidDisplayScan(void);//显示器扫描voiddisplay_update(uintdat);//显示voidmain(void){IT1=1; //下降沿触发

EX1=1; //外中断0允许

EA=1; //总中断允许

while(1){DisplayScan(); //数码管扫描

display_update(PCount);//更新缓存

}}voidEX0int(void)interrupt2using2{PCount++;//人数计数变量增加1}voiddisp_delay(){uinti;for(i=0;i<126;i++);}5.3外部中断的仿真实例5.3.2入场人数检测仿真实例任务要求:设计入场人数检测计数装置,使用红外对射光电开关作为入场检测传感器,使用四位数码管作为显示器,显示入场人数。voidDisplayScan(void){staticucharled_count=0;P0=0xff; //消隐

P1=(1<<(led_count%4)); //位选

P0=disp_code[disBuf[led_count%4]];//段选

disp_delay(); //延时

led_count++; //增加计数器的值}voiddisplay_update(uintdat){uchari;if(dat>9999)return;for(i=0;i<4;i++){disBuf[i]=dat%10;dat/=10;}}5.3.3简易火焰检测报警器仿真实例任务要求:当检测到火焰信号时,发声光报警;若检测到火焰但没有发出声光报警信号,则也可采用手动报警方式报警;采用按键取消报警信号。硬件电路设计1无光:P32高电平有光:P32低电平中断中断按键没按下:P33高电平按键按下:P33低电平P2.0高电平:蜂鸣器不响P2.0低电平:蜂鸣器不响P3.7查询取消按键5.3外部中断的仿真实例5.3.3简易火焰检测报警器仿真实例任务要求:当检测到火焰信号时,发声报警;若检测到火焰但没有发出声报警信号,则也可采用手动报警方式报警;采用按键取消报警信号。硬件电路设计1软件设计2①外部中断初始化下降沿触发:IT0=1;IT1=1;开中断允许:EX0=1;

EX1=1;开放总中断:EA=1;INT0中断:蜂鸣器响,LED亮②中断服务程序:报警③取消报警:查询P3.7优先级别:PX0=1;

PX1=1;INT1中断:蜂鸣器响,LED亮5.3外部中断的仿真实例5.3.3简易火焰检测报警器仿真实例任务要求:当检测到火焰信号时,发声报警;若检测到火焰但没有发出声报警信号,则也可采用手动报警方式报警;采用按键取消报警信号。软件设计2#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^7;//LED定义sbitbuzzer=P2^0; //蜂鸣器位定义sbitcancal=P3^7;//取消按键voiddelay(uintdat);//延时voidEX_init();//外部中断初始化函数voidmain(){ EX_init();while(1){if(cancal==1) //检查cancal是否按下

delay(10); //去抖

if(cancal==0)//检查cancal是否按下

{

buzzer=1;//取消报警

LED=1;//取消光报警

}}}

voidEX_int0()interrupt0{

buzzer=0;//有火焰报警LED=0;//光报警}voidEX1_int1()interrupt2{

buzzer=0;//按键按下报警LED=0;//光报警IE1=0;}//清按键抖动引起的标志位

5.3外部中断的仿真实例5.3.3简易火焰检测报警器仿真实例任务要求:当检测到火焰信号时,发声报警;若检测到火焰但没有发出声报警信号,则也可采用手动报警方式报警;采用按键取消报警信号。软件设计2voidEX_init(){IT0=1;//INT0下跳沿触发

EX0=1;//开INT0中断允许

PX0=1;//火焰检测高优先级

IT1=1;//INT1下跳沿触发

EX1=1;//开INT1中断允许

PX1=0;//按键报警低优先级

EA=1; //开总中断}voiddelay(uintdat){uinti,j;for(j=dat;j>0;j--) for(i=110;i>0;i--);}5.3外部中断的仿真实例5.3.4基于外部中断的行列式键盘仿真实例任务要求:使用数码管(共阳)显示4×4矩阵键盘中按下键的键号“0~F”。例如,1号键按下时,数码管显示“1”;采用中断扫描法获得键值。硬件电路设计1数码管:P1段码端4*4键盘:扫描法P2.7~P2.4:输出扫描码1111:没有按键按下与门输出1逐列输出0:按键按下与门输出0只要有按键按下,与门输出0,产生中断中断服务函数:识别键号5.3.4基于外部中断的行列式键盘仿真实例任务要求:使用数码管(共阳)显示4×4矩阵键盘中按下键的键号“0~F”。例如,1号键按下时,数码管显示“1”;采用中断扫描法获得键值。软件设计2#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳0~Fucharcodekey[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};//键值voidKey_value()interrupt0{ucharkey_scan[]={0xef,0xdf,0xbf,0x7f};//扫描uchari=0,j=0;for(i=0;i<4;i++){P2=key_scan[i];//输出扫描码

for(j=0;j<16;j++){if(key[j]==P2)//读键值,并判断键号

{

P1=seg[j];//显示闭合键

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论