📄 pwm.h
字号:
#define PWM1_IN() {DDRB.5=1;PORTB.5=0;} //PWM端口控制
#define PWM1_OUT() DDRB.5=1;
#define PWM2_IN() {DDRB.6=1;PORTB.6=0;}
#define PWM2_OUT() DDRB.6=1;
/************************************************************************
PWM初始化程序
使用TIMER1,预分频为8,设置10位快速PWM模式,关闭中断
************************************************************************/
void pwm_init(void){
TIMSK&=0XC3; //关闭TIMER1中断
ETIMSK&=0XFE;
TCCR1A=0; //关闭定时器
TCCR1B=0;
OCR1A=0X0000; //关闭输出
OCR1B=0X0000;
TCCR1A=0XA3; //设置10位快速PWM模式,预分频为8
TCCR1B=0X0A;
PWM1_IN()
PWM2_IN()
}
/****************************************************************************
PWM通道控制程序
功能:可以进行单通道的开关和调整输出
入口参数:
a:通道选择(1、一通道,2、二通道)
b:通道控制(1、改值,2、开端口,3、关端口)
c:PWM更改值
****************************************************************************/
void pwm(unsigned char a,unsigned char b,unsigned int c){
switch(a){
case 1: //PWM1通道控制
switch(b){
case 1: //改变PWM1值
if(c<=0X03FF)OCR1A=c;
break;
case 2: //开PWM1端口
if(c<=0X03FF)OCR1A=c;
PWM1_OUT()
break;
case 3: //关PWM1端口
OCR1A=0X0000;
PWM1_IN()
break;
}
break;
case 2: //PWM2通道控制
switch(b){
case 1: //改变PWM2值
if(c<=0X03FF)OCR1B=c;
break;
case 2: //开PWM2端口
if(c<=0X03FF)OCR1B=c;
PWM2_OUT()
break;
case 3: //关PWM2端口
OCR1B=0X0000;
PWM2_IN()
break;
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -