na svetu, kaj je narobe s to oznako C??

Kaj misliš s "dodaja in b skupaj"?

Če program dela (vam želenega izhoda), potem ne skrbi za izvedbo vedenja, ki ga vidite v svojem simulatorju.Vaša pripravljavka moje so optimizirana stran tistih, stikalo izkazov, ker so nepotrebni, ker ti initialized in b z konstante.Pametne optimizacije prevajalnika, lahko so tudi odpravljene in b, in preprosto napisal konstant v PORTB.

Če to ni problem ....Nimam svojega prevajalnik, tako da ne morem zbrati vaš program (manjka AVR / io.h).Morda, če nam kažejo, kaj v glavi, da bi ljudje bolj pomagal.Še zlasti, kako je opredeljena PORTB?

C-code Man's je napačno podpičjem:
Code:

const char segment_table [10] =

(

0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x2, 0x78, 0, 0x10

);
 
hvala, vendar sem ne iščejo optimizirano kodo.Iskal sem odgovor, zakaj moja koda s stikalom izjava ne deluje.Čeprav je slab kodo Hočem vedeti, zakaj to ne dela.

Poskušal sem oznako ur, vendar

avr-gcc-c-mmcu = at90s2313-I.-g-Os-funsigned-char-funsigned-bitfields-fpack-struct-fshort-enums-Wall-Wstrict-prototipov-Wa,-adhlns = test.exe.program.lst-STD = gnu99 test.exe.program.c -o test.exe.program.o
test.exe.program.c: 6: error: parse error pred ";" žeton
test.exe.program.c: 12: opozorilo: vrnitev tip "glavni" ne "int"
test.exe.program.c: V funkciji "glavni":
test.exe.program.c: 16: error: `" črno (prvo uporabo za to funkcijo)
test.exe.program.c: 16: error: (Vsak neprijavljeno identifikator poročali le enkrat
test.exe.program.c: 16: error: za vsako funkcijo se zdi palca)
test.exe.program.c: 17: error: `b" črno (prvo uporabo za to funkcijo)
test.exe.program.c: 34:40: opozorilo: no newline na koncu datoteke
test.exe.program.c: V funkciji "zamudo":
test.exe.program.c: 34: error: parse error na koncu vhodnih
make.exe: *** [test.exe.program.o] Error 1

 
Mogoče to pomaga:

Code:# include <avr/io.h>

void zamudo (void);const char segment_table [10] =

(

0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x2, 0x78, 0, 0x10;

)int a, b;void main (void)

(

TCCR0 = 0x03;

DDRB = 0xFF;

DDRD = 0x3;

= 0x3;

b = 0x1;for (;;)

(

PORTB = segment_table [];

PORTD = 0x1;

zamudo ();

PORTB = segment_table ;

PORTD = 0x2;

zamudo ();

)

)void zamudo (ničen) / / Pripraviti zamudo 65 ms pri 4 MHz

(

TCNT0 = 0x7F;

while (! (TIFR & 0x02)); / / Počakajte timer0 overflow flag jih je treba določiti

TIFR = 0x02; / / Clear overflow flag

)

 
okej.

Ampak še vedno, zakaj Navada izvede, "stikalo ()"???Samo skok na "stikalo (b)."

Moj program ni učinkovita, vendar ni razloga, zakaj se ne sme izvršiti "stikalo (a)".

Zakaj je bolje uporabiti kazalec?
Code:

# include <avr/io.h>

int a, b, ABB;void main ()

(ABB = 3;

b = 1;stikalo (b)

(

case 0: = 0x40;

break;

case 1: = 0x79;

break;

case 2: = 0x24;

break;

case 3: = 0x30;

break;

case 4: = 0x19;

break;

case 5: = 0x12;

break;

case 6: = 0x2;

break;

primer 7: = 0x78;

break;

primer 8: = 0;

break;

9 primeru: = 0x10;

break;)

)

 
Salam,

Predlogi, da bi svojo kodo videti bolje.

1 - Uporabite funkcijo imenovano, tj ConvertTo7Seg (), namesto da napišete funkcije stikalo 2-krat!

2 - Ne uporabljajte in b vars kot svetovni var, namesto da bi jih uporabili kot lokalni vars in uporaba kazalec var poklicati njihovo

to je klic funkcijeCode:

x = ConvertTo7Seg (&)
 
D

david90

Guest
Code:

# include <avr/io.h>void zamudo (void);

int a, b;void main (void)

(

TCCR0 = 0x03;

DDRB = 0xFF;

DDRD = 0x3;

= 0x3;

b = 0x1;switch (a)

(

case 0: = 0x40;

break;

case 1: = 0x79;

break;

case 2: = 0x24;

break;

case 3: = 0x30;

break;

case 4: = 0x19;

break;

case 5: = 0x12;

break;

case 6: = 0x2;

break;

primer 7: = 0x78;

break;

primer 8: = 0;

break;

9 primeru: = 0x10;

break;

)

stikalo (b)

(

case 0: b = 0x40;

break;

case 1: b = 0x79;

break;

case 2: b = 0x24;

break;

case 3: b = 0x30;

break;

case 4: b = 0x19;

break;

case 5: b = 0x12;

break;

case 6: b = 0x2;

break;

primer 7: b = 0x78;

break;

8 primer: b = 0;

break;

primeru 9: b = 0x10;

break;

)while (1)

(

PORTB =;

PORTD = 0x1;

zamudo ();PORTB = b;

PORTD = 0x2;

zamudo ();

))void zamudo (ničen) / / Pripraviti zamudo 65 ms pri 4 MHz

(

TCNT0 = 0x7F;

while (! (TIFR & 0x02));

/ / Počakajte timer0 overflow flag jih je treba določiti

TIFR = 0x02; / / Clear overflow flag

)
 

Welcome to EDABoard.com

Sponsor

Back
Top