×
单片机 > 单片机程序设计 > 详情

AVR单片机快速PWM定时器0发生模式 TIME0_快速PWM程序

发布时间:2020-06-02 发布时间:
|


/*AVR快速PWM定时器0发生模式*/

/*PWM波的产生机理是定时器0的TCNT0不断地计数,当TCNT0=OCR0时在OC0引脚上出现低电平,当定时器0=TOP最大值时,*/

/*OC0引脚将会被拉高,同时产生溢出中断,可以再终端服务中修改OCR0的值,以改变占空比,比用引脚模拟要准确*/

/*另外值得说的是快速PWM很适合用在高速的场合,比如开关电源,和DA转换,整流等*/

/* 快速PWM实验    20110416  天津第四项目部宿舍      王均伟   */

#include

#define uchar unsigned char

#define uint unsigned int

#define set_bit(a,b)  a|=(1<

#define clr_bit(a,b)  a&=~(1<

#define get_bit(a,b)   a&(1<

uchar i;

#pragma interrupt_handler time0fistpwm_isr:10

void time0fistpwm_isr()//定时计数器0溢出中断

{

    if(OCR0==255)

    {OCR0=0;}//加这个语句是为了在OC0引脚上表现出电压越来越高,灯越来越亮的效果,

OCR0++;      //OCR0越小则OC0引脚电压越低越,换句话说低电平时间越长。


}

void int_time0fistpwm()//定时器0用在快速PWM设置初始化

{

     SREG=0x80;//开启全局中断

    TCNT0=0;//

OCR0=0;;//

   TCCR0=0x6D; //工作在快速PWM模式,当OCR0=TCNT0时,OC0脚拉低,此时计时器继续计数,当溢出时OC0拉高,并产生中断,可以在中断里设置下一次的低电平时间,OCR0越小低电平时间越长    OC0引脚(就是4脚),时钟1024分频,开启定时器

   

   TIMSK=0x01;//开启定时器溢出中断

   

}

void main()

{

DDRC=0xff;

PORTC=0x00;

DDRB|=(1<<3);

PORTB|=(1<<3);

int_time0fistpwm();

while(1);



}


关键字:AVR单片机  快速PWM  定时器0  发生模式 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的