📄 pwm.c
字号:
#include <iom128v.h>
#include <macros.h>
#define OC0_OUT_EN DDRB |= 0b00010000
/*-----------------------------------------------------------------
函数名称: void Timer0Init(void)
函数功能:
参 数:
返 回 值: 无
-----------------------------------------------------------------*/
void Timer0Init(void)
{
TCCR0 = (1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00);
/*
WGM01=1; WGM00=1; --> fast PWM modle快速PWM波模式
COM01=1; COM00=0; --> 比较匹配时set OC0 pin
CS00=1; --> timer0 source 不经过任何分频,直接为Clk,使得PWM可以工作得足够快
*/
TCNT0 = 0x00; //设置“TC0计数寄存器”初值
OCR0 = 0x70; //“输出比较寄存器”初值,设置该值可用于调节占空比
}
/*-----------------------------------------------------------------
函数名称:
函数功能:
参 数:
返 回 值: 无
-----------------------------------------------------------------*/
void delay(unsigned int t)
{
int i;
unsigned int n;
for(n=t;n>0;n--)
{
for(i=50000;i>0;i--);
}
}
void main(void)
{ unsigned char j;
OC0_OUT_EN; //为允许PWM工作,需设置PB3为输出
Timer0Init();
while(1) //无限循环,使pwm输出电压不停由小变大
{
for(j=0;j<255;j++)
{
delay(25000);
OCR0=j;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -