můj první projekt 8051, proplems s programem, HLP

E

evilheart

Guest
Opět je to můj první projekt 8051, JÁ am using C v programování, Kiel jako kompilátor

Měl jsem problém s jedním z programů,# Include <At89x52.H>
# Include <string.h>
# Define SIZ 17
# Define p P0

typedef struct (

char name [SIZ];
int ne;
int hodnost;
) Pracovník;

neplatné sendstruct (pracovník w);

main ()
(
P3 = 0; P0 = 255;
pracovník W1;
pracovník W2;
pracovník m1;Jedná se o první část programu,
když jsem se postavit na projekt dává mi spoustu chybových zpráv, ale myslím, že většina z nich objeví, protože nedefinuje strukturu (zaměstnanec), nevím proč, jsem přezkoumala některé z knih C jsem měl , ale já jsem nenašel žádné syntax problém.

Prosím, žádné pomoci budou cenné.WB _ hlavní.C (18): chyba C141: syntaktická chyba v blízkosti 'pracovník'

Toto je první chyba, C (18), je linie "pracovníka W1;"

 
Zkuste tímto způsobem!!

struct pracovník
(
unsigned char name [16];
unsigned int ne;
unsigned int hodnost;
);
struct pracovník my_worker;využití ur str jako my_worker.rank / / pro ex ...

 
thx mandar

je to skoro stejná chyba je i chybová zpráva, že nemohu vysvětlitWB_MAIN.C (19): chyba C141: syntaktická chyba v blízkosti 'pracovník'

 
Ahoj,
Syntaxe vypadá správný se mi ve své původní kód, a nevidím žádný důvod dělat změny navržené výše.Věřím, že by to mohlo být něco kompilátoru-specifické, jako je neviditelná / netisknutelné znaky navíc zdroj, nebo makro-definice (např. CR následovat nový řádek, ujistěte se, že napíšete zdroj kompatibilní editor).

Dalo by se pokusit přesunout řádky asi trochu a uvidíme, jestli chyba vyplývá, že prohlášení (pracovník W1;), a nikoli konkrétní linku, ale já bych začít tím, že odstraní tento řádek:Kód:

# Define p P0
 
thx Arthur

Snažil jsem se pohybovat kolem linky, a fungovalo to!
Zdá se, že bych měl dát (pracovník), variabilní prohlášení v horní části hlavní,
Nevím proč, ale to fungovalo,
Mám další otázku

chybové hlášení

WB_MAIN.C (36): varování C276: konstantní ve stavu projevu

objeví na prvním řádku

while (P3 = 0);
if (P3_1) sendstruct (W1);
if (P3_2) sendstruct (W2);
if (P3_3) sendstruct (M1);Ahmed

 
Mělo by být

while (P3 == 0);

"=" Je úkol symbol & "==" je srovnání

Nandhu

 
thx Nandhu

chyba, jak někteří zmizí sama o sobě!
ale budu držet info na paměti, problémy r ještě neskončila žádným způsobem!

První chyba

Main.c (19): chyba C141: syntaktická chyba u '='

pro blok kódu
Kód:

typedef struct (int hh = 0;

int h = 0;

int mm = 0;

int m = 0;

int ss = 0;

int s = 0;) čas, / / typ častypedef struct (

char name [SIZ];

int ne;

int hodnost;

čas vstoupit;) pracovník, / / typ pracovníka
 
Ahoj Ahmed,
Nesnažím se být nezdvořilý tady tak doufám, že nejste s to špatně, ale myslím, že byste se lépe v počínaje knihou pro začátečníky v C.
Vzhledem k tomu, vaše problémy jsou většinou programování / syntaktické chyby, jsem upřímně myslím, získáte více pomůže pochopit některé základní pojmy z dobře napsanými kurzu, než se dostanete na / tohoto fóra.
Nyní, protože jsi zeptal, já odpověděl, ale tato série výslechů mohla dostat do nekonečna, pokud se naučíte "správnou cestu".
MAIN.C( 19) : error C141: syntax error near '='1)
main.c (19): chyba C141: syntaktická chyba u '='
declares a type, not a variable, so there's nothing in there you could initialize.

typedef
deklaruje typ, nikoli proměnná, takže nic tam jste mohli inicializovat.
Typ je jako plány kabinetu: to jen ukazuje, jak stavět věc, ale není zásuvka naplnit věci, pokud si postavit vlastní skříň (ekvivalent k prohlášení, že proměnnou určitého typu).
Ve vašem případě, musíte napsat:Kód:

typedef struct (int hh;

int h;

int mm;

int m;

int ss;

int s;) čas, / / typ čas
 
thx Arthur pro ur radu,
a já appertiate ur úsilí, že dlouhá odpověď byla velmi užitečná

pro mě, mám pocit, že je normální, že se ptám moc, a také já si nemyslím, že mé otázky je, že základní (s mimo struktury otázka)
Myslím, že to je poprvé, stavět AC program, který velikost, poprvé na progam mikrokontrolér, poprvé k použití struktur a hlaviček, které intese, poprvé používat několik souborů do jednoho programu

1) main.c (19): chyba C141: syntaktická chyba u '='

iremoved initiallization (= Sb.), a fungovalo to
Použil jsem

Kód:

čas t = (0,0,0,0,0,0), / / inicializuje čas var.
 
Nechtěl jsem vás urazit.Souhlasím s tím, že tam je "poprvé" pro každého, a tam je rozhodně žádná ostuda, chtěl vědět, a žádá.Ale ...Nevadí, pojďme se pustit do práce ...
About your key
variable, I guessed its purpose, and what you are trying to do it's not necessarily wrong, it's just unnecessarily complicated!

2)
o vašich klíčových
proměnných, jsem uhodl její účel, a to, co se snaží dělat, že to není nutně špatné, je to jen zbytečně komplikovaný!
Vaše linka:Kód:

klíč = Q0 ((Q1) * 2) ((2. čtvrtletí) * 4) ((Q3) * 8);
 
thx Arthur, opět ur pomoci bylo velmi cenným

a thx za radu o klávesnici, jsem použil kód

Kód:

klíč = (int) (P3 & 0x0F)
 
Vaše kódování styl je trochu nepořádek, takže jsem si dovolil, kterým se mění některé části, aby názorně, jak bych psát.
Také jsem navrhl některé změny a dělal některé připomínky prostřednictvím kódu.Nemám možnost sestavit projekt (jak jsem řekl, já ho nepoužívám Keil), takže není zaručeno, že nebudete mít více chyb.
Já taky ne dost času projít celý kód, ani jsem pochopit všechno, co se snažíte udělat, ale já jsem přepsat některé kousky jako příklad.
Doufám, že to pomůže a já jsem neměl ztrácet čas ...

Arthur
Omlouváme se, ale musíte přihlásit a prohlížet tuto přílohu

 
thx Arthur
Znovu jsem ocenit ur úsilí se mnou,

o mé kódování styl, stejně jako ur první přečíst většinu, pak u vidět věci, o to víc, než já, ve skutečnosti, když jsem psal kód, který jsem netýkaly jsem si, že hodně o vysvětlovat všechno, co v ní, zvláště v hlavním, ur pravdu, tyto multi-závorky a podobné názvy mohou být všichni opustit matoucí, ale i obecně, jako používat krátké názvy proměnných a definice makra, a když jsem se změnit, nelíbí se mi pro změnu hodně Jména proměnných pro snížení možných syntaktických chyb, jakkoli, příště napíšu program C i může mít jiný pohled na ur kód změnit můj styl.

ve skutečnosti jsem nahrál program, takže u mě může pomoci řešit (Large DATA segment) problém, problém nějakým způsobem byl vyřešen, jsem se přestěhoval (pracovník) typ array (list), i prohlásila, že v původním, a já PTR argumenty, aby své funkce přístup.

Myslím, že jsem udělal hned se sestavování chyby a chyby jsou nyní spojují chyby!
a že je to krok kupředu (pomalý, ale dopředu)

*** VAROVÁNÍ L13: rekurzivní volání na segment
Segmentu:? PR? _MENU? HLAVNÍ
Caller:? PR? _CHECKA? HLAVNÍ*** VAROVÁNÍ L16: NESPLACENÉ segmentu, nebere v úvahu pro overlay PROCESU
Segmentu:? PR? _SENDSTRUCT? HLAVNÍ*** ERROR L114: SEGMENT nevejde
SPACE: DATA
Segmentu: _DATA_GROUP_
BASE: 0000h
DÉLKA: 0083H*** VAROVÁNÍ L1: nevyřešená VNĚJŠÍ SYMBOL
SYMBOL: KEY
MODUL: main.obj (HLAVNÍ)*** VAROVÁNÍ L2: Odkazuje na neřešené VNĚJŠÍ
SYMBOL: KEY
MODUL: main.obj (HLAVNÍ)
ADRESA: 0868Hposlední chyba několikrát opakovat
teď mám objektový soubor pro hlavní, ale ne hexa soubor pro projekt.

čeká na ur odpověď

Ahmed

 

Welcome to EDABoard.com

Sponsor

Back
Top