# Data Convertion

Status
Not open for further replies.

#### Spideys

##### New Member
Hi there ppl.

working with a P18F4331 and doing A/D convertion. I want to display the result on PORTB but as you know P18f4331 is a 10bit A/D converter and PortB only has 8Bits

If A/D is justified right

char x,y;
int z;

y = ADRESH; // high byte

and i have the following "nested if " ( deviding 10bit value into the 8bits of portB)

if(z <= 128)
PORTB = 0x01;
else if(z <= 256)
PORTB = 0X03;
else if(z <= 384)
PORTB = 0x07;
else if(z <= 512)
PORTB = 0x0f;
else if(z <= 640)
PORTB = 0x1f;
else if(z <= 768)
PORTB = 0x3f;
else if(z <= 896)
PORTB = 0x7f;
else if(z < 896)
PORTB = 0xff;

how do i define z where z = Highbyte,lowbyte combind. Basically how do i make a 10 bit value form 2 8bit values x & y

#### Pommie

##### Well-Known Member
Justify left and just copy ADRESH to PORTB.

Edit, if you still want to combine into an int then do Result=ADRESH*256+ADRESL;.

Mike.

Last edited:

#### Spideys

##### New Member
Thanks Again for responding Mike...

That was what i did but saw strange results (just testing with a POT conected to AN0) as i turn the POT light connected to Portb do light up as resistance decrease, but sometimes lights turn off. i thought that there might be an C-instruction, that could combine the the two byte values into one int or long int.

z = x + (256 * y); // this was my initial idea.

otherwise it is just the POT that is screwy X + Y = Z
11110000 + 00000011 = 1111110000

#### birdman0_o

##### Active Member
Thanks Again for responding Mike...

That was what i did but saw strange results (just testing with a POT conected to AN0) as i turn the POT light connected to Portb do light up as resistance decrease, but sometimes lights turn off. i thought that there might be an C-instruction, that could combine the the two byte values into one int or long int.

z = x + (256 * y); // this was my initial idea.

otherwise it is just the POT that is screwy X + Y = Z
11110000 + 00000011 = 1111110000

If its sometimes showing blank perhaps you are polling the ADC before it is ready again (the internal capacitor is discharged).

Status
Not open for further replies.

Replies
3
Views
912
Replies
5
Views
3K
Replies
6
Views
6K
Replies
11
Views
3K
Replies
19
Views
3K 