/*****************************************************
CodeWizardAVR
http://www.avrdiy.com Panxiaoyi
快速PWM,也可以叫單斜率PWM
*****************************************************/
#include
unsigned char eeprom i=0; //把變量放保存在EEPROM上/賦值與否并不影響i的值
void main(void)
{
TCCR0A=0b10000011; //比較匹配時OC0A=0,計數(shù)到比較值時OC0A=1,TOP固定等于255
TCCR0B=0b00000001; //時鐘=1分頻
DDRD.6=1; //PD6必須設(shè)置為輸出時OC0A輸出的PWM才有效
DDRD.2=0;
PORTD.2=1; //PD2接按鍵輸入/上拉電阻使能
while(1)
{
if(PIND.2==0) //如果按鍵按下/簡單的按鍵防抖動
{
while(PIND.2==0); //等待按鍵松開
i+=10; //更新EEPROM的數(shù)據(jù)i/重新來電后數(shù)據(jù)不變
}
OCR0A = i ; //刷新比較值,PWM占空比隨之改變
}
}