微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ATmega16L-----外部中断0,1中断嵌套

ATmega16L-----外部中断0,1中断嵌套

时间:08-22 来源:互联网 点击:
/***************************************  取自周兴华《AVR单片机C语言高级程序设计》  进入INT1中断的时候,再开启全局中断,  这时候INT0中断触发,可以形成中断嵌套***************************************/  #includeiom16v.h>  #includemacros.h>  #define uchar unsigned char  #define uint unsigned int  uint shu;  /***************************************  delay  ****************************************/  void delay_ms(uint k)  {  uint i,j;  for(i=0;ik;i++)  for(j=0;j570;j++);  }  /****************************************  main  ****************************************/  void main(void)  {  DDRB=0xff;  PORTB=0XFF;  PORTD=0XFF;  DDRD=0XF3; //将PD2,PD3设置为输入 即INT0,INT1  MCUCR=0X0A; //INT1,INT0 设置为下降沿触发  GICR=0XC0; //使能INT1,INT0 中断  SREG=0X80; //使能总中断  while(1)  {  PORTB=0X00;  delay_ms(100);  PORTB=0XFF;  delay_ms(100);  }  }  /*****************************************  INT0 ISR  *****************************************/  #pragma interrupt_handler int0_isr:2  void int0_isr(void)  {  for(shu=0;shu5;shu++)  {  PORTB|= BIT(1);  delay_ms(60);  PORTB=~BIT(1);  delay_ms(60);  }  }  /***************************************  INT1 ISR  ***************************************/  #pragma interrupt_handler int1_isr:3  void int1_isr(void)  {  SREG=0X80; //使能全局中断  for(shu=0;shu10;shu++)  {  PORTD|=BIT(7);  delay_ms(100);  PORTD=~BIT(7);  delay_ms(100);  }  } 

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top