5.3.2. Setting the Gain Value
The three programmable gain registers are accessed indirectly using the ADC0H and ADC0L registers
when the GAINEN bit (ADC0CF.0) bit is set. ADC0H acts as the address register, and ADC0L is the data
register. The programmable gain registers can only be written to and cannot be read. See Gain Register
Definition 5.1, Gain Register Definition 5.2, and Gain Register Definition 5.3 for more information.
The gain is programmed using the following steps:
1. Set the GAINEN bit (ADC0CF.0)
2. Load the ADC0H with the ADC0GNH, ADC0GNL, or ADC0GNA address.
3. Load ADC0L with the desired value for the selected gain register.
4. Reset the GAINEN bit (ADC0CF.0)
An ADC conversion should not be performed while the GAINEN bit is set.
Even with gain enabled, the maximum input voltage must be less than VREGIN and the maximum
voltage of the signal after gain must be less than or equal to VREF.
In code, changing the value to 0.44 gain from the previous example looks like:
// in ‘C’:
ADC0CF |= 0x01;
// GAINEN = 1
ADC0H = 0x04;
// Load the ADC0GNH address
ADC0L = 0x6C;
// Load the upper byte of 0x6CA to ADC0GNH
ADC0H = 0x07;
// Load the ADC0GNL address
ADC0L = 0xA0;
// Load the lower nibble of 0x6CA to ADC0GNL
ADC0H = 0x08;
// Load the ADC0GNA address
ADC0L = 0x01;
// Set the GAINADD bit
ADC0CF &= ~0x01;
// GAINEN = 0
; in assembly
; GAINEN = 1
; Load the ADC0GNH address
; Load the upper byte of 0x6CA to ADC0GNH
; Load the ADC0GNL address
; Load the lower nibble of 0x6CA to ADC0GNL
; Load the ADC0GNA address
; Set the GAINADD bit
; GAINEN = 0