欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

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

作者:佚名   來源:本站原創   點擊數:  更新時間:2011年06月19日   【字體:
/***************************************

  取自周興華《AVR單片機C語言高級程序設計》

  進入INT1中斷的時候,再開啟全局中斷,

  這時候INT0中斷觸發,可以形成中斷嵌套

  ***************************************/

  #include<iom16v.h>

  #include<macros.h>

  #define uchar unsigned char

  #define uint unsigned int

  uint shu;

  /***************************************

  delay

  ****************************************/

  void delay_ms(uint k)

  {

  uint i,j;

  for(i=0;i<k;i++)

  for(j=0;j<570;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;shu<5;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;shu<10;shu++)

  {

  PORTD|=BIT(7);

  delay_ms(100);

  PORTD&=~BIT(7);

  delay_ms(100);

  }

  } 
關閉窗口

相關文章