新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > atmege16外部中斷程序

        atmege16外部中斷程序

        作者: 時間:2016-12-01 來源:網絡 收藏
        /******************************************
        功能:演示ATMEGA16的3個外部中斷程序
        編輯環境:ICCAVR
        ******************************************/
        #include
        #include
        #define uint unsigned int
        #define uchar unsigned char
        #define beep_0 (PORTD&=~(1<
        #define beep_1 (PORTD|=(1<
        //蜂鳴器響
        uint count;
        /*******************************************
        三個外部中斷聲明,注意中斷向量號
        *******************************/
        #pragma interrupt_handler Exint0:2
        #pragma interrupt_handler Exint1:3
        #pragma interrupt_handler Exint2:19
        /*************************************
        系統延時函數
        ************************************/
        void delay(uint ms)
        {
        uint i,j;
        for(i=0;i
        {
        for(j=0;j<1140;j++);
        }
        }
        /**************************************
        端口初始化每個外部中斷端口是固定的
        ****************************************/
        void port_init()
        {
        DDRA=0XFF;
        PORTA=0XFF;
        DDRB&=(0<
        PORTB|=(1<
        DDRD&=(0<
        PORTD|=(1<
        DDRD&=(0<
        PORTD|=(1<
        }
        /***********************************
        外部中斷初始化
        *******************************/
        void INT_init()
        {
        SREG=0X80;//打開全局中斷
        GICR|=(1<
        MCUCR=(1<
        MCUCSR=(0<
        }
        /*****************************************
        流水燈函數
        ****************************************/
        void LED_1()
        {
        uchar i;
        for(i=0;i<8;i++)
        {
        PORTA=~BIT(i);
        delay(200);
        }
        }
        /***********************************
        LED_2函數
        **********************************/
        void LED_2()
        {
        PORTA=0X0F;
        delay(500);
        PORTA=0XF0;
        delay(500);
        }
        /********************************
        LED_3函數
        ************************************/
        void LED_3()
        {
        PORTA=0X81;
        delay(500);
        PORTA=0X7E;
        delay(500);
        }
        /************************************
        外中斷0函數
        **********************************/
        void Exint0()
        {
        LED_2();
        }
        /**********************************
        外中斷1函數
        ***********************************/
        void Exint1()
        {
        LED_3();
        }
        /************************
        外中斷2函數
        ***********************/
        void Exint2()
        {
        DDRD=(1<
        for(count=0;count<4;count++)
        {
        beep_0;delay(200);
        beep_1;delay(200);
        }
        }
        /*********************************
        主函數
        *********************************/
        void main()
        {
        port_init();//端口初始化
        INT_init();//中斷初始化
        while(1)// 當非0值時執行下面函數
        {
        LED_1();//流水燈函數
        }
        }


        關鍵詞: atmege16外部中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 井研县| 临澧县| 绥江县| 泾川县| 渑池县| 汝南县| 翼城县| 武陟县| 岑巩县| 彰武县| 台安县| 新郑市| 黄石市| 项城市| 阜南县| 凤山县| 水富县| 清镇市| 监利县| 慈溪市| 平山县| 抚宁县| 广宁县| 怀仁县| 山阴县| 西平县| 河东区| 大新县| 综艺| 开阳县| 桦南县| 巍山| 汶川县| 天津市| 五台县| 瑞昌市| 延川县| 馆陶县| 新河县| 中超| 天津市|