160 likes | 378 Vues
任务 4. ATmega16 外部中断及定时器控制系统设计. 任务内容. 1 、单片机中断系统介绍 2 、项目 1 利用外部中断控制 LED 3 、单片机定时器介绍 4 、项目 2 ATmega16 脉冲计数系统设计 5 、项目 3 ATmega16 直流电机 PWM 调速系统设计 6 、项目 4 电子时钟系统设计. 1 、单片机中断系统介绍. 1.1 中断的概念
E N D
任务4 ATmega16外部中断及定时器控制系统设计
任务内容 1、单片机中断系统介绍 2、项目1 利用外部中断控制LED 3、单片机定时器介绍 4、项目2 ATmega16脉冲计数系统设计 5、项目3 ATmega16直流电机PWM调速系统设计 6、项目4 电子时钟系统设计
1、单片机中断系统介绍 1.1 中断的概念 所谓中断是指CPU正在处理某件事时,外部发生了某一事件,请求CPU迅速处理,CPU暂时中断当前的工作,转入处理所发生的事件,处理完毕后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断。 实现这种功能的部件称为:中断系统。 产生中断的请求源称为:中断源。
1.2 中断的响应步骤 1、保护断点 2、寻找中断入口 3、执行中断处理程序 4、中断返回
1.3 中断嵌套 在ATmega16单片机中,默认是禁止中断嵌套的。这是因为任一中断发生时全局中断使能位I被清零,从而禁止了所有其他的中断。 如果要实现中断嵌套,必须用软件置位I来实现。此时所有的中断都可以中断当前的中断服务程序。待新的中断处理完毕,再返回到被中断了的中断服务程序继续执行。
1.4 中断优先级 为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序,硬件将中断源分为若干个级别。
2、外部中断控制系统 ATmega16的外部中断通过引脚INT0、INT1与INT2触发。只要使能了中断,即使引脚INT0..2配置为输出,只要电平发生了合适的变化,中断也会触发。这个特点可以用来产生软件中断。 通过设置MCU控制寄存器MCUCR与MCU控制与状态寄存器MCUCSR,中断可以由下降沿、上升沿,或者是低电平触发(INT2为边沿触发中断)。
2.1 外部中断相关寄存器 MCU控制寄存器-MCUCR MCU控制寄存器包含中断触发控制位与通用MCU功能。 Bit3,2-ISC11,ISC10:中断触发方式控制1Bit1与Bit0 外部中断1由引脚INT1激发。
Bit1,0-ISC01,ISC00:中断触发方式控制0Bit1与Bit0 外部中断0由引脚INT0激发。
MCU控制与状态寄存器-MCUCSR Bit6-ISC2:中断2触发方式控制 异步外中断2由外部引脚INT2激活,若ISC2写0,INT2的下降沿激活中断。若ISC2写1,INT2的上升沿激活中断。INT2的边沿触发方式是异步的。
通用中断控制寄存器-GICR Bit7-INT1:使能外部中断请求1 当INT1为“1”,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。 Bit6-INT0:使能外部中断请求0 当INT0为“1”,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。 Bit5-INT2:使能外部中断请求2 当INT2为“1”,而且状态寄存器SREG的I标志置位,相应的外部引脚中断就使能了。
通用中断标志寄存器-GIFR Bit7-INTF1:外部中断标志1 INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。 Bit6-INTF0:外部中断标志0 INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。 Bit5-INTF2:外部中断标志2 INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF2。进入中断服务程序之后该标志自动清零。此外,标志位也可以通过写入”1”来清零。注意,当INT2中断禁用进入某些休眠模式时,该引脚的输入缓冲将禁用。这会导致INTF2标志设置信号的逻辑变化。
2.3 软件设计 AVR单片机中断服务函数格式(C语言) #pragma interrupt_handler 中断服务函数名:向量号 void中断服务函数名(void) { 代码 }