• <label id="gmp5l"></label>

    <li id="gmp5l"></li>
      • 您好,歡迎訪問上海意泓電子科技有限責任公司網(wǎng)站!
        4新聞資訊
        您的位置: 首頁 ->  新聞資訊 -> 單片機

        ?AVR 定時器中斷程序

        文章出處:單片機 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
        2020
        11-10

        基于7.3728M晶振作AVR定時器的時鐘源進行1S定時! 
        實驗內(nèi)容: 
        使用AVR的定時器T1做1S定時,并使用PD口的LED指示燈做簡單指示。

        #include

        #include


        #define DISP_DDR   DDRD

        #define DISP_PORT  PORTD


        /*--------------------------------------------------------

        程序名稱:定時器1初始化程序

        --------------------------------------------------------*/

        void timer1_init(void)

        {

         TCCR1B = 0x00;  //stop timer


         TCNT1H = 0xE3;  //設(shè)置 TC1 的 計數(shù)寄存器 高8位值,基于7.3728M晶振

         TCNT1L = 0xDF;  //設(shè)置 TC1 的 計數(shù)寄存器 低8位值,基于7.3728M晶振


         //OCR1AH = 0x1C; //設(shè)置 TC1 的 輸出比較寄存器A 高8位值

         //OCR1AL = 0x20; //設(shè)置 TC1 的 輸出比較寄存器A 低8位值


         //OCR1BH = 0x1C; //設(shè)置 TC1 的 輸出比較寄存器B 高8位值

         //OCR1BL = 0x20; //設(shè)置 TC1 的 輸出比較寄存器B 低8位值


         //ICR1H  = 0x1C; //設(shè)置 TC1 的 輸入捕獲寄存器 高8位值

         //ICR1L  = 0x20; //設(shè)置 TC1 的 輸入捕獲寄存器 低8位值


         TCCR1A = 0x00;

         TCCR1B = 0x05;  //設(shè)置TC1 為 CLK/1024分頻,啟動TC1

        //選擇時鐘為晶振1024分頻即7372800/1024=7200HZ

        //定時1s (65535-初值)/(定時器時鐘7200)=1s

        //得初值換算十六進制給TCNT1H TCNT1L

         MCUCR = 0x00;  //設(shè)置 MCU 的 控制寄存器

         GICR  = 0x00;  //設(shè)置 中斷控制寄存器

         TIMSK = 0x04;  //設(shè)置 定時計數(shù)器 的 屏蔽寄存器(TIMSK = BIT(2);)溢出中斷使能

         //SEI();  //enable interrupts

        }

        /*--------------------------------------------------------

        程序名稱:定時器1中斷服務(wù)程序

        --------------------------------------------------------*/

        #pragma interrupt_handler timer1_ovf_isr:9

        void timer1_ovf_isr(void)

        {

         TCNT1H = 0xE3;  //reload counter high value

         TCNT1L = 0xE1;  //reload counter low value

         DISP_PORT++;  //每加1S,顯示加1

        }


        void main(void)

        {

         DISP_DDR = 0XFF; //設(shè)置顯示口為輸出

         timer1_init();

         SEI();

         while(1);

        }



        上海意泓電子科技有限責任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復制或鏡像

        CopyRight 2020-2025 www.jlodreman.com All rights reserved   滬ICP備2021005866號

        亚洲人成影院在线观看,91综合永久在线观看,欧洲亚洲日韩国产AV一级,中文字幕在线视频播放
      • <label id="gmp5l"></label>

        <li id="gmp5l"></li>