新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用ARM外部中斷控制流水燈的閃爍速度(基于LPC2134)

        利用ARM外部中斷控制流水燈的閃爍速度(基于LPC2134)

        作者: 時間:2016-11-20 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201611/318925.htm
        1. #include"config.h"
        2. void__irqEint0_IRQ(void);//INT0中斷函數聲明
        3. voiddelay(intdly);//delay延時函數聲明
        4. //流水燈數值表
        5. intLed_Table[]={
        6. 0x00fe0000,0x00fd0000,0x00fb0000,0x00f70000,0x00ef0000,
        7. 0x00df0000,0x00bf0000,0x007f0000};
        8. intDelaytime=70;
        9. //主函數
        10. intmain(void)
        11. {
        12. inti=0;
        13. PINSEL0=0X000CC0CC;//使能p0.1p0.3p0.7p0.8分別為外部中斷0.1.2.3
        14. PINSEL1=0X00000000;//使能p1.16~23為IO功能
        15. IO1DIR=0XFF<<16;//這個寫法很清楚,推薦
        16. IRQEnable();
        17. VICIntSelect=0x00000000;//設置所有的終端都為IRQ中斷
        18. VICVectCntl0=0x20|14;//設置INT0為IRQ中斷,使用slot0
        19. VICVectAddr0=(uint32)Eint0_IRQ;//設置終端服務程序地址
        20. VICIntEnable=0x00004000;//使能INT0
        21. EXTMODE=0x00;//INT0電平觸發
        22. EXTPOLAR=0x00;//觸發電平為低電平
        23. EXTINT=0x0f;//清除所有中斷標志
        24. while(1)
        25. {
        26. IO1SET=Led_Table[i];//設置高電平引腳
        27. IO1CLR=~Led_Table[i];//設置低電平引腳
        28. delay(Delaytime);
        29. i+=1;
        30. if(i==8)
        31. {
        32. i=0;
        33. }
        34. }
        35. return0;
        36. }
        37. /****************************************************************************
        38. #*名稱:delay
        39. #*功能:延時函數
        40. #*入口參數:延時時間
        41. #*出口參數:無
        42. #****************************************************************************/
        43. voiddelay(intdly)
        44. {
        45. inti,j;
        46. for(i=0;i
        47. for(j=0;j<25000;j++);
        48. }
        49. /****************************************************************************
        50. #*名稱:Eint0_IRQ()
        51. #*功能:外部中斷1中斷處理程序。
        52. #*入口參數:無
        53. #*出口參數:無
        54. #****************************************************************************/
        55. void__irqEint0_IRQ(void)
        56. {
        57. if(Delaytime>20)
        58. {
        59. Delaytime-=20;//加快流水燈的閃爍速度
        60. }
        61. while((EXTINT&0x01)!=0)//不斷被清除標志位,直到外部恢復高電平,此時EXTINT的最低位位0
        62. {
        63. EXTINT=0x01;
        64. }
        65. VICVectAddr=0;//必須操作
        66. }




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 玉屏| 德清县| 济宁市| 清丰县| 中卫市| 罗源县| 广河县| 潞城市| 翁源县| 宣武区| 伊春市| 通许县| 合江县| 正镶白旗| 焦作市| 仁化县| 忻城县| 柏乡县| 武清区| 阜康市| 宝鸡市| 德州市| 合肥市| 精河县| 博白县| 大庆市| 临夏县| 福州市| 沧州市| 巴中市| 凤城市| 锦屏县| 白城市| 桂林市| 铜山县| 天台县| 信宜市| 绥宁县| 潮州市| 宝鸡市| 改则县|