6. Specific Registers for ADC In ATmega328p
6.1 ADMUX — ADC Multiplexer Selection Register
ADMUX adalahis registeran 8-bit yangregister mengaturthat konfigurasihandles dasarthe ADC:basic sumberADC teganganconfiguration: referensi,reference formatvoltage penyimpanansource, data,data danstorage pinformat, and which analog input channel manato yang akan dibaca.read.

FungsiFunctions masing-masingof each field:
a) REFS1:REFS0 — Reference Selection
MemilihSelects sumberthe teganganADC referensireference ADC:voltage source:
| REFS1 | REFS0 | |
|---|---|---|
| 0 | 0 | AREF Pin |
| 0 | 1 | AVcc ( |
| 1 | 0 | |
| 1 | 1 | Internal 2.56V |
b) ADLAR — ADC Left Adjust Result
MenentukanDetermines posisithe penyimpananstorage hasilposition of the 10-bit diresult dalamwithin duathe registertwo 8-bit registers (ADCH + ADCL):
| ADLAR | ADCH (8-bit) | ADCL (8-bit) |
|---|---|---|
| 1 (Left-justified) | D9 D8 D7 D6 D5 D4 D3 D2 | D1 D0 (unused 6-bit) |
| 0 (Right-justified) | (unused 6-bit) D9 D8 | D7 D6 D5 D4 D3 D2 D1 D0 |
- Right-justified (ADLAR=0): ADCL
menyimpanstores8-bitthebawah,bottom 8 bits, and ADCHmenyimpanstores2-the top 2 bits. Typically used for reading the full 10-bitatas. Biasanya digunakan untuk membaca nilai penuh 10-bit.value. - Left-justified (ADLAR=1): ADCH
menyimpanstores the top 8 bits of the result. Useful when only 8-bitatasprecisiondariishasil. Berguna bila hanya perlu presisi 8-bitneeded (cukupjustbacareadADCH saja)ADCH).
c) MUX3:MUX0 — Analog Channel Selection
MemilihSelects pinwhich analog input manapin yangwill akanbe dikonversi:converted:
| MUX3 | MUX2 | MUX1 | MUX0 | Analog Pin |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | ADC0 / A0 |
| 0 | 0 | 0 | 1 | ADC1 / A1 |
| 0 | 0 | 1 | 0 | ADC2 / A2 |
| 0 | 0 | 1 | 1 | ADC3 / A3 |
| 0 | 1 | 0 | 0 | ADC4 / A4 |
| 0 | 1 | 0 | 1 | ADC5 / A5 |
| 0 | 1 | 1 | 0 | ADC6 / A6 |
| 0 | 1 | 1 | 1 | ADC7 / A7 |
6.2 ADCSRA — ADC Control and Status Register A
ADCSRA adalahis registeran 8-bit yangregister berfungsithat sebagaiserves pusatas kontrolthe dancommand pemantauancenter statusfor prosescontrolling ADC.and monitoring the ADC process status.

FungsiFunctions masing-masingof each bit:
| Bit | ||
|---|---|---|
![]() |
ADC Enable | Set |
| ADSC | ADC Start Conversion | Set |
| ADATE | ADC Auto Trigger Enable | |
| ADIF | ADC Interrupt Flag | |
| ADIE | ADC Interrupt Enable | |
| ADPS2:ADPS0 | ADC Prescaler Select |
6.3 ADCL danand ADCH — ADC Data Registers
ADCL danand ADCH adalahare dua registertwo 8-bit tempatregisters hasilwhere konversi ADCthe 10-bit disimpanADC setelahconversion konversiresult selesai.is stored after conversion is complete.
KarenaSince the ATmega328p menggunakanuses ADCa 10-bit,bit hasilnyaADC, the result (0–1023) tidakcannot muatfit dalaminto satua registersingle 8-bit,bit sehinggaregister, dibagiso keit's dalamsplit duaacross register:two registers:

PENTING:IMPORTANT: ADCLharusmustdibacabelebihreaddulufirstsebelumbefore ADCH.PembacaanReading ADCLakan me-locklocks ADCHagartotidakpreventberubahithinggafrom changing until ADCHselesaiisdibaca,read,sehinggaensuring datayang dibaca tetap konsisten.consistency.
CaraHow membacato nilairead ADCthe full 10-bit penuhADC value (right-justified):
// DalamIn C:
uint16_t adc_value = ADC; // atau:or:
uint8_t low = ADCL;
uint8_t high = ADCH;
uint16_t adc_value = (high << 8) | low;
; DalamIn Assembly:
LDS R18, ADCL ; bacaread low-byte dulufirst
LDS R19, ADCH ; baruthen bacaread high-byte
