AVR单片机PWM调光程序

// Cpu ATtiny13
// 频率: 内部9.6000Mhz不分频
// winavr gcc优化级别O0
#include
#define nop() __asm__ __volatile__("nop") // 空语句
unsigned char PWM[] = {0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xE0, 0xFF};
unsigned char PWMON;
unsigned char PWMVal;
// IO引脚初始化
void port_init(void) {
PORTB = 0x08; // PB3接按键设置为输出上拉
DDRB = 0x37; // PB0为PWM输出上电置0
}
// Timer0初始化
// 快速PWM模式频率37.500KHz
void timer0_init(void) {
OCR0A = 0x00;
TCNT0 = 0x01; // 设计数
TCCR0A = 0x03; // 设置Timer0为快速PWM模式
TCCR0B = 0x01; // 启动Timer0
}
// 延时N毫秒
void delay_ms(void) {
unsigned char TempCycA;
unsigned char TempCycB;
for (TempCycA = 0; TempCycA < N> for (TempCycB = 0; TempCycB < 112> nop();
}
}
}
// 主函数
int main(void) {
port_init();
timer0_init();
PWMON = 0;
while (1) {
if (PWMON) {
OCR0A = PWM[PWMVal];
} else {
OCR0A = 0x00;
}
}
}
AVR单片机PWM调光程序参考链接:[http://www.picavr.com/news/2011-12/2779.htm](http://www.picavr.com/news/2011-12/2779.htm)
pdf 文件大小:6.91MB