📄 main.c
字号:
/*
avr-libc PWM测试程序
main.c
MCU:at90S2313
时钟:4MHz
芯艺 2004-09-10
*/
#include <avr/io.h>
#include <avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
#define FREQ 4
//延时
void DelayMs(uint ms)
{
uint i;
for(i=0;i<ms;i++)
_delay_loop_2(FREQ * 250);
}
int main (void)
{
uchar direction=1;
uchar pwm=0;
// 8位PWM模式 , 向上计数时匹配清除OC1
TCCR1A = _BV (PWM10) | _BV (COM1A1);
//PWM引脚PB3方向设置为输出
DDRB= _BV (PB3);
//启动PWM 时钟源:CK/8 PWM 频率为 4MHz/8/512=976Hz
TCCR1B = _BV (CS11);
//循环改变PWM输出脉宽,使接在OC1引脚上的发光管亮度发生变化
while(1)
{
if(direction)
{
if(++pwm==254)
direction=0;
}
else
{
if(--pwm==0)
direction=1;
}
OCR1=pwm;
DelayMs(10);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -