|
在中断服务程序里已经关掉中断, 并清除了中断标志位
=================================INT0_M16.c==========================================================
#include "public.h"
#include "Delay_7.37M.h"
#include "Usart_M16.h"
#include "Timer0_M16.h"
#include "INT0_M16.h"
#include "App.h"
#define INT0_DDR DDRD
#define INT0_PORT PORTD
#define INT0_PIN PIND
#define INT0_IO 2
unsigned char flg_Int0_In;
void Int0_Init(void)
{
GICR|= (1<<6); //enable int0
//设置中断引脚为输入(示例为M16的PD2)
INT0_DDR&=~(1<<INT0_IO);
INT0_PORT|=(1<<INT0_IO);
MCUCR|= (1<<1); //mod set --下降沿方式
MCUCR&= ~(1<<0);
}
#pragma interrupt_handler ISR_Int0:iv_INT0
void ISR_Int0(void)
{
flg_Int0_In=1;
GICR&= ~(1<<6); //disable int0 -- 关闭中断
}
void Int0_DoWithInt(void)
{
UART_Puts("int0.. ");
GIFR|= (1<<6); //通过写入"1"到GIFR.6来清零中断int0的标志位
GICR|= (1<<6); //enable int1
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|