当前位置:首页 > 单片机 > 单片机
[导读]定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。3.快速PWM模式(需要用到OC1A、OC1B两个引脚)前提:由TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式为模式15

定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。

3.快速PWM模式(需要用到OC1A、OC1B两个引脚)

前提:由TCCR1B的bit4、bit3和TCCR1A的bit1、bit0组合来设置波形产生模式为模式15(快速PWM

)。


(1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们设为,OC1A比较匹配时取反;OC1B比较匹配时清零,TOP时置位)

(2)TCCR1B的bit2、bit1、bit0设置时钟频率。

(3)OCR1A用来设置计数的上限值,OCR1B用来设置计数的匹配值


例程1:

#include

#include

void main()

{

DDRD|=0X30;

TCCR1A=0X63; //15模式,OC1B比较匹配时清零,TOP时置1;OC1A匹配时取反

TCCR1B=0X1B; //64预分频

OCR1A=1249; //上限值,OC1B输出100Hz;OC1A输出50Hz方波

OCR1B=250; //匹配值,OC1B输出占空比为20%

}

例程2:

#include

#include

//产生38KHz 占空比为50%的信号

void main()

{

DDRD|=0X30;

TCCR1A=0X23; //配置寄存器,OC1A作为普通IO口;OC1B比较匹配时清零,TOP时置1

TCCR1B=0X19; //15模式,无预分频

OCR1A=209; //上限值,得到38KHz的PWM信号(OC1B口)

OCR1B=104; //匹配寄存器,2分之1的占空比

}

例程3:

#include

#include

//产生1Hz 占空比为50%的信号

void main()

{

DDRD|=0X30;

TCCR1A=0X23; //配置寄存器,OC1A作为普通IO口;OC1B比较匹配时清零,TOP时置1

TCCR1B=0X1D; //15模式,1024预分频

OCR1A=7811; //上限值,得到1Hz的PWM信号(OC1B口)

OCR1B=3905; //匹配寄存器,2分之1的占空比

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭