N76E003 管脚中断

这篇博客介绍了N76E003单片机如何配置管脚中断,包括四种触发方式(上升沿、下降沿、高电平、低电平),并提供了P1.1管脚的配置示例和完整代码,能够使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 <intrins.h>

#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;
		}
}




评论 26
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值