外部中断0例程:这个原理是INT0中断,在中断程序中让有源蜂鸣发声。
这个是在线仿真的结果,可以看出中断程序已经进入。
程序如下:
/*
* GccApplication8.c
*
* Created: 2014-8-31 10:57:46
* Author: Administrator
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#define uchar unsigned char
#define uint unsigned int
//定义按钮、蜂鸣器及LED与端口的连接
#define button1 2//PIND|_BV(2)
#define sounder 7//PORTD|_BV(7)
#define redLED1 0//PORTC.0
#define blueLED1 1//PORTC.1
#define greenLED1 2//PORTC.2
#define yellowLED1 3//PORTC.3
#define redLED2 4//PORTC.4
#define blueLED2 5//PORTC.5
#define greenLED2 6//PORTC.6
#define yellowLED2 7//PORTC.7
void delay(uint k)
{ uint m,n;
for(m=0;m<k;m++)
{
for(n=0;n<1140;n++)
{;}
}
}
//interrupt[EXT_INT0] void int0_isr(void)
ISR(INT0_vect)
{ uint j;
for(j=0;j<1250;j++)
{
PORTD |=_BV(sounder);
delay(2);
PORTD ^=_BV(sounder);
delay(2);
}
}
int main(void)
{
DDRC=0xFF;
PORTC=0xFF;
DDRD=0xFF;//before 0xFB
PORTD=0xFF;
MCUCR=0x02;
GICR=0x60;
//asm("sei"); //SREG=0x80;
sei();
while(1)
{
PORTC=0x00;
delay(1000);
PORTC=0xFF;
delay(1000);
}
}
|