Tech Support > Computer Hardware > Microprocessors > Combining Ports?
Combining Ports?
Posted by EdV on December 20th, 2004


I am using the P18F8720's many io pins to write usart data to a 32K
NVRAM. I don't have room for an address data latch so I am assigning:

Address(0..7) to PortD
Address(8..15)to PortJ
Data(0..8) to PortE
WE/ to PortB.0
OE/ to PortB.1

At least that is what I thought I wanted to do before I started to
write the code. Is there some way to combine PortD and PortJ to make a
16 bit register? Or some way to move values from the upper byte of
Address to PortJ and the lower byte to PortD?

I could use a chain of conditionals to move Address bytes to Ports but
it seems clunkier than necessary.

Thanks much,
Ed V.

Posted by Anthony Marchini on December 20th, 2004



This chip appears to do all data operations as byte anyways, so it
should be a simple matter to transfer the high and low bytes to the
respective ports.
The question makes me think that you are perhaps using C, in which case
there should be a way to get a pointer to the "two byte int" or
something like that, then you just get one and then the next byte out of
it like this :

int reg16;
byte * x;
x = & reg16;
PortJ = *x++;
PortD = *x;

I am just guessing about the C part, since the question appears to be
moot by virtue of the chip operation.
T.


Posted by EdV on December 21st, 2004


Thanks.

I found a C language refrence and ended up using right shift and it
worked just fine.

I will look into your pointer suggestion as I need to use that part of
my brain more often.

Ed V.


Anthony Marchini wrote:

Posted by Anthony Marchini on December 21st, 2004


EdV wrote:
the original as shifting will do. You won't have to make a copy before
shifting it 8 bits and loading it out.
T.



Similar Posts