找回密碼
         注冊會員
        搜索附件  

        LED.zip

         

        LED程序有點問題,幫忙看看:
        各位大蝦,我的程序要求是這樣的,撥K4地址碼時程序自走,撥地址碼K5時程序進入聲控(中斷INT0),低電平觸發。所以,我用函數調用來設計,子程序在主程序時,自走,也可以讓子程序循環多次。當K4斷開時,馬上停止。當K5按下時,進入中斷,子程序在中斷時能實現單步走,一有低電平,就走一步。K5斷開時,退出中斷。

        程序和附件,我已經上傳了,希望能給我點指點,盡快,在等,謝謝!

        QQ:306048732

        我發了好多帖子,都沒人回答一下的,希望各位大俠別再讓我失望了!
        #define uchar unsigned char //定宏義
        #define uint unsigned int
        #define ulong unsigned long
        #include <reg52.h> //包括一個52標準內核的頭文件
        /********************************
        * IO口定義 *
        ********************************/
        sbit K0=P1^0; //R通道
        sbit K1=P1^1; //G通道
        sbit K2=P1^2; //B通道
        sbit K3=P1^3; //W通道
        sbit K4=P1^4; // AUTO RUN 模式
        sbit K5=P1^5; // MUSIC 模式
        sbit K6=P1^6; // DXM 控制模式
        sbit K7=P1^7; // ALL LIGHT
        sbit K8=P3^2;
        /********************************
        * 子函數定義 *
        ********************************/
        void delay_ms(uint);
        void INTR0();
        void ZT_0();
        void ZT_1();
        void ZT_2();
        void ZT_3();
        void ZT_4();
        void ZT_5();
        void ZT_6();
        void ZT_7();
        void ZT_8();
        void ZT_9();
        void ZT_10();
        void ZT_11();
        void ZT_12();
        void ZT_13();
        void ZT_14();
        void ZT_15();
        void ZT_16();
        /********************************
        * 參數定義 *
        ********************************/
        uint a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,
        aa=0,bb=0,cc=0,dd=0,ee=0,ff=0,gg=0,hh=0;



        /********************************
        * 主函數 *
        ********************************/
        void main(void)
        {
        P0=0x00,P2=0x00; //端口初始化
        while(1)
        {
        if (K4==0) //判斷K4是否按下
        {
        delay_ms(100);
        // ZT_0();if(a<33)continue;
        // ZT_1();if(b<41)continue;
        ZT_2();if(c<9)continue; //我想讓這個子程序在這里循環3次,怎么修改呢。
        ZT_7();if(h<16)continue;
        ZT_3();if(d<8)continue;
        ZT_16();if(s<9)continue;
        ZT_6();if(g<11)continue;
        ZT_8();if(k<5)continue;
        ZT_15();if(r<8)continue;
        ZT_4();if(e<5)continue;
        ZT_14();if(q<16)continue;
        ZT_5();if(f<5)continue;
        ZT_9();
        ZT_10();
        ZT_11();
        ZT_12();
        ZT_13();
        if(K4==1)
        break;
        }
        else if(K5==0) //判斷K5是否按下
        {
        delay_ms(100);
        IT0=1; //設定中斷觸發方式
        EX0=1; //開啟外部中斷1(INT1)
        EA=1; //打開總中斷
        INTR0();
        if(K5==1)
        break;
        }
        else if(K0==0) //判斷K0是否按下
        {
        delay_ms(100);
        P0=0x22;P2=0x44; //R 亮
        if(K0==1)
        break;
        }
        else if(K1==0) //判斷K1是否按下
        {
        delay_ms(100);
        P0=0x44;P2=0x22; //G 亮
        if(K1==1)
        break;
        }
        else if(K2==0) //判斷K2是否按下
        {
        delay_ms(100);
        P0=0x88;P2=0x11; //B 亮
        if(K2==1)
        break;
        }
        else if(K3==0) //判斷K3是否按下
        {
        delay_ms(100);
        P0=0x11;P2=0x88; //W 亮
        if(K3==1)
        break;
        }
        else if(K6==0)
        {
        delay_ms(100);
        P0=0xff;P2=0xff;delay_ms(200); //頻閃
        P0=0x00;P2=0x00;delay_ms(100);
        if(K6==1)
        break;
        }
        else {P0=0x00;P2=0x00;}
        }
        }

        /************************************
        * 中斷服務子程序 *
        ************************************/
        void INTR0() interrupt 0
        { uchar i;
        // PX1=1;
        EX0=0;



        while(1)
        {
        if(!K8)
        {
        while(!K8);
        switch(i)
        {
        case 0:
        ZT_0();if(a<33)
        continue;
        break;
        case 1:
        ZT_1();if(b<45)
        continue;
        break;
        case 2:
        ZT_2();if(c<8)
        continue;
        break;
        case 3:
        ZT_16();if(s<9)
        continue;
        break;
        case 4:
        ZT_8();if(k<10)
        continue;
        break;
        case 5:
        ZT_7();if(h<16)
        continue;
        break;
        }
        i++;
        if(K5==1)break;
        if(i==5)i=0;
        EX0=1;
        } break;
        }

        }

        void delay_ms(uint z)
        {
        uint i,j;
        for(i=z;i>0;i--)
        for(j=100;j>0;j--);
        }

        [ 此帖被czc568在2010-06-06 09:45重新編輯 ]


        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-5-3 09:17 , Processed in 0.046663 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        久久久久四虎国产精品| baoyu亚洲欧美电影院| 国产丝袜肉丝视频在线| 好硬好湿好爽再深一点动态图片| 色婷婷影院你懂的| 久久精品国产亚洲AV大全| 99精品视频在线观看| 国产精品99久久久久久宅男| 亚洲国产精品成人网址天堂| 日产精品久久久一区二区| 99久久精品影院老鸭窝| 国内精品国产成人国产三级| 最新国产精品拍自在线观看| 国产精品涩涩涩视频网站| 国产精品久久久天天影视香蕉| 亚洲国产精品自在拍在线播放| 日韩精品少妇无码受不了| 久久se精品一区二区| 欧美亚洲日本久久精品| 久久亚洲美女精品国产精品| 91精品国产综合久久香蕉 | 精品无码av一区二区三区 | 亚洲综合另类小说| 国产精品国产三级国产普通话| 国产精品成人99久久久久| 呦交小u女国产精品视频| 99麻豆久久久国产精品免费| 精品国产毛片一区二区无码| 亚洲精品无码AV人在线播放| 亚洲国产精品久久66| 亚洲欧洲国产精品| 2024国产精品极品色在线| 太粗太深了用力点视频| 日韩精品免费在线视频| 不卡在线免费播放视频| 99久久精品这里只有精品| 日韩精品内射视频免费观看| 国产精品主播一区二区| 国产成人精品无码播放| 亚洲AV无码之日韩精品| 欧洲精品视频在线观看|