[KungFu8位 MCU]

KF8FXXX中断测试例程

[复制链接]
704|3
手机看帖
扫描二维码
随时随地手机跟帖
小小少年苦中乐|  楼主 | 2017-11-26 11:59 | 显示全部楼层 |阅读模式
KF8FXXX-INTX_Interrupt_TEST.rar (129.86 KB)
小小少年苦中乐|  楼主 | 2017-11-26 12:01 | 显示全部楼层
/*************************************************************************************
* 项目名: 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
}

使用特权

评论回复
关小波522| | 2017-11-26 14:48 | 显示全部楼层
感觉程序和汇编差不多

使用特权

评论回复
雾霾和青山| | 2017-11-27 22:02 | 显示全部楼层
好东西,正需要呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

67

帖子

0

粉丝