/*************************************************************************************
* 项目名: KF8FXXX-INTX_Interrupt_TEST
* 开发环境:ChipON IDE
* 版本:
* 使用芯片:KF8F312 使用于KF8FXXX、KF8SXXXX
* 作者:上海芯旺微电子有限公司
* 功能简述: 芯片外部中断的使用 包括INT0、INT1、INT2
*************************************************************************************/
#include<KF8F312.h>
//#define INT0 // 使能INT0中断
//#define INT1 // 使能INT1中断
//#define INT2 // 使能INT2中断
/*********************宏定义******************************/
#define uchar unsigned char
#define uint unsigned int
#define LED1 P16 // 对应Demo板上的D3
/*********************宏定义结束*********************** ***/
/************************
* 函数名 :init_fun
* 函数功能:初始化函数
* 入口参数:无
* 返回 :无
************************/
void Init_fun()
{
OSCCTL = 0x60; //设置系统时钟为8M
/*********端口初始化***********/
TR0 = 0x0c; //设置P03 P02(INT0) 端口只能设置为输入
TR1 = 0x0c; //P12(INT1)/P13(INT2)口为外部中断引脚,需配置为数字输入口设置P1端口为输出
TR2 = 0x00; //设置P2端口为输出
P0 = 0x00;
P1 = 0x00;
P2 = 0xF0;
ANSEL = 0; //配置P12口为数字口
ANSEH = 0;
#ifdef INT0
INT0IF = 0; // 清中断标志位
INT0SE = 0; // 0 :下降沿 1:上升沿
INT0IE = 1; // 使能中断
PUIE = 0;
#endif
#ifdef INT1
INT1IF = 0; // 清中断标志位
INT1SE = 0; // 0 :下降沿 1:上升沿
INT1IE = 1; // 使能中断
PUIE = 1; // INT1 属于外部中断
#endif
#ifdef INT2
INT2IF = 0; // 清中断标志位
INT2SE = 0; // 0 :下降沿 1:上升沿
INT2IE = 1; // 使能中断
PUIE = 1; // INT2 属于外部中断
#endif
AIE = 1; // 使能总中断
}
/************************
* 函数名 :Delay
* 函数功能:短时间延时
* 入口参数:无
* 返回 :无
************************/
void Delay()
{
uchar i = 0,j = 0;
for (i = 0;i < 200;i++)
for (j = 0;j < 200;j++);
}
void main()
{
Init_fun();
while (1)
{
P11 = !P11; // 改变P11口电平
Delay();
}
}
//中断函数
void int_fun() __interrupt
{
#ifdef INT0
if (INT0IF)
{
INT0IF = 0; // 清中断标志
LED1 = !LED1; // 更改 D3 显示状态
}
#endif
#ifdef INT1
if (INT1IF)
{
INT1IF = 0; // 清中断标志
LED1 = !LED1; // 更改 D3 显示状态
}
#endif
#ifdef INT2
if (INT2IF)
{
INT2IF = 0; // 清中断标志
LED1 = !LED1; // 更改 D3 显示状态
}
#endif
}
|