利用ARM外部中断控制流水灯的闪烁速度(基于LPC2134)
时间:11-20
来源:互联网
点击:
- #include"config.h"
- void__irqEint0_IRQ(void);//INT0中断函数声明
- voiddelay(intdly);//delay延时函数声明
- //流水灯数值表
- intLed_Table[]={
- 0x00fe0000,0x00fd0000,0x00fb0000,0x00f70000,0x00ef0000,
- 0x00df0000,0x00bf0000,0x007f0000};
- intDelaytime=70;
- //主函数
- intmain(void)
- {
- inti=0;
- PINSEL0=0X000CC0CC;//使能p0.1p0.3p0.7p0.8分别为外部中断0.1.2.3
- PINSEL1=0X00000000;//使能p1.16~23为IO功能
- IO1DIR=0XFF<16;//这个写法很清楚,推荐
- IRQEnable();
- VICIntSelect=0x00000000;//设置所有的终端都为IRQ中断
- VICVectCntl0=0x20|14;//设置INT0为IRQ中断,使用slot0
- VICVectAddr0=(uint32)Eint0_IRQ;//设置终端服务程序地址
- VICIntEnable=0x00004000;//使能INT0
- EXTMODE=0x00;//INT0电平触发
- EXTPOLAR=0x00;//触发电平为低电平
- EXTINT=0x0f;//清除所有中断标志
- while(1)
- {
- IO1SET=Led_Table[i];//设置高电平引脚
- IO1CLR=~Led_Table[i];//设置低电平引脚
- delay(Delaytime);
- i+=1;
- if(i==8)
- {
- i=0;
- }
- }
- return0;
- }
- /****************************************************************************
- #*名称:delay
- #*功能:延时函数
- #*入口参数:延时时间
- #*出口参数:无
- #****************************************************************************/
- voiddelay(intdly)
- {
- inti,j;
- for(i=0;i
- for(j=0;j<25000;j++);
- }
- /****************************************************************************
- #*名称:Eint0_IRQ()
- #*功能:外部中断1中断处理程序。
- #*入口参数:无
- #*出口参数:无
- #****************************************************************************/
- void__irqEint0_IRQ(void)
- {
- if(Delaytime>20)
- {
- Delaytime-=20;//加快流水灯的闪烁速度
- }
- while((EXTINT&0x01)!=0)//不断被清除标志位,直到外部恢复高电平,此时EXTINT的最低位位0
- {
- EXTINT=0x01;
- }
- VICVectAddr=0;//必须操作
- }
ARM外部中断闪烁速度LPC213 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)