/********************************************
interrp.h
***********************************************/
#ifndef _interrp_
#define _interrp_
void Interrp_int0_init(void);
void Interrp_int0_stop(void);
void Interrp_int1_stop(void);
void Interrp_int1_init(void);
#endif
/*****************************************************
interrp.c
************************************************/
#include <iom8v.h>
#include "interrp.h"
void Interrp_int0_init(void)
{
SREG=0X80;//全局中断开。
GICR|=(1<<INT0);//中断使能;
MCUCR=0X00;//0X00低电平中断;0x01:电平变化中断;
//0x02:下降沿;0x03:上升沿;
}
void Interrp_int1_init(void)
{
SREG=0X80;//全局中断开。
GICR|=(1<<INT1);//中断使能;
MCUCR=0X08;//0X00低电平中断;0x04:电平变化中断;
//0x08:下降沿;0x0c:上升沿;
}
void Interrp_int0_stop(void)
{
GICR&=~(1<<INT0);//中断使能;
}
void Interrp_int1_stop(void)
{
GICR&=~(1<<INT1);//中断使能;
}
/******************************************
main.c
*********************************************/
#include <iom8v.h>
#include "mytype.h"
#include "interrp.h"
#include "uart.h"
#pragma interrupt_handler Interrp_int_0:2
#pragma interrupt_handler Interrp_int_1:3
void Interrp_int_0(void)//外部中断0中断函数。
{uint16 i="0xffff";
Prints("Interrp0...",1);
Interrp_int0_stop();//停止外部中断0.
while(i--);
Interrp_int0_init();//开启外部中断0.
}
void Interrp_int_1(void)//外部中断1中断函数。
{uint16 i="0xffff";
Prints("Interrp1...",1);
Interrp_int1_stop();//停止外部中断1.
while(i--);
Interrp_int1_init();//开启外部中断1.
}
void main(void)
{
Uart_init();//串口初始化。
Interrp_int0_init();//外部中断0开启。
while(1);
}
工程如下:
文章评论(0条评论)
登录后参与讨论