/*****************************************************
www.avrdiy.com panxiaoyi
CodeWizardAVR V1.25.9 Professional
Chip type : ATmega16L
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
void main(void)
{
TCCR1A = 0b10100010; //快速PWM
TCCR1B = 0b00011001; //时钟1分频
ICR1H = 0xFF; //TCNT计数上限(最高16位)
ICR1L = 0xFF;
DDRD = 0x30; //PWM输出
while (1)
{
OCR1AH=0x7F; //设置OCR0A的占空比1:2
OCR1AL=0xFF;
OCR1BH=0x3F; //设置OCR0B的占空比1:4
OCR1BL=0xFF;
};
}
看了这个程序才知道,原来用Mega16产生16位PWM,需要使用模式15的设置方法(见datasheet),并且设置OCR1A或OCR1B,由OCR输出。此程序可同时生成两路16位PWM(OCR1A,OCR1)。
用户377235 2014-11-4 14:31