Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2259271
  • 博文数量: 187
  • 博客积分: 1457
  • 博客等级: 上尉
  • 技术积分: 2423
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-13 09:41
个人简介

如需要绘制PCB,设计电路可以和我联系。sunhenu@163.com.

文章分类

全部博文(187)

文章存档

2017年(2)

2016年(2)

2015年(7)

2014年(13)

2013年(80)

2012年(83)

分类: 嵌入式

2013-04-20 12:16:51

#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 |=

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