新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > IAR FOR AVR 定時器中斷的使用

        IAR FOR AVR 定時器中斷的使用

        作者: 時間:2016-12-03 來源:網絡 收藏
        首先看下在iar 里面 iom16.h里面的中斷向量表

        /* NB! vectors are specified as byte addresses */

        本文引用地址:http://www.104case.com/article/201612/325106.htm

        #define RESET_vect (0x00)
        #define INT0_vect (0x04)
        #define INT1_vect (0x08)
        #define TIMER2_COMP_vect (0x0C)
        #define TIMER2_OVF_vect (0x10)
        #define TIMER1_CAPT_vect (0x14)
        #define TIMER1_COMPA_vect (0x18)
        #define TIMER1_COMPB_vect (0x1C)
        #define TIMER1_OVF_vect (0x20)
        #define TIMER0_OVF_vect (0x24)
        #define SPI_STC_vect (0x28)
        #define USART_RXC_vect (0x2C)
        #define USART_UDRE_vect (0x30)
        #define USART_TXC_vect (0x34)
        #define ADC_vect (0x38)
        #define EE_RDY_vect (0x3C)
        #define ANA_COMP_vect (0x40)
        #define TWI_vect (0x44)
        #define INT2_vect (0x48)
        #define TIMER0_COMP_vect (0x4C)
        #define SPM_RDY_vect (0x50)

        然后我是用的atmega16 4mhz晶振

        源程序:

        #include

        char flag=0;

        void timer_init() // 中斷初始化
        {
        TCCR1B = 0x04;

        TCNT1H = 0xc2;
        TCNT1L = 0xf6;

        TIMSK_Bit2 = 1; // 定時器中斷屏蔽寄存器
        SREG_Bit7 = 1; // 總中斷
        }

        # pragma vector = TIMER1_OVF_vect
        __interrupt void timer1(void)
        {
        TCNT1H = 0xc2;
        TCNT1L = 0xf6;
        flag=1;
        }

        void main(void)
        {
        timer_init();
        DDRB_Bit1 = 1;
        while(1)
        {
        if(flag==1)
        {
        PORTB_Bit1 = ~PORTB_Bit1;
        flag = 0;
        }
        }
        }



        關鍵詞: IARAVR定時器中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 越西县| 鹤壁市| 通江县| 唐海县| 烟台市| 尉氏县| 高雄县| 吉首市| 四会市| 上林县| 西平县| 宣恩县| 巴东县| 淮北市| 建德市| 新沂市| 安远县| 明星| 嘉峪关市| 岑溪市| 阜阳市| 忻州市| 临潭县| 叙永县| 突泉县| 双江| 平阴县| 运城市| 德阳市| 松阳县| 盐亭县| 安图县| 郧西县| 贵南县| 定襄县| 南皮县| 苏尼特右旗| 和平区| 济阳县| 闸北区| 宁晋县|