Check the datasheet. I think ADC in ATMega16 is 10 bits. The result will be in two registers each 8 bits wide. Move the value in the two registers to one 16 bit int type variable. If you need to send the output to DAc then either send the ADC result register to PORTs or save the ADC result into two 8bit variables like lowbyte and highbyte and then assign lowbyte to say PORTB and highbyte to PORTC.
You can use SPI or I2C ADCs and DACs from LTC. They have 16 and 24 bit ADCs and DACs.
16bitvar = 8bithigherbyte
16bitvar = (16bitvar << 8) | 8bitlowerbyte
.............
PORTB = 8bitlowerbyte
PORTC = 8bithigherbyte
PORTB, PINC0, PINC1 will be connected to 10 bit parallel DAC or R2R ladder network.