Chinaunix首页 | 论坛 | 博客
  • 博客访问: 502069
  • 博文数量: 76
  • 博客积分: 2535
  • 博客等级: 少校
  • 技术积分: 3130
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-22 11:26
个人简介

京都医院http://www.fjzzled.com/杭州京都医院

文章分类

全部博文(76)

文章存档

2011年(25)

2010年(51)

我的朋友

分类: 嵌入式

2010-11-22 17:08:00

#include "2440addr.h"
#include "def.h"
#include "option.h"


/*
EINT8(GPG0),EINT11(GPG3),EINT13(GPG5),EINT14(GPG6),
EINT15(GPG7),EINT19(GPG11),为按键接口。

*/
static void __irq EINT8_23_ISR(void)
{
 ClearPending(BIT_EINT8_23);
  if(rEINTPEND&(1<<8))
 {
  
  rEINTPEND|=1<<5;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((0<<5)|(1<<6)|(1<<7)|(1<<8));
 }
  if(rEINTPEND&(1<<11))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(0<<6)|(1<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<13))
 {
  
  rEINTPEND|=1<<13;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(1<<6)|(0<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<14))
 {
  
  rEINTPEND|=1<<14;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(1<<6)|(1<<7)|(0<<8));
 }
   if(rEINTPEND&(1<<15))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((1<<5)|(0<<6)|(0<<7)|(1<<8));
 }
   if(rEINTPEND&(1<<19))
 {
  
  rEINTPEND|=1<<11;
  rGPBDAT&=~((1<<5)|(1<<6)|(1<<7)|(1<<8));
  rGPBDAT|= ((0<<5)|(1<<6)|(1<<7)|(0<<8));
 }
 
 
}
void Interrupt_Init(void)
{
 rGPGUP&=~((1)|(1<<3)|(1<<5)|(1<<6)|(1<<7)|(1<<11));
 rGPGCON&=~((3)|(3<<6)|(3<<10)|(3<<12)|(3<<14)|(3<<22));
 rGPGCON|= ((2)|(2<<6)|(2<<10)|(2<<12)|(2<<14)|(2<<22));
// 设置GPG0.GPG3,GPG5,GPG6,GPG7,GPG11为中断口。
 rSRCPND|=BIT_EINT8_23;
 //写入BIT_EINT8_23到rSRCPND来清除EINT8_23中断请求。
 rINTPND|=BIT_EINT8_23;
 //写入BIT_EINT8_23到rINTPND来清除EINT8_23中断请求。
 rINTMOD&=~BIT_EINT8_23;
 //EINT8_23设置为IRQ中断模式。
 rINTMSK&=~BIT_EINT8_23;
 //是其可以服务EINT8_23中断。
 rPRIORITY=0x0;
 //中断优先级设置。
 rEXTINT1 &= ~((15<<0)); 
 rEXTINT1 |= ((2<<0)); //set eint8 falling edge int
 
 rEXTINT1 &= ~(15<<12);
 rEXTINT1 |= (2<<12); //set eint11 falling edge int
 
 rEXTINT1 &= ~(15<<20);
 rEXTINT1 |= (2<<20); //set eint13 falling edge int
 
 rEXTINT1 &= ~(15<<24);
 rEXTINT1 |= (2<<24); //set eint14 falling edge int
 
 rEXTINT1 &= ~(7<<28);
 rEXTINT1 |= (2<<28); //set eint15 falling edge int
 
 rEXTINT2&=~(15<<12);
 rEXTINT2|= (2<<12);
 //EINT8~23设置为有滤波器,下降沿触发。
 rEINTMASK&=~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));
 rEINTPEND&=~((1<<8)|(1<<11)|(1<<13)|(1<<14)|(1<<15)|(1<<19));
 //EINT8~13中断使能。
 pISR_EINT8_23=(U32)EINT8_23_ISR;
 //注册中断
}

系统分类: ARM   |   用户分类: S3C2440   |   来源: 原创   |   【推荐给朋友】   |   

该用户于2010/10/23 21:43:02编辑过该文章

阅读(1815) | 评论(0) | 转发(1) |
0

上一篇:6个按键 按键控制灯

下一篇:timmer4 运用

给主人留下些什么吧!~~