新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 凌陽16位單片機之IRQ6中斷

        凌陽16位單片機之IRQ6中斷

        作者: 時間:2016-11-20 來源:網絡 收藏
        IRQ6是b0和b1位,主要是來控制TIMEB的,b0控制TMB2,b1控制TB1也就是說不控制定時器A,

        本文引用地址:http://www.104case.com/article/201611/318714.htm

        實現功能:利用IRQ6的兩個時基中斷,即IRQ6_TMB1和IRQ6_TMB2中斷,在各自的中斷服務程序中對相應的變量進行累加;并通過點亮、熄滅發光二極管來表示相應變量計數器累加的速度。

        實驗現象:D4~D7四個發光二極管狀態變化周期為4s,D8~D11四個發光二極管狀態變化周期為2s

        #include "SPCE061A.H"
        #define sec1 0x00f0
        #define sec2 0x000f
        unsigned int i,Output,tim1=0,tim2=0;
        void IRQ6(void)__attribute__((ISR));
        void IRQ6()
        {
        if(*P_INT_Ctrl & C_IRQ6_TMB1)
        {
        tim1++;
        if(tim1 >= 64*2)
        {
        tim1=0;
        if((*P_IOA_Data & sec1) == 0)
        {
        *P_IOA_Data += sec1;
        }
        else
        {
        *P_IOA_Data-=sec1;
        }
        }
        *P_INT_Clear = C_IRQ6_TMB1;
        }
        if(*P_INT_Ctrl & C_IRQ6_TMB2)
        {
        tim2++;
        if(tim2 >= 64*2)
        {
        tim2=0;
        if(!(*P_IOA_Data &sec2))
        {
        *P_IOA_Data += sec2;
        }
        else
        {
        *P_IOA_Data-=sec2;
        }
        }
        *P_INT_Clear = C_IRQ6_TMB2;
        }

        }

        int main()
        {
        __asm("FIQ OFF");
        *P_IOA_Dir = 0x00ff;
        *P_IOA_Attrib = 0x00ff;
        *P_IOA_Data = 0x0000;

        *P_Timebase_Setup = (C_TMB1_64Hz+C_TMB2_128Hz);
        *P_INT_Ctrl = C_IRQ6_TMB1+C_IRQ6_TMB2; //Tim1是64Hz Tim2是128Hz
        __asm("INT IRQ");
        while(1)
        {
        *P_Watchdog_Clear = 0x0001;
        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 信宜市| 灵宝市| 宜城市| 郴州市| 永修县| 澄迈县| 夹江县| 南召县| 东城区| 宁化县| 法库县| 读书| 凤台县| 连州市| 襄垣县| 定兴县| 邢台市| 平定县| 五常市| 高雄市| 湖口县| 宜宾市| 肥城市| 民和| 安新县| 贵阳市| 庆元县| 湾仔区| 阳春市| 六安市| 改则县| 淮安市| 灌阳县| 陕西省| 武城县| 澄迈县| 黄骅市| 大石桥市| 隆回县| 府谷县| 仁怀市|