min første 8051 projekt, proplems med programmet, hlp

E

evilheart

Guest
Igen er det min første 8051 projekt, jeg bruger C i programmeringen, Kiel som en compiler

Jeg havde et problem med et af de programmer,# Include <At89x52.H>
# Include <string.h>
# Define SIZ 17
# Define p P0

typedef struct (

char navn [SIZ];
int ingen;
int rang;
) Arbejdstager;

void sendstruct (arbejdstager w);

main ()
(
P3 = 0; P0 = 255;
arbejdstager W1;
arbejdstager w2;
arbejdstager M1dette er den første del af programmet,
hvor jeg bygge projekt det giver mig en masse af fejlmeddelelser men jeg tror, de fleste af dem er fordi den ikke definerer strukturen (worker), jeg ved ikke hvorfor redegjorde jeg nogle af de C bøger i had , jeg gjorde, men ikke finde nogen syntaks problem.

behage nogen hjælp vil være værdifuld.WB _ MAIN.C (18): fejl "C141": syntax fejl i nærheden af »arbejdstager«

dette er den første fejl, C (18) er den linje, "arbejdstager w1"

 
Prøv på denne måde!!

struct arbejdstager
(
unsigned char navn [16];
unsigned int ingen;
unsigned int rang;
);
struct arbejdstager my_worker;bruge ur str. som my_worker.rank / / for ex ...

 
thx mandar

det gjorde næsten den samme fejl er der også en fejlmeddelelse at jeg ikke kan forklareWB_MAIN.C (19): fejl "C141": syntax fejl i nærheden af »arbejdstager«

 
Hej,
Syntaksen ser rigtige for mig i din oprindelige kode, og jeg ser ingen grund til at gøre de foreslåede ændringer ovenfor.Jeg tror det kunne være noget compilator-specifikke, såsom usete / udskrives ekstra tegn i kilden, eller makro-definitioner (f.eks vognretur ikke fulgt med en ny linje, skal du sørge skrive kilde i en kompatibel editor).

Du kan prøve at flytte linjer omkring en bit og se, om fejlen følger, at erklæringen (arbejdstager w1;) og ikke en bestemt linje, men jeg vil begynde med at fjerne denne linje:Code:

# Define p P0
 
thx Arthur

Jeg forsøgte at bevæge sig rundt i linjer, og det virkede!
det lader til at jeg burde sætte (arbejdstager) variabel erklæring på toppen af de vigtigste,
Jeg ved ikke hvorfor, men det virkede,
jeg har et andet spørgsmål

fejlmeddelelsen

WB_MAIN.C (36): advarsel C276: konstant i stand udtryk

synes for den første linie af

while (P3 = 0);
if (P3_1) sendstruct (W1);
if (P3_2) sendstruct (W2);
if (P3_3) sendstruct (m1);ahmed

 
Det skal

while (p3 == 0);

"=" Er en opgave symbol & "==" er en sammenligning

Nandhu

 
thx Nandhu

fejlen nogle hvordan forsvinder af sig selv!
men jeg vil holde info i tankerne, problemer r ikke slut endnu nogen måde!

første fejl

Flaget (19): fejl "C141": syntax fejl i nærheden af '='

for kodeblokken
Code:

typedef struct (int hh = 0;

int h = 0;

int mm = 0;

int m = 0;

int ss = 0;

int s = 0;) tid / / type tidtypedef struct (

char navn [SIZ];

int ingen;

int rang;

tid træder;) arbejdstager / / type arbejdstager
 
Hej Ahmed,
Jeg forsøger ikke at være uhøflig her, så jeg håber du ikke tager dette den forkerte vej, men jeg tror du ville være bedre at starte med en bog for begyndere i C.
Da dine problemer are meste programmering / syntaksfejl, jeg oprigtigt think du vil få mere hjælp til at forstå nogle grundlæggende begreber fra et korrekt skrevet kursus end du får på en / dette forum.
Nu da du har bedt, vil jeg svare, men denne serie af forhør kunne komme videre for evigt, medmindre du lære det "rigtige måde".
MAIN.C( 19) : error C141: syntax error near '='1)
flaget (19): fejl "C141": syntax fejl i nærheden af '='
declares a type, not a variable, so there's nothing in there you could initialize.

typedef
erklærer en type, ikke en variabel, så der er ikke noget derinde du kunne initialisere.
En type er ligesom planerne af et kabinet: det viser bare, hvordan man opbygger de ting, men der er ingen skuffe at fylde med stuff, medmindre du konstruerer actual cabinet (ækvivalent med at erklære en variabel af denne særlige type).
I dit tilfælde skal du skrive:Code:

typedef struct (int HH;

int h;

int mm;

int m;

int ss;

int s;) tid / / type tid
 
thx arthur for ur rådgivning,
og jeg appertiate ur indsats, at lange svar var meget nyttigt

for mig, jeg føler, at det er normalt at spørge så meget, og også jeg tror ikke mine spørgsmål er, at de grundlæggende (med ud strukturen spørgsmål)
Jeg synes, det er første gang at bygge ac program, størrelse, første gang på progam en microcontroller, første gang til at bruge strukturer og overskrifter, der intese, første gang til at bruge flere filer i ét program

1) flaget (19): fejl "C141": syntax fejl i nærheden af '='

iremoved den initiallization (= ingen.), og det virkede
jeg anvendte

Code:

tiden t = (0,0,0,0,0,0) / / initialiseres tid var.
 
Jeg mente ikke at fornærme dig.Jeg er enig, at der er "en første gang" for alle, og der er bestemt ingen skam i at ønske at kende og spørge.Men ...Pyt, lad os komme ned til erhvervslivet ...
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)
Om din nøgle
variabel, jeg gættede dens formål, og what du forsøger at gøre det er ikke nødvendigvis forkert, det er bare unødigt kompliceret!
Din linje:Code:

key = Q0 ((Q1) * 2) ((Q2) * 4) ((Q3) * 8);
 
thx arthur igen ur hjælp var meget værdifuld

og thx for rådgivning om tastaturet, jeg brugte koden

Code:

key = (int) (P3 & 0x0f)
 
Din kodning stil er en smule rodet, så jeg tog den frihed at ændre nogle dele til at eksemplificere, hvordan jeg ville skrive.
Også, jeg foreslog nogle ændringer og gjort nogle bemærkninger gennem koden.Jeg har ingen mulighed for at udarbejde projektet (som jeg sagde, jeg ikke bruge Keil), så der er ingen garanti for, at du ikke får flere fejl.
Jeg havde ikke enten have tid til at gå igennem alle de code, heller ikke jeg forstå alt, hvad du forsøger at gøre, men jeg har omskrevet some stykker som eksempel.
Jeg håber, det hjælper, og jeg gjorde ikke spilde min tid ...

Arthur
Beklager, men du skal logge ind for at se denne vedhæftede fil

 
thx arthur
igen Jeg værdsætter ur indsats med mig,

about my kodning stil, såvel som ur the første til læse meste af det, så u see things om det more than me, i virkeligheden when i skrev koden i gjorde ikke beskæftige mig that much about forklare every thing inde i denne specielt i hoved, ur ret, disse multi-konsoller og lignende navne kan alle være afslutte forvirrende, men jeg generelt gerne bruge korte navne for variable og defineret makroer, og når jeg ændre, jeg ikke ønsker at ændre en masse i navne på variabler at falde eventuelle syntax fejl, på nogen måde, næste gang jeg skriver en C-program i kan tage endnu et kig på ur-kode til at ændre min stil.

i forhold i uploadet program, så u kan hjælpe mig med at løse (Large DATA segment) problem, på nogen måde var problemet løst, jeg flyttede den (arbejdstager) type array (liste), jeg erklærede det i hoved, og jeg brugte ptr argumenter, så min funktioner kan få adgang til den.

Jeg tror, jeg er færdig nu med udarbejdelse af fejl og de fejl nu forbinder fejl!
og at det er et skridt frem (langsom, men frem)

*** ADVARSEL L13: rekursive CALL at segmentere
Segment:? PR? _MENU? MAIN
OPKALD:? PR? _CHECKA? MAIN*** ADVARSEL L16: malplaceret segment, ignoreret for overlay PROCESS
Segment:? PR? _SENDSTRUCT? MAIN*** FEJL L114: SEGMENTOPLYSNINGER ikke passer
SPACE: DATA
Segment: _DATA_GROUP_
BASE: 0000H
LÆNGDE: 0083H*** ADVARSEL L1: Uløste EKSTERNE SYMBOL
SYMBOL: KEY
MODUL: main.obj (MAIN)*** ADVARSEL L2: henvises til uløste EKSTERNE
SYMBOL: KEY
MODUL: main.obj (MAIN)
ADRESSE: 0868Hden sidste fejl gentages flere gange
Nu har jeg objekt fil for de vigtigste, men ingen hexa fil til projektet.

venter nemlig ur replik

Ahmed

 

Welcome to EDABoard.com

Sponsor

Back
Top