您的位置 首页 系统

ATMage16的16位定时器的PWM使用

ICC-AVRapplicationbuilder:2007-5-621:30:57Target:M16Crystal:80000MhzTIMER1initialize-prescale:6

//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 的计数顶值
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,我爱虚拟仪器

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/258242.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部