<object id="x67hi"><bdo id="x67hi"></bdo></object>
    <span id="x67hi"></span>

    <li id="x67hi"><acronym id="x67hi"><cite id="x67hi"></cite></acronym></li>
    <tbody id="x67hi"></tbody>
    <rp id="x67hi"></rp>

    1. <strong id="x67hi"><sub id="x67hi"><address id="x67hi"></address></sub></strong><progress id="x67hi"><big id="x67hi"></big></progress>
      <th id="x67hi"></th>
      專注電子技術學習與研究
      當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

      PIC單片機AD中斷調試(無數字濾波)

      作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月31日   【字體:

      PIC單片機AD轉換的中斷調試程序如下(無數字濾波):

      #include<pic.h>
      #define uchar unsigned char
      #define uint  unsigned int
      __CONFIG(0x3B31);
      const uchar disp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
      uint adval;
      float advalf;
      uchar flag;
      void delayms(uint x)
      {  
         uint j,k;
         for(j=x;j>0;j--)
            for(k=110;k>0;k--);
      }
      void display(uint x )
      {  
       PORTD= disp[x/1000]|0x80;
          PORTA= 0xF1;
          delayms(1);
        
          PORTD= disp[x/100%10];
          PORTA= 0xF3;
          delayms(1);

          PORTD= disp[x/10%10];
          PORTA= 0xF5;
          delayms(1);

          PORTD= disp[x%10];
          PORTA= 0xF7;
          delayms(1);
      }
      void init()
      {
       uint adval=0;
          float advalf=0;
       flag = 0;
          TRISA=0x01;
          TRISC=0;
          PORTC=0x01;
          TRISD=0;
        
          ADCON0=0x41;  //8分頻(4M)、AN0、使能ADC
         ADCON1=0x8E;  //右對齊、AN0通道
       ADRESH = ADRESL = 0;
       PIE1 |=0x40;  //AD中斷使能
       INTCON |= 0xC0;  //外設使能、全局中斷使能
       ADGO=1;    //ADC轉換使能
          delayms(10);
      }
      void interrupt AD(void)
      {
       if(ADIF&&ADIE)  //AD中斷使能且標志位置位 
       {
        ADIF = 0;  //標志位復位
        ADGO=0;   //暫停AD轉換
        flag = 1;  //置標志位
       }
      }

      void main()
      {  
          init();
       while(1)
       {
        if(flag)
        { 
         flag = 0;
         adval=ADRESH;
            adval=adval<<8|ADRESL;
            advalf=adval/1023.0*5.0;
            adval=advalf*1000;
               ADGO=1;  //ADC轉換使能
              display(adval);
        }
       }
      }

      關閉窗口
      1区1区3区4区产品乱码不卡|印度人交乣女bbw|男人的天堂在线观看