- #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外部中止操控流水灯的业绩速度(根据LPC2134)
#includeconfig.hvoid__irqEint0_IRQ(void);//INT0中断函数声明voiddelay(intdly);//delay延时函数声明//流水灯数值表intLed_T
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/264416.html