新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ATMage16的16位定時器的PWM應(yīng)用

        ATMage16的16位定時器的PWM應(yīng)用

        作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
        //ICC-AVR application builder : 2007-5-6 21:30:57
        // Target : M16
        // Crystal: 8.0000Mhz
        //TIMER1 initialize - prescale:64
        // WGM: 10) PWM phz correct, TOP= ICRn
        // desired value: 1Hz
        // actual value: 1.000Hz (0.0%)


        #include
        #include

        #define PWM1A PORTD5 //OC1A PD5
        #define PWM1B PORTD4 //OC1B PD4
        unsigned char OCAH;
        unsigned char OCAL;
        unsigned char OCBH;
        unsigned char OCBL;

        void timer1_init(void)
        {
        TCCR1B = 0x00; //stop
        TCNT1H = 0x00; //setup
        TCNT1L = 0x01;
        OCR1AH = OCAH;
        OCR1AL = OCAL;
        OCR1BH = OCBH;
        OCR1BL = OCBL;
        ICR1H = 0xff; // pwm 的計數(shù)頂值
        ICR1L = 0xFF;
        TCCR1A = 0xA3; // 匹配清零 top置位
        TCCR1B = 0x0B; // start Timer
        }

        void init_devices(unsigned char valueah,unsigned char valueal,unsigned char valuebh,unsigned char valuebl)
        {

        OCAH=valueah;
        OCAL=valueal;
        OCBH=valuebh;
        OCBL=valuebl;
        CLI();
        //disable all interrupts
        timer1_init();
        MCUCR = 0x00;
        GICR = 0x00;
        TIMSK = 0x04; //timer interrupt sources
        SEI(); //re-enable interrupts

        }


        void main(void)
        {
        PORTD&=(0<DDRD|=(1<init_devices(0x0f,0x45,0x0f,0xf0); //修改實參即可改變占空比,最大值為0X0FFF;
        while(1);
        }
        [Copy to clipboard]







        我愛avr,我愛虛擬儀器


        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 金堂县| 雷波县| 聂荣县| 安阳市| 合川市| 井陉县| 清涧县| 五寨县| 新野县| 保山市| 张家川| 黔南| 闽侯县| 宝鸡市| 泾阳县| 喀什市| 台江县| 饶平县| 佛山市| 正蓝旗| 崇信县| 微山县| 万荣县| 江口县| 康保县| 平塘县| 满城县| 团风县| 行唐县| 清远市| 哈巴河县| 临桂县| 金昌市| 菏泽市| 揭西县| 韩城市| 剑川县| 九龙县| 新竹市| 清原| 什邡市|