在Arduino C++中,可以使用寄存器数组来调用寄存器,而不必为每个寄存器编写单独的代码。以下是一个示例,展示如何通过寄存器数组来设置和读取Arduino Uno上的ADC寄存器。
volatile uint8_t * adcRegs[] = {
&ADCL,
&ADCH,
&ADCSRA,
&ADMUX,
&ADCSRB,
};
void setup() {
// set ADC prescaler to 8 for 125kHz ADC clock
*adcRegs[2] = (1 << ADPS1) | (1 << ADPS0);
// set ADC reference to AVcc
*adcRegs[3] = (1 << REFS0);
}
void loop() {
// start ADC conversion
*adcRegs[2] |= (1 << ADSC);
// wait for conversion to complete
while ((*adcRegs[2] & (1 << ADSC)) != 0);
// read ADC value
uint16_t adcValue = (*adcRegs[1] << 8) | *adcRegs[0];
}