Atmega16外部中断及应用.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
知识回顾与新课引入;外部中断及应用;中断原理;单片机中断的概念;中断的功能; ● 实时控制功能 所谓实时控制就是单片机能及时完成对受控对象的测量、计算、分析和控制,从而使受控对象保持良好的工作状态,并达到系统的使用要求。单片机的中断技术使控制参量能随时向计算机发出中断请求,以完成对数据的及时处理,因此它是单片机实现实时控制功能的一个必然要求。 ● 实现故障的及时发现 计算机在运行过程中,常会突然发生一些事先无法预料的故障。如:硬件故障、运算错误及程序故障。有了中断技术,计算机就能对这些故障及时发现并进行自行处理。 ● 实现人机联系 人们想对运行的计算机进行干预,必须先通过键盘发出中断请求,在获得了机器准许后,方可进行。中断技术使得人们可以随时进行人机联系,而不用先停机处理,然后再重新开机。;中断源; ● 模数转换完成中断 AT90LS8535单片机的模数转换完成中断用于标识单片机内部的模数转换器。当模数转换器的一次模数转换及数据更新完成时,ADIF置“1”,若此时ADIE(ADC中断使能位)和全局中断使能位都为“1”,则该中断被响应。 ● EEPROM中断 EEPROM中断是为AT90LS8535单片机内部的EEPROM写操作设置的,当EEPROM准备好,且EERIE(EEPROM准备好中断使能)和全局中断使能都为“1”,则该中断被响应。 ● 模拟比较器中断 模拟比较器中断发生在单片机的模拟比较器的输出发生变化时,这种变化可以是一个上升沿,可以是一个下降沿,也可以是一个电平变化,用户可以通过其控制寄存器和状态寄存器(ACSR)来设置。;中断的检测与中断的响应条件;设置中断请求触发器;设置中断屏蔽触发器;总中断是开放的 ;CPU在现行指令结束后响应中断 ;CPU对中断的响应;现场保护;中断服务程序;现场恢复;∫5.2 ATmega16的外部中断;5.2.1 外部中断源 ATmega16有3个外部中断源,分别对应PD2、PD3 和PB2,如表5-2所示。 ;; ● 状态寄存器(SREG) ● 通用中断控制寄存器(GICR) ● MCU控制寄存器(MCUCR) ● MCU控制和状态寄存器(MCUCSR) ● 通用中断标志寄存器(GIFR) ;状态寄存器——SREG;通用中断控制寄存器——GICR;MCU控制寄存器—— MCUCR ;MCU控制和状态寄存器—— MCUCSR;通用中断标志寄存器——GIFR;∫5.3 外部中断应用 ;例如: interrupt [2] void int_0 (void) { …… } interrupt [EXT_INT0] void int_0 (void) { …… } ;例1:开放INT0、INT1,并将INT0设置为上升沿触发中断、 INT1设置为上降沿触发中断。;例2:编程实现:上电时LED不显示,INT0发生后,LED显示“0”; INT1发生后,LED显示“1”;编程思路:开放INT0、INT1,并设置为边沿触发方式,在程序设计中,可以采用:;#include<mega16.h> //中断服务程序 interrupt[EXT_INT0]void int0(void) { PORTB=0x3f; } interrupt[EXT_INT1]void int1(void) { PORTB=0x06; } ;void main(void) { DDRD.2=0; PORTD.2=1; DDRD.3=0; PORTD.3=1; DDRB=0xff; DDRD.0=1; GICR=0xc0; MCUCR=0 GIFR=0xc0; SREG=0x80; while(1) ; };void main(void) { DDRD.2=0; PORTD.2=1; DDRD.3=0; PORTD.3=1; DDRB=0xff; DDRD.0=1; MCUCR=0 GIFR=0xc0; while(1) { if((GIFR&0x80)!=0) PORTB=0x06,GIFR=0x80; if((GIFR&0x40)!=0) PORTB=0x3f,GIFR=0x40;} };中断法和查询法的特点及差别:;应用课题:设计一段程序,用于统计INT0的中断次数;void main(void) { DDRD.2=0; DDRC=0xff; GICR=0x40; MCUCR=0 GIFR=0x40; SREG=0x80;

文档评论(0)

开心就好 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档