- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
知识回顾与新课引入 C语言的控制流? 单片机开发程序的一般结构和程序执行顺序? C语言中函数的定义和调用规则? 当我们在做某事时,电话或门铃响了,我们会如何处理和回应? 外部中断及应用 中断原理 ATmage16的外部中断 外部中断应用 中断原理 单片机中断的概念 中断的功能 中断源 中断的检测与中断的响应条件 CPU对中断的响应 ATmega16的中断系统 中断的检测与中断的响应条件 设置中断请求触发器 设置中断屏蔽触发器 总中断是开放的 CPU在现行指令结束后响应中断 CPU对中断的响应 现场保护 中断服务程序 现场恢复 ATmega16的外部中断 外部中断源 外部中断源的控制 外部中断源 ATmega16有3个外部中断源,分别对应PD2、PD3 和PB2 ● 状态寄存器(SREG) ● 通用中断控制寄存器(GICR) ● MCU控制寄存器(MCUCR) ● MCU控制和状态寄存器(MCUCSR) ● 通用中断标志寄存器(GIFR) 状态寄存器——SREG 通用中断控制寄存器——GICR MCU控制寄存器—— MCUCR MCU控制和状态寄存器—— MCUCSR 通用中断标志寄存器——GIFR 外部中断应用 CVAVR编译器的中断操作: CVAVR 的C编译器支持在C源程序中直接开发中断程序。当用户使用该功能时,必须在中断服务子程序定义之前用“interrupt”语句通知编译器,该子程序是一个中断操作。 用“interrupt”语句定义中断服务子程序的格式为: interrupt [中断向量号或中断向量号的宏定义] void handler(中断函数名) (void) 其中,中断函数名为用户定义的中断服务子程序的名称,而中断向量号则用于表明中断的类型。 例如: interrupt [2] void int_0 (void) { …… } interrupt [EXT_INT0] void int_0 (void) { …… } 例1:开放INT0、INT1,并将INT0设置为上升沿触发中断、 INT1设置为上降沿触发中断。 #includemega16.h void main(void) { DDRD.2=0; DDRD.3=0; GICR=0xc0; MCUCR=0 GIFR=0xc0; SREG=0x80; while(1) ; } 例2:编程实现:上电时LED不显示,INT0发生后,LED显示“0”; INT1发生后,LED显示“1” 编程思路:开放INT0、INT1,并设置为边沿触发方式,在程序设计中,可以采用: 中断法 查询法 #includemega16.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((GIFR0x80)!=0) PORTB=0x06,GIFR=0x80; if((GIFR0x40)!=0) PORTB=0x3f,GIFR=0x40;} } 中断法和查询法的特点及差别: 中断法特点: ▲ 需要开放中断的“总开关”和“分开关”; ▲ 中断响应速度快; ▲ 需要定义中断服务程序才能进行相关处理。 ▲ 不需要软件清中断标志位 查询法特点: ▲ 不需要开放中断的“总开关”和“分开关”; ▲ 标志位检测不及时,因而响应速度慢; ▲ 不需要定义中断服务程序也能进行相关处理。 ▲ 需要软件清中断标志位(写“1”清零)
文档评论(0)