📄 pwm.c
字号:
#include <iom16v.h>
#include <macros.h>
#define PWM0 PORTB3 //OC0 PB3
volatile unsigned char T0OCR; //设置T0的时间值
/*相位修正模式输出方波,64分频*/
void timer0_init(void)
{
OCR0 = T0OCR; //设定TOP
// TOP=8000000/(2*64*1000)-1=61.5 选61 1.008KHz(0.992mS)
// TOP=8000000/(2*64*2000)-1=30.25 选30 2.016KHz(0.496ms)
TCCR0 = (0<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
}
void main(void)
{
//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
PORTA =0xFF; //不用的管脚使能内部上拉电阻。
PORTC =0xFF;
PORTB =~ (1<<PWM0);
DDRB = (1<<PWM0);
T0OCR=0x40; //改变此值即可改变输出方波的占空比
timer0_init();
SEI(); //使能全局中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -