|
下面是AVR的PWM控制LED亮度的C代碼,由于不了解AVR的寄存器,哪位前輩可以將AVR寄存器改成51(STC)對(duì)應(yīng)的寄存器?還有AVR的庫(kù)函數(shù) pgm_read_word (& pwm_table[tmp])是什么功能的?
OCR1A、OCR1B、TCCR1A、TCCR1B分別對(duì)應(yīng)STC哪幾個(gè)寄存器?
謝謝!
void pwm_up_down (const uint16_t pwm_table[], int16_t size, uint16_t delay)
{
int16_t tmp;
for (tmp = 0; tmp < size; tmp++)
{
OCR1A = pgm_read_word (& pwm_table[tmp]);
my_delay (delay);
}
for (tmp = size-1; tmp >= 0; tmp--)
{
OCR1A = pgm_read_word (& pwm_table[tmp]);
my_delay (delay);
}
}
void pwm_8_8 (uint16_t delay)
{
// 8 Bit Fast PWM
TCCR1A = 0x81 | INVERT_PWM;
// prescaler 256 -> ~122 Hz PWM frequency
TCCR1B = (1 << WGM12) | 4;
pwm_up_down (pwmtable_8B, 8, delay);
}
|
|