<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          AVR中斷運(yùn)用報警2路指示

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          #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; //初始化報警標(biāo)志1為0
          uchar flag2=0; //初始化報警標(biāo)志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() //端口初始化設(shè)置
          {
          PORTA=0xff;
          DDRA=0xff;
          PORTC=0xff;
          DDRC=0xff;
          PORTD=0xff;
          DDRD=0xff;
          PORTB=0xff;
          DDRB=0xff;
          }

          void init() //中斷寄存器設(shè)置
          {
          MCUCR=0x4a; //設(shè)置INT0 和 INT1 為下降沿觸發(fā) 開啟睡眠模式
          GICR=0xc0; //設(shè)置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) //當(dāng)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中斷運(yùn)用2路指

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();