外部中断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);
- }
- }
|