打印
[DemoCode下载]

N76E003的管脚中断演示

[复制链接]
4891|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
734774645|  楼主 | 2017-11-20 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2015 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Nuvoton Technoledge Corp.
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Apr/21/2016
//***********************************************************************************************************

//***********************************************************************************************************
//  File Function: N76E003 I/O Interrupt demo code
//***********************************************************************************************************

#include "N76E003.h"
#include "SFR_Macro.h"
#include "Function_define.h"
#include "Common.h"
#include "Delay.h"

#if 0
//Following setting in Function_define.h

///****************************************************************************
//   Enable INT port 0~3
//***************************************************************************/
//#define         Enable_INT_Port0                                        PICON &= 0xFB;
//#define                Enable_INT_Port1                                        PICON |= 0x01;
//#define                Enable_INT_Port2                                        PICON |= 0x02;
//#define                Enable_INT_Port3                                        PICON |= 0x03;
///*****************************************************************************
// Enable each bit low level trig mode
//*****************************************************************************/
//#define                Enable_BIT7_LowLevel_Trig                        PICON&=0x7F;PINEN|=0x80;PIPEN&=0x7F
//#define                Enable_BIT6_LowLevel_Trig                        PICON&=0x7F;PINEN|=0x40;PIPEN&=0xBF
//#define                Enable_BIT5_LowLevel_Trig                        PICON&=0xBF;PINEN|=0x20;PIPEN&=0xDF
//#define                Enable_BIT4_LowLevel_Trig                        PICON&=0xBF;PINEN|=0x10;PIPEN&=0xEF
//#define                Enable_BIT3_LowLevel_Trig                        PICON&=0xDF;PINEN|=0x08;PIPEN&=0xF7
//#define                Enable_BIT2_LowLevel_Trig                        PICON&=0xEF;PINEN|=0x04;PIPEN&=0xFB
//#define                Enable_BIT1_LowLevel_Trig                        PICON&=0xF7;PINEN|=0x02;PIPEN&=0xFD
//#define                Enable_BIT0_LowLevel_Trig                        PICON&=0xFD;PINEN|=0x01;PIPEN&=0xFE
///*****************************************************************************
// Enable each bit high level trig mode
//*****************************************************************************/
//#define                Enable_BIT7_HighLevel_Trig                        PICON&=0x7F;PINEN&=0x7F;PIPEN|=0x80
//#define                Enable_BIT6_HighLevel_Trig                        PICON&=0x7F;PINEN&=0xBF;PIPEN|=0x40
//#define                Enable_BIT5_HighLevel_Trig                        PICON&=0xBF;PINEN&=0xDF;PIPEN|=0x20
//#define                Enable_BIT4_HighLevel_Trig                        PICON&=0xBF;PINEN&=0xEF;PIPEN|=0x10
//#define                Enable_BIT3_HighLevel_Trig                        PICON&=0xDF;PINEN&=0xF7;PIPEN|=0x08
//#define                Enable_BIT2_HighLevel_Trig                        PICON&=0xEF;PINEN&=0xFB;PIPEN|=0x04
//#define                Enable_BIT1_HighLevel_Trig                        PICON&=0xF7;PINEN&=0xFD;PIPEN|=0x02
//#define                Enable_BIT0_HighLevel_Trig                        PICON&=0xFD;PINEN&=0xFE;PIPEN|=0x01
///*****************************************************************************
// Enable each bit falling edge trig mode
//*****************************************************************************/
//#define                Enable_BIT7_FallEdge_Trig                        PICON|=0x80;PINEN|=0x80;PIPEN&=0x7F
//#define                Enable_BIT6_FallEdge_Trig                        PICON|=0x80;PINEN|=0x40;PIPEN&=0xBF
//#define                Enable_BIT5_FallEdge_Trig                        PICON|=0x40;PINEN|=0x20;PIPEN&=0xDF
//#define                Enable_BIT4_FallEdge_Trig                        PICON|=0x40;PINEN|=0x10;PIPEN&=0xEF
//#define                Enable_BIT3_FallEdge_Trig                        PICON|=0x20;PINEN|=0x08;PIPEN&=0xF7
//#define                Enable_BIT2_FallEdge_Trig                        PICON|=0x10;PINEN|=0x04;PIPEN&=0xFB
//#define                Enable_BIT1_FallEdge_Trig                        PICON|=0x08;PINEN|=0x02;PIPEN&=0xFD
//#define                Enable_BIT0_FallEdge_Trig                        PICON|=0x04;PINEN|=0x01;PIPEN&=0xFE
///*****************************************************************************
// Enable each bit rasing edge trig mode
//*****************************************************************************/
//#define                Enable_BIT7_RasingEdge_Trig                        PICON|=0x80;PINEN&=0x7F;PIPEN|=0x80
//#define                Enable_BIT6_RasingEdge_Trig                        PICON|=0x80;PINEN&=0xBF;PIPEN|=0x40
//#define                Enable_BIT5_RasingEdge_Trig                        PICON|=0x40;PINEN&=0xDF;PIPEN|=0x20
//#define                Enable_BIT4_RasingEdge_Trig                        PICON|=0x40;PINEN&=0xEF;PIPEN|=0x10
//#define                Enable_BIT3_RasingEdge_Trig                        PICON|=0x20;PINEN&=0xF7;PIPEN|=0x08
//#define                Enable_BIT2_RasingEdge_Trig                        PICON|=0x10;PINEN&=0xFB;PIPEN|=0x04
//#define                Enable_BIT1_RasingEdge_Trig                        PICON|=0x08;PINEN|=0xFD;PIPEN&=0x02
//#define                Enable_BIT0_RasingEdge_Trig                        PICON|=0x04;PINEN|=0xFE;PIPEN&=0x01
#endif

/******************************************************************************
* FUNCTION_PURPOSE: I/O Pin interrupt Service Routine
******************************************************************************/
void EXT_INT0(void) interrupt 0
{
                                clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);   
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);  
                                clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);   
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);
                        clr_GPIO1;
                        Timer0_Delay1ms(100);
                        set_GPIO1;
                        Timer0_Delay1ms(100);  
                }

void PinInterrupt_ISR (void) interrupt 7
{
        if(PIF == 0x01)
        {
    PIF = 0x00;                             //clear interrupt flag
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);   
               
        }
        else if (PIF == 0x80)
        {
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);   
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);
                        clr_GPIO1;
                        Timer1_Delay10ms(10);
                        set_GPIO1;
                        Timer1_Delay10ms(10);   
        }
}
/******************************************************************************
The main C function.  Program execution starts
here after stack initialization.
******************************************************************************/
void main (void)
{

    P07_Input_Mode;
                set_P0S_7;
                P00_Input_Mode;
                P01_Input_Mode;
                set_P0S_1;
                P12_PushPull_Mode;
                P30_PushPull_Mode;
                P05_PushPull_Mode;
       
               
//----------------------------------------------------
//        P0.5 set as highlevel trig pin interrupt function
//  Keep P0.5 connect to VDD LED will tickle
//  otherwise, MCU into power down mode.
//----------------------------------------------------
                Enable_INT_Port2;
//                Enable_BIT7_LowLevel_Trig;
                Enable_BIT0_LowLevel_Trig;

                P30 =1;
                P05 = 0;

    set_EPI;                                                        // Enable pin interrupt
                set_EX0;
    set_EA;                                                                // global enable bit
   
    while(1)
                {
                        P01=0;
                        P30=0;
                        P01=1;
                        P30=1;
                }

}




沙发
734774645|  楼主 | 2017-11-20 16:00 | 只看该作者
有人问,怎么那么多管脚判断到底是哪个中断的啊,方法给大家了,新手必备。

使用特权

评论回复
板凳
643757107| | 2017-11-20 17:20 | 只看该作者
分两种呢,一种是独立中断源的,另外一种共享中断源的。

使用特权

评论回复
地板
mmcu| | 2017-11-21 11:39 | 只看该作者
else if (PIF == 0x80) 在这个情况下不用清楚PIF标志吗?

使用特权

评论回复
5
wahahaheihei| | 2017-11-21 11:48 | 只看该作者
这几种我都用过,比ST8的好用。

使用特权

评论回复
6
捉虫天师| | 2017-11-21 20:29 | 只看该作者
跟别的51不同,新唐的还提供了一些封装好的操作。

使用特权

评论回复
7
捉虫天师| | 2017-11-21 20:37 | 只看该作者
通过不同次数的闪烁确定不同类型啊。

使用特权

评论回复
8
稳稳の幸福| | 2017-11-21 20:50 | 只看该作者
下降沿,和上升沿,配合定时器可以测脉宽

使用特权

评论回复
9
yiy| | 2017-11-22 19:54 | 只看该作者
不同管脚闪烁次数不同,以为用不同的IO来带LED呢。

使用特权

评论回复
10
21mengnan| | 2017-12-15 15:38 | 只看该作者
io的模式跟ARM的差不多了。真是增强版。

使用特权

评论回复
11
xinpian101| | 2017-12-15 19:37 | 只看该作者
管脚中断应用还是很多的。

使用特权

评论回复
12
天堂陌客| | 2017-12-18 14:54 | 只看该作者
//#define                Enable_BIT0_LowLevel_Trig                        PICON&=0xFD;
第44行是不是有错呢?我觉得应该是PICON&=0xFB;

使用特权

评论回复
13
天堂陌客| | 2017-12-18 14:57 | 只看该作者
void PinInterrupt_ISR (void) interrupt 7
请问一下,这个 interrupt 7是哪里定义的,所有管脚中断处理函数都在这里吗?

使用特权

评论回复
14
玛尼玛尼哄| | 2017-12-18 21:59 | 只看该作者
那些中断入口应该在启动文件里。

使用特权

评论回复
15
Darren1992| | 2018-10-18 09:30 | 只看该作者
734774645 发表于 2017-11-20 16:00
有人问,怎么那么多管脚判断到底是哪个中断的啊,方法给大家了,新手必备。 ...

那到底是怎样判断的

使用特权

评论回复
16
Darren1992| | 2018-10-18 09:33 | 只看该作者
本帖最后由 Darren1992 于 2018-10-18 09:41 编辑
天堂陌客 发表于 2017-12-18 14:54
//#define                Enable_BIT0_LowLevel_Trig                        PICON&=0xFD;
第44行是不是 ...

这个感觉应该是FB,还有  Enable_INT_Port0     PICON &= 0xFB; 1111 1011,也根本不是选的端口0啊,感觉FC才对。

使用特权

评论回复
17
Darren1992| | 2018-10-18 09:58 | 只看该作者
第176行  Enable_INT_Port2;这个选择端口2,但总个io口配置中,都没对端口2的进行配置,不懂为什么有这一句!

使用特权

评论回复
18
呵呵呵囧行| | 2019-2-27 16:40 | 只看该作者
到底怎么用完全没看懂  这不就是复制官方的历程呢么

使用特权

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

本版积分规则

185

主题

3408

帖子

14

粉丝