?? int0_int1.c
字號:
//平時D1~D8 8個LED閃爍,點亮/熄滅時間約500ms。一旦INT1觸發中斷后,蜂鳴器發出10s
//的報警聲。在INT1的中斷服務子函數中,再置為總中斷使能位I,這樣INT1中斷服務子函
//數中,即可進行INT0中斷嵌套。當INT0觸發中斷時,進入INT0中斷服務子函數,將8個
//LED的一半熄滅。
#include<iom16v.h>
#define uchar unsigned char
#define uint unsigned int
#define BZ_0 (PORTD=PORTD&0xdf) //定義蜂鳴器端口為低電平
#define BZ_1 (PORTD=PORTD|0x20) //定義蜂鳴器端口為高電平
uint cnt;
void delay_ms(uint k)
{
uint i,j;
for(i=0;i<k;i++)
{
for(j=0;j<1140;j++);
}
}
void main(void)
{
DDRB=0xff;
PORTB=0xff;
DDRD=0xf3;
PORTD=0xff;
MCUCR=0x0a;
GICR=0xc0;
SREG=0x80;
while(1)
{
PORTB=0x00;
delay_ms(500);
PORTB=0xff;
delay_ms(500);
}
}
#pragma interrupt_handler int0_isr:2 //INT0 中斷服務子函數
void int0_isr(void)
{
PORTB=0x0f; //將8個LED的一半熄滅
delay_ms(2000); //延時2s
}
#pragma interrupt_handler int1_isr:3 //INT1 中斷服務子函數
void int1_isr(void)
{
SREG=0x80; //在INT1中斷中再次使能中斷
for(cnt=0;cnt<5000;cnt++) //蜂鳴器發聲10s
{
BZ_1;
delay_ms(2);
BZ_0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -