12Bit ADC(MCP3208)

void SPIWrite(uint8_t input)
{
SPDR=input;
while(!(SPSR&(1<<SPIF)))
	{
	;//wait until transmission complete
	}
}
uint8_t SPIReadWrite(uint8_t input)
{
SPDR=input;
while(!(SPSR&(1<<SPIF)))
	{
	;//wait until transmission complete
	}
return(SPDR);
}
uint16_t READAdc(uint8_t ch)
{
	uint8_t dataHIGH,dataLOW,bytestream;
	SPI_PORT&=~(1<<SPI_CS);     //enable latch
	bytestream=0b00000110;
	if(ch>3)
		{
		bytestream=0b00000111;
		}
	SPIWrite(bytestream);
	bytestream=(ch<<6);
	dataHIGH=SPIReadWrite(bytestream); //send any bit to receved data
	dataHIGH&=0b00001111;              //4bit high value
	dataLOW=SPIReadWrite(0xff);        //send any bit to receved data
	SPI_PORT|=(1<<SPI_CS);             //disable latch
	return((dataHIGH<<8)|(dataLOW));
}
#include<avr/io.h>
#include<stdio.h>
#include"mcp3208.h"
#include"lcd.h"
int main(void)
{
LCD_INIT();
ADCInitx();
float temp;
uint16_t ADCValue;
char LCD[20];
LCD_write_string(1,1,"ADC result Display");
	while(1)
		{
			ADCValue=READAdc(3);
			temp=ADCValue*0.12207;
			sprintf(LCD,"Temperature=%.2f",(double)temp);
			LCD_write_string(1,2,LCD);
		}
return 0;
}