pic16f hjælp!

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Danish to

Threaded View
Hej er der en klov person her inden der kan hjælpe mig



Jeg har en PIC16F877A hvor på jeg gerne skal har lavet halvdelen af
PORTC(RC0-RC3) og halvdelen af PORTD(RD0-RD3) om til en PORTx. Men den
rasteren halvdele (RC4-RC7 og RD4-RD7) skal kunne bruges normalt



Jeg tænkte på om man måske kan gøre det vha. #define men ved ikke lige
hvordan?



Re: pic16f hjælp!

Quoted text here. Click to load it

void port_r(int value)
{
    PORTC = value << 4;    // Husker ikke lige hvilken vej man skal shifte
}

--
Tom



Re: pic16f hjælp!
tak for dit svar men vil du ikke uddybe det lidt

hvordan skal det lave halvdelen af  PORTC(RC0-RC3) og halvdelen af
PORTD(RD0-RD3)
om til en stor port ?


"Tom" <tom_christensen(snabela)bigfoot.com> wrote in message
Quoted text here. Click to load it



Re: pic16f hjælp!

Quoted text here. Click to load it

Ok jeg misfortod dit første spørgsmål. Her kommer et nyt

void out(int byte)
{
    RC0 = byte & 1;
    RC1 = byte & 2;
    RC2 = byte & 4;
    RC3 = byte & 8;
    RD0 = (byte >> 4) & 16;
    RD1 = (byte >> 4) & 32;
    RD2 = (byte >> 4) & 64;
    RD3 = (byte >> 4) & 128;
}

Som sagt husker jeg ikke lige hvilken vej >> skal vende for at shifte 4 bit
op. Mener at logisk AND er &. Hvis den brokker sig så er det 2 stk && der
skal til.

--
Tom



Re: pic16f hjælp!
Hej

<< = Op
Quoted text here. Click to load it

M.v.h.
Lasse Madsen



Re: pic16f hjælp!
On Mon, 6 Dec 2004 00:43:47 +0100, "Lasse Madsen"

Quoted text here. Click to load it

Tjaee, eller:

<< Venstre skift
Quoted text here. Click to load it

/Thomas
----
My e-mail is composed in the following manner:
<sirname>.<lastname>(a)privat(dot)dk

Re: pic16f hjælp!

Quoted text here. Click to load it
Hvis din port x skal defineres som X0-X3 tilhørende C0-C3 og X4-X7
tilhørende D0-D3, så kan du gøre noget der ligner følgende...

<CODE>
static char PortCImage = 0;
static char PortDImage = 0;

void WritePortX(char data);

int main(int argc, char *argv[])
{
  // Skriv decimalt 100 til port X (C0-C3,D0-D3)
  WritePortX(100);

  return 0;
}

void WritePortX(char data)
{
  PortCImage = (PortCImage & 0xF0) | (data & 0x0F);
  PortDImage = (PortDImage & 0xF0) | ((data & 0xF0) >> 4);

  PORTC = PortCImage;
  PORTD = PortDImage;
}
</CODE>

/Thomas
----
My e-mail is composed in the following manner:
<sirname>.<lastname>(a)privat(dot)dk

Site Timeline