新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LPC1114_外部中斷程序_MDK編譯環境

        LPC1114_外部中斷程序_MDK編譯環境

        作者: 時間:2016-11-29 來源:網絡 收藏
        main.c
        #include "LPC11XX.h"
        #include "gpio.h"
        #include "timer16.h"
        #include "main.h"
        #include "Key.h"
        #include "LCD.h"
        void Delay_Sec(unsigned char Time) //1s*Time延時函數
        {
        u16 i;
        while(Time)
        {
        for(i=0;i<3000000;i++);
        Time--;
        }
        }
        void Delay_Ms(unsigned int Time) //1Ms*Time延時函數
        {
        u16 i;
        while(Time)
        {
        for(i=0;i<3000;i++);
        Time--;
        }
        }
        void Delay_Us(unsigned int Time) //1Us*Time延時函數
        {
        u8 i;
        while(Time)
        {
        for(i=0;i<3;i++);
        Time--;
        }
        }
        int main(void)
        {
        //SystemInit(); //系統初始化--主要是設置主時鐘
        //GPIOInit(); //IO口初始化--主要是開啟GPIO時鐘
        //GPIOSetDir( 0, 3, 1 ); //設置P0.3為輸出(LPC1114單片機,輸出需設置為1,輸入需設置為0)
        LPC_GPIO0->DIR |= (0x1<<3); //設置P0.3為輸出
        LPC_GPIO2->DIR |= (0x1<<9);
        Key_GPIO_Init();
        Key_Intrrupt_Init();
        while(1)
        {
        //GPIOSetValue( 0, 3, 0 ); //給P0.3位寫0
        //LPC_GPIO0->DATA &= ~(0x1<<3); //給P0.3位寫0
        LCD_RW_High;
        //for(i=0;i<0xFFFFF;i++); //延時
        Delay_Ms(100); //延時
        //GPIOSetValue( 0, 3, 1 ); //給P0.3位寫1
        //LPC_GPIO0->DATA |= (0x1<<3); //給P0.3位寫1
        LCD_RW_Low;
        //for(i=0;i<0xFFFFF;i++); //延時
        Delay_Ms(100); //延時
        }
        }
        key.c
        #include "LPC11XX.h"
        #include "gpio.h"
        #include "main.h"
        #include "Key.h"
        void Key_GPIO_Init(void)
        {
        LPC_GPIO1->DIR &= ~(0x1<<8); //設置P1.8為輸入
        }
        void Key_Intrrupt_Init(void)
        {
        /*********配置中斷*********/
        GPIOSetInterrupt(1,8,1,0,0); //P1.8低電平觸發中斷
        /*********使能中斷*********/
        GPIOIntEnable(1,8);
        /*********使能中斷入口*********/
        NVIC_EnableIRQ(EINT1_IRQn);
        }
        gpio.c
        #include "LPC11xx.h" /* LPC11xx Peripheral Registers */
        #include "gpio.h"
        void PIOINT1_IRQHandler(void)
        {
        uint32_t regVal;
        gpio1_counter++;
        regVal = GPIOIntStatus( 1, 8 );
        if ( regVal )
        {
        LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (0<<3);
        Delay_Ms(2000);
        LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (1<<3);
        Delay_Ms(2000);
        LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (0<<3);
        Delay_Ms(2000);
        LPC_GPIO0->MASKED_ACCESS[(1<<3)] = (1<<3);
        Delay_Ms(2000);
        //GPIOSetValue( 0, 3, 0 ); //給P0.3位寫0
        //Delay_Ms(1000);
        //GPIOSetValue( 0, 3, 1 ); //給P0.3位寫0
        //Delay_Ms(1000);
        GPIOIntClear( 1, 8 );
        }
        return;
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 当阳市| 老河口市| 辰溪县| 阿拉尔市| 清苑县| 宁明县| 唐海县| 醴陵市| 泸溪县| 永胜县| 班玛县| 乾安县| 金溪县| 尤溪县| 津市市| 察隅县| 普兰店市| 淮滨县| 泰兴市| 桦川县| 朝阳县| 西藏| 横峰县| 三明市| 专栏| 公安县| 宜兴市| 观塘区| 木里| 荃湾区| 内乡县| 陇南市| 卢湾区| 红原县| 疏勒县| 郓城县| 雅安市| 延川县| 革吉县| 大关县| 昌都县|