/****************************************************************************************
* KF8A系列单片机 KF8A100GQT_DEMO 开发板演示程序
* 标 题: 外部边沿触发中断实验
* 项目名: 02- INT_Sample
* 开发环境:ChipON IDE
* 版 本 :V1.0 (2019/08/10)
* 作 者: 上海芯旺微电子有限公司
* 功能简述:用户按键按下触发下降沿INT1,触发翻转LED_R
* 硬件说明:连接用户按键调帽
****************************************************************************************/
#include<KF8A100GQT.h>
#include "includes.h"
volatile uchar INT1_flag;
void delay_ms(uint16 num)
{
uint16 i,j;
for(i=0;i<num;i++)
{
j=1000;
while(j--);
}
}
void SYS_Init(void)
{
SCLKCTL = SYSCLK_SCLK_SEL_INTHF|SYSCLK_FREQ_DIV1; //INTHF作为主时钟
_NOP();_NOP(); //内部高低速时钟稳定
PLLEN=0;
PLLCTL = PLL_SEL_DIV1|PLL_SEL_INTHF|PLLBIAS_CUR_MIN|PLLPMUL_4;
PLLEN=1;
delay_ms(200);
SCLKCTL|=SYSYCLK_SEL_SCKS|SYSCLK_SCLK_SEL_UPCK; //UPCK作为主时钟 64M
SCLKOE = 0; //机器周期禁能输出,输出波形与IO翻转速率相关
CLKOUTSEL = 0;
HFCKCTL = 0xCE; //外设时钟开启
TR0 = 0; TR1 = 0; TR2 = 0; TR3 = 0;
TR4 = 0; TR5 = 0; TR6 = 0; TR7 = 0;
TR9 = 0; TRA = 0; TRB = 0;
P0LR = 0; P1LR = 0; P2LR = 0; P3LR = 0;
P4LR = 0; P5LR = 0; P6LR = 0; P7LR = 0;
P9LR = 0; PALR = 0; PBLR = 0;
}
//主函数
void main()
{
uchar i=0;
SYS_Init();
//INT1配置
TR07=1;
ANS07=0;
INT1IF=0; //INT1中断标志位初始化位0
INT1IE=1; //INT1中断使能
INT1SE=0; //INT1中断下降沿触发
//总中断开启
AIE=1; //使能所有未屏蔽的中断
PUIE=1; //使能所有未屏蔽的外设中断
while(1)
{
if(INT1_flag)
{
INT1_flag=0;
delay_ms(20);
if(P07 == 0)
{
LED_R=!LED_R;
}
}
}
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
if(INT1IE && INT1IF)
{
INT1IF=0;
INT1_flag=1;
}
}
//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{
}
以上是KF8A100GQT_DEMO 开发板演示程序,烧录在芯片中实现不了中断,请大神帮忙看看代码有什么问题?
|