<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        avr單片機定時器0溢出中斷程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年03月02日   【字體:

               2014年2月17日22:26:32  
               芯片名稱:  AVR (艾特梅爾公司)mega16A 微控制器芯片;
               開發板:  自主研發的 YF-A1芯片開發板;  (YF :是本人名字縮寫 )

                第53次試驗,用邏輯分析儀捕捉,輸出于IO口的數字,脈沖信號,脈沖信號寬度:1.5~1.8微妙,每9~11個脈寬1.5us的信號時序中,夾雜著一個脈寬位為3微妙的高脈沖信號.
               我用了好幾個小時都計算不出定時器0內部的時鐘頻率........哪里出錯了呢?
              外部用12兆晶體整蕩器;
              我的計算結論是:定時器0內部頻率為32khz     ,但是這顯然有問題.
              定時器時鐘為內部8分頻  TCCR0=0X02; TCNTO初始值250,即每6個時鐘周期溢出一次,每溢出一次,PB口電平取反一次,      就這樣反向計算    脈寬  1.5us ÷  6  ==每一個被分頻的時鐘時間  ÷ 8 =時鐘頻率;

        /*   
            寫這個程序我用了3個多小時,反復實驗.蒼天不負有心人額,,哎╮(╯▽╰)╭,,,,,

               程序名:   定時器0溢出中斷

            概述:   定時器每一毫秒溢出一次,溢出500次,即0.5秒 ,LED燈跳變一次,我發現,如果
          不將所有io口初始化,芯片將變得極其不穩定,無法正常工作,定時器0 溢出標志位
          TOV0 一旦溢出,進入中斷服務程序后,將自動清零,再無需軟件清零,我似乎明白了硬
          件清零的意思;

               finish time :2014年2月28日20:40:21;

        */


        #include <avr/io.h>
        #include <avr/interrupt.h>
        #include<avr/signal.h>

        typedef unsigned char uint8;
        typedef unsigned  int uint16;

        volatile uint16 a=0;

        void io(void)
        {
          DDRA=0XFF;
          PORTA=0X00;

          DDRB=0XFF;
          PORTB=0X00;

          DDRC=0XFF;
          PORTC=0X00;

          DDRD=0XFF;
          PORTD=0X00;


        }

         

        int main(void)
        {

           io();
          
           TIMSK=0X01; // 溢出中斷使能;

           sei();     //全局中斷使能;

           TCNT0=69;  //定時器初始值1毫秒溢出;

           TCCR0=3;    //64分頻定時器開始運行!;

           PORTB=4;    //8位LED共陽極使能;
          

           while(1);  //死循環;
         

         

        }

         

        SIGNAL(SIG_OVERFLOW0)  //中斷服務程序;
        {
           static uint16 s=0; //  靜態變量;
          
           TCNT0=69;  //重設定時器初始值;
         
            s++;      
           if(s==502)   //每500毫秒PA口電平跳變一次!
           { s=0;
             PORTA^=0XFF;
            
        }
         
         
         //  TIFR=0X01;//將定時器0溢出標志位和比較匹配標志位置一清零;

        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮