新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 中斷控制led開關程序

        中斷控制led開關程序

        作者: 時間:2016-11-18 來源:網絡 收藏
        //---------------------------------------------------
        #include
        //---------------------------------------------------
        //重定義I/0引腳名稱
        sbit led1=P0^0;
        sbit led2=P0^1;
        sbit led3=P0^2;
        sbit led4=P0^3;
        sbit P13=P0^3;
        //---------------------------------------------------
        //全局變量及位標志定義
        bit FINT0;
        bit FINT1;
        bit FT0;
        bit FT1;
        bit FT2;
        unsigned char T0_10ms;
        unsigned char T0_50ms;
        unsigned char T0_100ms;
        //---------------------------------------------------
        //固定函數聲明
        void int_0(); //外部中斷0
        void int_1(); //外部中斷1
        void timer_0(); //定時器中斷1
        void timer_1(); //定時器中斷2
        void serial_1(); //串行中斷1
        void serial_2(); //串行中斷2
        //---------------------------------------------------
        //用戶函數聲明
        void initial(); //初始化
        //---------------------------------------------------
        void main(){
        initial();
        while(1){
        P13=0; //為了使按取消、確定鍵能夠產生INT0及INT1中斷
        //led4=0; //上一句等價于此句
        if(FINT0){ //中斷0來到要做什么事情
        FINT0=0;
        led1=0; //INT0中斷時點亮
        led2=0;
        led3=0;
        led3=0; //可以在此設一個斷點
        }
        if(FINT1){ //中斷1來到要做什么事情
        FINT1=0;
        led1=1; //INT1中斷時熄滅
        led2=1;
        led3=1;
        }
        if(FT0){
        FT0=0;
        if(++T0_10ms>30){
        T0_10ms=0;
        //定時多少做什么事,未初始化里定時器尚未設置
        }
        }
        }
        }
        //-------------------------------------------------------------------
        void initial(){
        EA=1; // CPU所有中斷開(IE最高位MSB)
        EX0=1; // INT0中斷開
        IT0=0; // INT0低電平觸發(為1則為下降沿觸發)
        EX1=1; // INT1中斷開
        IT1=0; // INT1低電平觸發(為1則為下降沿觸發)
        return;
        }
        //-------------------------------------------------------------------
        //INT0中斷 由P3.2引腳產生
        void int_0() interrupt 0 using 0
        {
        FINT0=1;
        }
        //-------------------------------------------------------------------
        //INT1中斷 由P3.3引腳產生
        void int_1() interrupt 2 using 1
        {
        FINT1=1;
        }
        //-------------------------------------------------------------------
        //定時器0中斷
        void timer_0() interrupt 1 using 2
        {
        FT0=1;
        }
        //-------------------------------------------------------------------
        //定時器1中斷
        void timer_1() interrupt 3 using 3
        {
        FT1=1;
        }
        //-------------------------------------------------------------------
        //串行中斷1
        void serial_1() interrupt 4
        {
        }
        //-------------------------------------------------------------------
        //定時器2中斷
        void timer_2() interrupt 5
        {
        FT2=1;
        }
        //-------------------------------------------------------------------


        關鍵詞: 中斷控制led開

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 封丘县| 六枝特区| 色达县| 嵩明县| 彩票| 拜泉县| 兴和县| 西乌| 怀集县| 开化县| 绵竹市| 榆社县| 万安县| 伊通| 邢台市| 郧西县| 金阳县| 怀宁县| 漯河市| 顺义区| 巴彦县| 济源市| 泗水县| 灵山县| 八宿县| 张北县| 宣化县| 手游| 甘泉县| 呼图壁县| 千阳县| 望谟县| 仁布县| 中山市| 高唐县| 廊坊市| 英德市| 沙河市| 天等县| 横峰县| 双柏县|