atmege16外部中斷程序
功能:演示ATMEGA16的3個外部中斷程序
編輯環境:ICCAVR
******************************************/
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define beep_0 (PORTD&=~(1<
#define beep_1 (PORTD|=(1<
//蜂鳴器響
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
{
for(j=0;j<1140;j++);
}
}
/**************************************
端口初始化每個外部中斷端口是固定的
****************************************/
void port_init()
{
DDRA=0XFF;
PORTA=0XFF;
DDRB&=(0<
PORTB|=(1<
DDRD&=(0<
PORTD|=(1<
DDRD&=(0<
PORTD|=(1<
}
/***********************************
外部中斷初始化
*******************************/
void INT_init()
{
SREG=0X80;//打開全局中斷
GICR|=(1<
MCUCR=(1<
MCUCSR=(0<
主站蜘蛛池模板:
井研县|
临澧县|
绥江县|
泾川县|
渑池县|
汝南县|
翼城县|
武陟县|
岑巩县|
彰武县|
台安县|
新郑市|
黄石市|
项城市|
阜南县|
凤山县|
水富县|
清镇市|
监利县|
慈溪市|
平山县|
抚宁县|
广宁县|
怀仁县|
山阴县|
西平县|
河东区|
大新县|
综艺|
开阳县|
桦南县|
巍山|
汶川县|
天津市|
五台县|
瑞昌市|
延川县|
馆陶县|
新河县|
中超|
天津市|
}
/*****************************************
流水燈函數
****************************************/
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<
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();//流水燈函數
}
}
關鍵詞:
atmege16外部中
評論