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

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

atmege16外部中斷程序

作者:韓冰   來源:本站原創   點擊數:  更新時間:2013年11月29日   【字體:

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

功能:演示ATMEGA16的3個外部中斷程序

編輯環境:ICCAVR

 

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

 

#include<iom16v.h>

#include<macros.h>

 

#define uint unsigned int

#define uchar unsigned char

 

#define beep_0 (PORTD&=~(1<<PD7))

#define beep_1 (PORTD|=(1<<PD7))

//蜂鳴器響

uint count;

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

三個外部中斷聲明,注意中斷向量號

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

#pragma interrupt_handler Exint0:2

#pragma interrupt_handler Exint1:3

#pragma interrupt_handler Exint2:19

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

系統延時函數

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

void delay(uint ms)

{

  uint i,j;

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

           {

             for(j=0;j<1140;j++);

           }

}

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

端口初始化每個外部中斷端口是固定的

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

void port_init()

{

 DDRA=0XFF;

 PORTA=0XFF;

 DDRB&=(0<<PB2);//INT2

 PORTB|=(1<<PB2);

 DDRD&=(0<<PD2);//INT0

 PORTD|=(1<<PD2);

 DDRD&=(0<<PD3);//INT1

 PORTD|=(1<<PD3);

}

 

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

外部中斷初始化

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

void INT_init()

{

 SREG=0X80;//打開全局中斷

 GICR|=(1<<INT0)|(1<<INT1)|(1<<INT2);//三個中斷使能

 MCUCR=(1<<ISC11)|(0<<ISC10)|(1<<ISC01)|(0<<ISC00);//INT0,INT1下降沿觸發

 MCUCSR=(0<<ISC2);//INT2下降沿觸發中斷

 

}

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

流水燈函數

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

void LED_1()

{

  uchar i;

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

   {

    PORTA=~BIT(i);

          delay(200);

   }

}

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

LED_2函數

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

void LED_2()

{

  PORTA=0X0F;

  delay(500);

  PORTA=0XF0;

  delay(500);

}

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

LED_3函數

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

void LED_3()

{

  PORTA=0X81;

  delay(500);

  PORTA=0X7E;

  delay(500);

}

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

外中斷0函數

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

void Exint0()

{

 LED_2();

}

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

外中斷1函數

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

void Exint1()

{

  LED_3();

}

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

外中斷2函數

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

void Exint2()

{

 DDRD=(1<<PD7);

 for(count=0;count<4;count++)

  {

   beep_0;delay(200);

         beep_1;delay(200);

  }

}

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

主函數

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

void main()

{

 port_init();//端口初始化

 INT_init();//中斷初始化

 while(1)// 當非0值時執行下面函數

  {

    LED_1();//流水燈函數

  }

}
 

關閉窗口

相關文章