新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR 定時記數器0 普通模式的簡單應用

        AVR 定時記數器0 普通模式的簡單應用

        作者: 時間:2016-11-22 來源:網絡 收藏
        #include <avr/io.h>
        #include
        #include interrupt.h>

        #define ling 0x80 //這里是設制從最高位一個一個的點亮
        volatile unsigned char count,i = 0,j = 0; //設制兩個變量


        void Timer0_Init(void) //定時器0的初始化
        {
        TCNT0 = 0x3d; //給計數器賦初值
        TCCR0 = 0x05; //CLK/1024分頻
        TIMSK = 0x01; //始能定時器0的溢出中斷
        sei(); //置位總中斷
        }

        int main(void)
        {
        DDRB = 0xff; //PB口設制為輸出
        PORTB = 0xff; //PB口初始化為FF
        Timer0_Init(); //調用定時器0的初始化

        while(1);


        }

        ISR(TIMER0_OVF_vect) //定時器溢出中斷函數
        {
        //unsigned char i;
        TCNT0 = 0x3d; //重裝載計數器的值a
        i++; //標志位加1
        if(i == 20)
        {

        //PORTB = 0xff;
        i = 0;
        count++;
        if(count > 7) //點亮8個LED的循環
        {
        count = 0;
        j =!j;
        }

        }
        if(j == 0)
        PORTB &= ~(ling >> count);
        else PORTB |= (1 << count);

        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 印江| 图们市| 保靖县| 当雄县| 安岳县| 澄城县| 务川| 上饶县| 三都| 军事| 宁夏| 福安市| 湖南省| 保山市| 鄂尔多斯市| 全州县| 富宁县| 璧山县| 松溪县| 永定县| 慈溪市| 无锡市| 土默特右旗| 读书| 贺兰县| 忻城县| 旌德县| 广河县| 盐边县| 永嘉县| 桃园市| 山东省| 千阳县| 凤城市| 商南县| 通道| 固安县| 双城市| 清流县| 象州县| 沅陵县|