ATMage16的16位定时器的PWM应用

来源: 作者:2018年02月11日 11:22
关键词:定时器PWM

本文详细介绍了ATMage16的16位定时器的PWM应用。

//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]

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

发表评论

elecfans网友

分享到:

用户评论(0