在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR中斷運用報警2路指示

            AVR中斷運用報警2路指示

            作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
            #include
            #include
            #define uchar unsigned char
            #define uint unsigned int
            __flash uchar seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //段碼
            0x7f,0x6f};
            __flash uchar tab[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位選碼
            uchar flag1=0; //初始化報警標志1為0
            uchar flag2=0; //初始化報警標志2為0
            void delay(uint k) //延時k ms子程序
            {
            uint i,j;
            for(i=0;ifor(j=0;j<1140;j++);
            }
            void show(uint d) //顯示數(shù)碼管數(shù)值程序
            {
            uchar buf[8];
            uchar i=0;
            do
            {
            buf[i]=d%10;
            d=d/10;
            i++;
            }
            while(d);
            while(i)
            {
            PORTA=seg[buf[i-1]];
            PORTC=tab[i-1];
            delay(100);
            PORTA=0xff;
            PORTC=0xff;
            i--;
            }
            }

            void port_init() //端口初始化設置
            {
            PORTA=0xff;
            DDRA=0xff;
            PORTC=0xff;
            DDRC=0xff;
            PORTD=0xff;
            DDRD=0xff;
            PORTB=0xff;
            DDRB=0xff;
            }

            void init() //中斷寄存器設置
            {
            MCUCR=0x4a; //設置INT0 和 INT1 為下降沿觸發(fā) 開啟睡眠模式
            GICR=0xc0; //設置INT0 和 INT1 使能
            SREG=0x80; //總中斷開關(guān)使能
            }

            void main()
            {
            port_init();
            init();
            while(1)
            {
            if(flag1==1) //INT0時 數(shù)碼管顯示1
            {
            show(1);
            delay(1000);
            }
            __sleep(); //調(diào)用休眠模式
            if(flag2==1) //INT0時 數(shù)碼管顯示2
            {
            show(2);
            delay(1000);
            }
            if(flag1&flag2) //當INT0 和INT1都按下去過后,表示2路都報警了 發(fā)光管取反報警顯示
            {
            PORTB=0xff;
            delay(100);
            PORTB=0x00;
            delay(100);
            }
            }
            }

            #pragma vector = 0x04
            __interrupt void int0()
            {
            flag1=1;
            }

            #pragma vector = 0x08
            __interrupt void int1()
            {
            flag2=1;
            }

            注: 調(diào)用休眠模式時 表示程序到此停止,只有用外部中斷才能喚醒,繼續(xù)下面程序。
            數(shù)碼管顯示函數(shù)采用工程算法。


            關(guān)鍵詞: AVR中斷運用2路指

            評論


            技術(shù)專區(qū)

            關(guān)閉