Embedded C Programming for 8051

H

Hjelp

Guest
Hai ...

Noen kan forklare meg ........

-------------------------------------------------- ------------------------------

bit Read_Bit_P1 (const unsigned char);

void main (void)
(
bit x;

mens 1 ()
(
x = Read_Bit_P1 (2); / / hvorfor er Port 1??
Write_Bit_P1 (5, x); / / x er bærer Hight eller Lav nå ?????hvorfor ..
)
)

-------------------------------------------------- -----------------------------

Takk .....

 
Hei Hjelp

Som jeg fortalte deg i ulike tema du vil bli hjulpet.For skyld tillit, kan nevnes fra der fikk du den koden.
Dermed kunne medlemmene vise funksjonen prototypen erklæringen.Husk at medlemmene ikke gjette hva gjorde du spør før i forumet.
Jeg tror det er hentet fra her:
http://www.le.ac.uk/engineering/mjp9/pes1ohp_a4.pdfDitt spørsmål er: "hvorfor er port 1"

Hvis du ser på begynnelsen av kildekoden (side 66) vil du se et inkluder uttalelse:
# include <reg52.H>
Blant alle erklæring innsiden reg52 topptekstfilen er en som sier:
sfr P1 = 0x90;and tell me what's the value returned by function.

Nå ser på funksjonen bit Read_Bit_P1 (const unsigned char PIN)
og fortelle meg hva som er verdien som returneres av funksjonen..

Ja, gjetter du er tilbake (P1 & P).
Når kompilatoren genererer obj koden ser det ut for p og fant det deklarert som lokal variabel unsigned char p

Hvis for P1 finner ikke erklæringer verken inni fungere som lokal variabel eller som global variabel eller ekstern erklæring, det ser ut inni inkludert filhodet.
Der vil du finne P1 og det er alt kompilatoren trenger å vite.

Hvis du vil gå tilbake litt verdi etter med P2 endre deretter å returnere (P2 & P)Det andre spørsmålet var "x er bærer Hight eller Lav nå ????? hvorfor"
you'll see

Hvis du ser på innsiden funksjon void write_Bit_P1 (const unsigned char PIN-kode, const bit verdi)
vil du se
en if setning.At det er en bitvis eller drift mellom P1 og lokal variabel p hvis vi ønsker 1 utgang.with P1 variable (remember the reg52 header file )

Hvis vi ønsker 0-utgang på den angitte PIN-koden, så du må utfylle den lokale variabelen p og deretter utføre en bitvis og
med P1 variabel (husk reg52 topptekstfilen)

For å forstå dette to funksjoner som er nevnt ovenfor er det et must å forstå maskinvarekonfigurasjonen 8051 mikrokontroller.
Med andre ord, lese-endre-wryte "instruksjoner. Hvorfor noen instruksjoner som leser en port lese låsen og andre lese pin.appears inside function bit Read_Bit_P1(const unsigned char PIN)
when all we want to do it's a input pin reading..

Ellers bet jeg det ganske forvirrende hvorfor write_Bit_P1 (const unsigned char PIN-kode, const bit verdi)
vises inni funksjonen bit Read_Bit_P1 (const unsigned char PIN)
når alle vi ønsker å gjøre det er en inngang pin lesing ..

Du kan finne god kilde til informasjon i disse tre dokumenter:
http://www.8052.it/download/architecture.pdf
http://www.8052.it/download/hardware_description.pdf
http://www.8052.it/download/programmers_guide.pdf
De fleste ringer 8051 bible.

I fremtiden kan du nevne kildekoden, eller hvis det ikke er tilgjengelig på en nettside sende den til innlegget ditt.Ellers kan du ikke få hjelp slik du forventet (raskt?)

hilsen,
Silvio

 
Silvio skrev:

Hei HjelpSom jeg fortalte deg i ulike tema du vil bli hjulpet.
For skyld tillit, kan nevnes fra der fikk du den koden.

Dermed kunne medlemmene vise funksjonen prototypen erklæringen.
Husk at medlemmene ikke gjette hva gjorde du spør før i forumet.

Jeg tror det er hentet fra her:

h ** p: / / www.le.ac.uk/engineering/mjp9/pes1ohp_a4.pdfDitt spørsmål er: "hvorfor er port 1"Hvis du ser på begynnelsen av kildekoden (side 66) vil du se et inkluder uttalelse:

# include <reg52.H>

Blant alle erklæring innsiden reg52 topptekstfilen er en som sier:

sfr P1 = 0x90;

and tell me what's the value returned by function.
Nå ser på funksjonen bit Read_Bit_P1 (const unsigned char PIN)
og fortelle meg hva som er verdien som returneres av funksjonen.

.
Ja, gjetter du er tilbake (P1 & P).Når kompilatoren genererer obj koden ser det ut for p og fant det deklarert som lokal variabel unsigned char pHvis for P1 finner ikke erklæringer verken inni fungere som lokal variabel eller som global variabel eller ekstern erklæring, det ser ut inni inkludert filhodet.

Der vil du finne P1 og det er alt kompilatoren trenger å vite.Hvis du vil gå tilbake litt verdi etter med P2 endre deretter å returnere (P2 & P)
Det andre spørsmålet var "x er bærer Hight eller Lav nå ????? hvorfor"you'll see
Hvis du ser på innsiden funksjon void write_Bit_P1 (const unsigned char PIN-kode, const bit verdi)
vil du se

en if setning.
At det er en bitvis eller drift mellom P1 og lokal variabel p hvis vi ønsker 1 utgang.

with P1 variable (remember the reg52 header file )
Hvis vi ønsker 0-utgang på den angitte PIN-koden, så du må utfylle den lokale variabelen p og deretter utføre en bitvis og
med P1 variabel (husk reg52 topptekstfilen)For å forstå dette to funksjoner som er nevnt ovenfor er det et must å forstå maskinvarekonfigurasjonen 8051 mikrokontroller.

Med andre ord, lese-endre-wryte "instruksjoner. Hvorfor noen instruksjoner som leser en port lese låsen og andre lese pin.

appears inside function bit Read_Bit_P1(const unsigned char PIN)
when all we want to do it's a input pin reading..
Ellers bet jeg det ganske forvirrende hvorfor write_Bit_P1 (const unsigned char PIN-kode, const bit verdi)
vises inni funksjonen bit Read_Bit_P1 (const unsigned char PIN)
når alle vi ønsker å gjøre det er en inngang pin lesing ..Du kan finne god kilde til informasjon i disse tre dokumenter:

h ** p: / / www.8052.it/download/architecture.pdf

h ** p: / / www.8052.it/download/hardware_description.pdf

h ** p: / / www.8052.it/download/programmers_guide.pdf

De fleste ringer 8051 bible.I fremtiden kan du nevne kildekoden, eller hvis det ikke er tilgjengelig på en nettside sende den til innlegget ditt.
Ellers kan du ikke få hjelp slik du forventet (raskt?)hilsen,

Silvio
 
Hei Hjelp

Der fikk du disse:

Quote:

bit x;mens 1 ()

(

P3 = x;

Read_Bit_P1 (0); / / Les 1 Port, 0 Pin

P3 = x;
 
Silvio skrev:

Hei HjelpDer fikk du disse:Quote:

bit x;mens 1 ()

(

P3 = x;

Read_Bit_P1 (0); / / Les 1 Port, 0 Pin

P3 = x;

 
Hai ...

Noen hjelpe meg å explian ......

1)
De kaller funksjonen "Read_Bit_P1 (0)" det visste ikke hva bit det er bare helt ferdig funksjonen "bit Read_Bit_P1 (const unsigned char PIN)» da vi kjenner litt er fordi "return (P2 & p)" .Har jeg rett??
2)
Hva er forskjellen jeg putte
x = Read_Bit_P1 (0); -> Read_Bit_P1 (0);
hvorfor jeg ikke kan se forskjellen?
3)
Hvorfor "avkastningen (P2 & p)" bitwase og drift mellom P1 og lokal variabel P?
4)
Fortsatt forstår ikke ..funksjon "void write_Bit_P1 (const unsigned char PIN-kode, const bit verdi)" hvordan verdien bære verdien?

1st, da den viktigste funksjonen kaller "Read_Bit_P1 (0), innsiden av denne funksjonen det har 1 uttalelse som er" Write_Bit_P1 (PIN, 1); "så vil det føre PIN = 0 og 1 til verdien for denne" void Write_Bit_P1 (const unsigned char PIN-kode, const bit value) "-funksjonen izit .....Så hvis erklæringen vil bli lest
"if (verdi == 1)" så produksjonen vil bli '1'.....izit

2nd, etter at ...tilbake til "bit Read_Bit_P1 (const unsigned char PIN)" og deretter "return (P1 & p);", er spørsmålet hva det er (retur (P1 & P)

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />

tilbake til hovedfunksjon ....så hva er "Write_Bit_P1 (1, x);" x føre til "Void Write_Bit_P1 (const unsigned char PIN-kode, const bit VALUE )"???Hvorfor VERDI bli '0'...??Code:/*------------------------------------------------ -------------------*-

Bits2.C (v1.00)

-------------------------------------------------- --------------------

Lese og skrive individuelle port pins

MERK: Begge pinnene på samme port

--- Generic versjon ---

-*----------------------------------------------- -------------------*/

# include <reg52.h>/ / Function prototyper

void Write_Bit_P1 (const unsigned char, const bits);

bit Read_Bit_P1 (const unsigned char);/*------------------------------------------------ --------------------*/void main (void)

(

bit x;mens 1 ()

(

x = Read_Bit_P1 (0); / / Les 1 Port, 0 Pin

Write_Bit_P1 (1, x); / / skrive til 1 Port, 1 Pin

)

)

/*------------------------------------------------ --------------------*/

void Write_Bit_P1 (const unsigned char PIN-kode, const bit VERDI)

(unsigned char p = 0x01; / / 00000011p <<= PIN; / / Venstre shift passende antall plasserif (VALUE == 1) / / Hvis vi ønsker 1 utgang på denne pin

(

P1 | = p; / Bitvis ELLER

return;

)

p = ~ p; / Complement

P1 & = p; / Bitvis OG

)

/*------------------------------------------------ ---------------------------*/

bit Read_Bit_P1 (const unsigned char PIN)

(

unsigned char p = 0x01; / / 00000100p <<= PIN; / / Venstre shift passende antall plasserWrite_Bit_P1 (PIN, 1); / / Skriv en 1 til pin (å sette opp for lesing)return (P1 & p); / / Les pin (bitvis AND) og avkastning

)/*------------------------------------------------ -------------------------------*/
 
1)
Du vet nøyaktig hva bit du ønsker å lese når funksjonen kalles.
For bit 0 just call Read_Bit_P1 (0)
For Bit 1 ring Read_Bit_P1 (1)
For Bit 2 just call Read_Bit_P1 (2)
og så videre opp til
For bit 7 ring Read_Bit_P1 (7)
Ser du forskjellen?Jeg skriver denne måten bare for å være sikker på at du har det!
Hva er "hard kodet" hvis vi kan kalle det, er portnummeret.
Vi vet port P1 ser på "return (P1 & P) '
Hvis du vil lese litt 5 fra porten P2 må du ringe så Read_Bit_P2 (5) der funksjonen ser slik ut:

Code:

bit Read_Bit_P2 (const unsigned char PIN)

(

unsigned char p = 0x01; / / 00000100p <<= PIN; / / Venstre shift passende antall plasserWrite_Bit_P2 (PIN, 1); / / Skriv en 1 til pin (å sette opp for lesing)

/ / må du endre skrive funksjonen i samsvar med port 2return (P2 & p); / / Les pin (bitvis AND) og avkastning

)
 
Silvio skrev:

1)

Du vet nøyaktig hva bit du ønsker å lese når funksjonen kalles.

For bit 0 just call Read_Bit_P1 (0)

For Bit 1 ring Read_Bit_P1 (1)

For Bit 2 just call Read_Bit_P1 (2)

og så videre opp til

For bit 7 ring Read_Bit_P1 (7)

Ser du forskjellen?
Jeg skriver denne måten bare for å være sikker på at du har det!

Hva er "hard kodet" hvis vi kan kalle det, er portnummeret.

Vi vet port P1 ser på "return (P1 & P) '

Hvis du vil lese litt 5 fra porten P2 må du ringe så Read_Bit_P2 (5) der funksjonen ser slik ut:Code:

bit Read_Bit_P2 (const unsigned char PIN)

(

unsigned char p = 0x01; / / 00000100p <<= PIN; / / Venstre shift passende antall plasserWrite_Bit_P2 (PIN, 1); / / Skriv en 1 til pin (å sette opp for lesing)

/ / må du endre skrive funksjonen i samsvar med port 2return (P2 & p); / / Les pin (bitvis AND) og avkastning

)
 
Jeg håper at det eneste formålet endres fra

unsigned char p = 0x01; av de første emnet eksempel

til

unsigned char p = 0x03;

var bare å proove du forstår hvordan programmet den fungerer og for å bruke debuger.

Ellers ville det fungerer ikke etter nederlagene formålet av å lese eller skrive bestemte porten pin.

 
Silvio skrev:

Jeg håper at det eneste formålet endres fraunsigned char p = 0x01; av de første emnet eksempeltilunsigned char p = 0x03;var bare å proove du forstår hvordan programmet den fungerer og for å bruke debuger.Ellers ville det fungerer ikke etter nederlagene formålet av å lese eller skrive bestemte porten pin.
 

Welcome to EDABoard.com

Sponsor

Back
Top