📄 外部中断int0例子.c
字号:
/***************************************************
CodeWizardAVR V1.24.8d Professional
//PD2插上跳线帽/PD3插上跳线帽/PC插上跳线帽,其他的开路
//使用内部时钟
//按动SW按键就可以打开/关闭蜂鸣器
//本例子没有考虑太多的按键防抖动功能
***************************************************/
#include <mega8.h>
interrupt [2] void INT0_isr(void) //INT0的中断向量是2,请参考M48数据手册的48页
{
PORTD.3=~PORTD.3; //电平取反
// EIFR|=1; //清除INT0中断触发标记,防止按键抖动(M48)
GIFR|=0x40;
}
void main(void)
{
PORTD.2=1;
DDRD.2=0; //设置INT0端口为输入,上拉电阻有效
PORTD.3=0;
DDRD.3 =1; //设置PD3输出低电平,准备驱动蜂鸣器
// EIMSK|=1; //打开INT0中断(M48)
// EICRA|=3; //INT0上升沿触发(M48)
GICR|=0x40;
MCUCR|=3;
#asm("sei") //插入汇编语句,打开全局中断
while (1) //循环,等待中断
{
#asm("nop") //空操作的汇编代码,等待中断发生
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -