Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4513784
  • 博文数量: 252
  • 博客积分: 5347
  • 博客等级: 大校
  • 技术积分: 13838
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-30 10:13
文章分类
文章存档

2022年(12)

2017年(11)

2016年(7)

2015年(14)

2014年(20)

2012年(9)

2011年(20)

2010年(153)

2009年(6)

分类: 嵌入式

2010-11-23 21:13:18

#include "hal.h"
#include "RF04EB.h"

#define BUTTON_PUSH_IF_MASK 0x02

void main(void)
{
   INIT_GLED();
   INIT_BUTTON();
    
   P0IFG = 0x00; //P0口中断状态标志 对应的1表示有中断发生 初始化状态没中断发生

   PICTL |= 0x08; //中断控制 P0_3~ P0_0中断使能

   PICTL |= 0x01; //P0_7~P0_0下降沿产生中断

   INT_ENABLE(INUM_P0INT,INT_ON);//P0中断使能

   INT_GLOBAL_ENABLE(TRUE);

while(1);//循环等待中断事件的到来

}
//中断服务子程序
#pragma vector = P0INT_VECTOR
__interrupt void P0_IRQ(void)
  {//判断按键S1是否被按下
  if(P0IFG & BUTTON_PUSH_IF_MASK)
  {
  GLED ^=1;
  P0IFG &=~BUTTON_PUSH_IF_MASK;//清除中断标识位

  }
  P0IF = FALSE; //清除P0口的所有中断

 }

其中INIT_BUTTON定义如下:
#define INIT_BUTTON() (P0DIR &=~0x02) 即将P0_1口设置为输入模式

该函数的主要功能是:在按下开发板上的S1按键式,绿色的灯会点亮。

 其中INT_ENABLE的定义如下:

#define INT_ENABLE(inum, on) \
   do { \
      if (inum==INUM_RFERR) { RFERRIE = on; } \
      else if (inum==INUM_ADC) { ADCIE = on; } \
      else if (inum==INUM_URX0) { URX0IE = on; } \
      else if (inum==INUM_URX1) { URX1IE = on; } \
      else if (inum==INUM_ENC) { ENCIE = on; } \
      else if (inum==INUM_ST) { STIE = on; } \
      else if (inum==INUM_P2INT) { (on) ? (IEN2 |=

阅读(2806) | 评论(0) | 转发(5) |
给主人留下些什么吧!~~