N76E003 管脚中断

N76E003 管脚中断N76E003 单片机的每个管脚都可用于触发中断 最多可配置八个管脚 四种触发方式 上升沿 下降沿 高电平 低电平 并且管脚中断可以使 MCU 从空闲模式或掉电模式唤醒

N76E003单片机的每个管脚都可用于触发中断,最多可配置八个管脚,四种触发方式(上升沿,下降沿,高电平,低电平),并且管脚中断可以使MCU从空闲模式或掉电模式唤醒。

1、配置寄存器

在这里插入图片描述
在这里插入图片描述

 set_EA; //开启总中断 set_EPI; //开启管脚中断(位于拓展中断中) 

在这里插入图片描述
由上图可知,管脚中断的中断号为7

在这里插入图片描述

由上图可以看到管脚中断的流程,接下来我们以P1.1管脚为例,进行配置

在这里插入图片描述

 clr_PIPS1; set_PIPS0;//选择P1.1为输入源 set_PIT1;//P1.1位于通道1;set为边沿触发/clr为电平触发 

在这里插入图片描述

set_PIPEN1;//设定为上升沿或者高电平触发 // set_PINEN1;//设定下降沿或低电平触发 

或者使用官方宏定义的方式进行中断触发配置(需要将PIT设置屏蔽)

//Enable_BIT1_HighLevel_Trig; //高电平 //Enable_BIT1_FallEdge_Trig; //下降沿 //Enable_BIT1_RasingEdge_Trig;//上升沿 //Enable_BIT1_LowLevel_Trig; //低电平 

到此,管脚中断的寄存器配置就基本完成了,PIF为中断标志位,我们选择的P1.1,使用PIF1检测

2、完整代码

 #include "N76E003.h" #include "SFR_Macro.h" #include "Function_define.h" #include "Common.h" #include "Delay.h" #include 
  
    #define uchar unsigned char #define uint unsigned int sbit LED =P0^4; void delay1(int ms) { unsigned char y; while(ms--) { for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } void main (void) { set_EA; //开启总中断 set_EPI; //开启管脚中断(位于拓展中断中) Set_All_GPIO_Quasi_Mode; //所有引脚配置为双向模式 P11_Input_Mode; //设置为输入模式 clr_PIPS1; set_PIPS0;//选择P1.1为中断输入源 // set_PIT1;//通道1;set为边沿触发/clr为电平触发 // set_PIPEN1;//设定为上升沿或者高电平触发 // set_PINEN1;//设定下降沿或低电平触发 Enable_BIT1_HighLevel_Trig; //高电平 //Enable_BIT1_FallEdge_Trig; //下降沿 //Enable_BIT1_RasingEdge_Trig;//上升沿 //Enable_BIT1_LowLevel_Trig; //低电平 LED=0;//初始化LED端口 Timer0_Delay1ms(200); while(1) { } } //-------管脚中断中断服务程序--------- void PinInterrupt (void) interrupt 7 { if(PIF==0x02)//P11位于一通道 { PIF=0;//清除外部中断标志 LED=!LED; } } 
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/213797.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午5:37
下一篇 2026年3月18日 下午5:38


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号