string.h C AVR

R

Rooftop

Guest
Hei kaikki, minulla on pieni ongelma täällä joitakin koodi C AVR

#
include <string.h>
char mychar [30];
strcpy (mychar, "LOOONG CHARACTER ');

se sanoi virhe kuten merkin vakio on liian pitkä.Olen käyttäen Codevision,
auta minua, koska kun olen käyttäen Keill (for 8051) se toimii hyvin, vaikka en tarvitse muuttaa "on". Ole hyvä ja auta minua, sillä tämä on ensimmäinen hanke käyttäen AVR ATMEGA8535.

kun i käyttäen

#
include <string.h>
char mychar [30];
strcpy (mychar, "LO");

se works.Please kertoa minulle, kuinka tehdä se yli kaksi merkkiäReally kiitos

Ystävällisin terveisin

 
Kokeile tätä ...

const char hello [] = "Hello World";

sijasta kopiointi merkkijonoa, että jono, ei se suoraan!

 
se ei edelleenkään toimii ...

Haluan vain tehdä merkkijono kuin ohimennen parametri, mutta näyttää siltä, että se ei toiminut odotin vaikka voin tehdä sen Keil.
tämä on oletusarvo koodi:

Chip type: ATmega8535
Program Type:
applicationKello taajuus: 11,059200 MHz
Muistin malli: Pienet
Ulkopuolinen SRAM koko: 0
Data Stack koko: 128
*********************************************/

#
include <mega8535.h>
#
include <string.h>

/ / I2C Bus toiminnot
# ASM
. EQU __i2c_port = 0x15
. EQU __sda_bit = 0
. EQU __scl_bit = 1
# endasm
#
include <i2c.h>
#
include <string.h>

/ / Toteaa maailmanlaajuisesti muuttujat tästä
#
define RS PORTA.1
#
define RW PORTA.3
#
define FI PORTA.5
#
define DATA PORTB
#
define Varattu PINB.7

mitätön lähettää (void);
mitätön wait_LCD (void);
mitätön clear_LCD (void);
mitätön LCD_init (void);
mitätön print_LCD (void);mitätön lähettää ()
(
EN = 1;
EN = 0;
)mitätön clear_LCD ()
(
RS = 0;
DATA = 0x01;
lähettää ();
wait_LCD ();
)mitätön wait_LCD ()
(
tehdä
(
EN = 0;
RS = 0;
RW = 1;
DDRB.7 = 0;
EN = 1;
) while (Varattu);
EN = 0;
RW = 0;
DDRB.7 = 1;

)mitätön LCD_init ()
(
RS = 0;
DATA = 0x38;
lähettää ();
wait_LCD ();
RS = 0;
DATA = 0x0E;
lähettää ();
wait_LCD ();
RS = 0;
DATA = 0x06;
lähettää ();
wait_LCD ();
)

mitätön print_LCD ()
(
RS = 1;
DATA = "I";
lähettää ();
wait_LCD ();
)

mitätön main (void)
(

/ / Toteaa paikallisen muuttujat tästä

/ / Input / Output Ports initialization
/ / Port A käynnistystoimien
/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out
/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0
PORTA = 0x00;
DDRA = 0xFF;

/ / Port B käynnistystoimien
/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out
/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0
PORTB = 0x00;
DDRB = 0xFF;

/ / Port C käynnistystoimien
/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In
/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T
PORTC = 0x00;
DDRC = 0x00;

/ / Port D initialization
/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In
/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T
PORTD = 0x00;
DDRD = 0x00;

/ / Timer / Counter 0 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: Timer 0 päältä
/ / Mode: Normal top = FFH
/ / OC0 output: Katkaistu
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;

/ / Timer / Counter 1 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: Timer 1 Pysäytetty
/ / Mode: Normal top = FFFFh
/ / OC1A output: lopettaa.
/ / OC1B output: lopettaa.
/ / Noise Canceler: Off
/ / Input Capture on Falling Edge
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

/ / Timer / Counter 2 käynnistystoimien
/ / Clock source: System Clock
/ / Kellon arvo: Timer 2 Pysäytetty
/ / Mode: Normal top = FFH
/ / OC2 output: Katkaistu
ASSR = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / External Interrupt (s) käynnistystoimien
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien
TIMSK = 0x00;

/ / Analog vertailutehdas käynnistystoimien
/ / Analog vertailutehdas: Off
/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off
/ / Analog vertailutehdas Output: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / I2C Bus käynnistystoimien
i2c_init ();
LCD_init ();
clear_LCD ();

kun taas (1)
(
/ / Place your code here
print_LCD ();
);
)

Tämän koodin toimii ...
ja kun haluan muuttaa print_LCD () on:

mitätön print_LCD (char mychar []);
mitätön print_LCD (char mychar [])
(
unsigned int i;
RS = 1;
for (i = 0, i <= strlen (mychar) -1, i )
(
DATA = mychar ;
lähettää ();
wait_LCD ();
)
)

ja muuttaa tärkein ohjelma hieman:

char mychar [20];
strcpy (mychar, "Hello World");
kun taas (1)
(
print_LCD (mychar);
)se antaa minulle virhe mitä i mainita edellä.Kiitos vastauksesta ja pyydän ...i vielä apuanne.

Ystävällisin terveisin

 
strcpy (mychar, "LOOONG CHARACTER ');
Se
on väärin, koska strcpy odottaa merkkijonoa.Käytä "LOOONG CHARACTER" sijaan.
On myös väärin, sillä "LOOONG CHARACTER" on laitonta pituus luonteeltaan jatkuvaa.

strcpy (mychar, "Hello World");
Sama ongelma.Käytä "Hello World" sijaan.

strcpy (mychar, "LO");
Sama ongelma.Käytä "LO" sijaan.
"LO" on oikeudellinen luonne jatkuvasti, joten kääntäjä ei päästää virheilmoituksen, mutta olet silti kulkee väärään asia strcpy.

Pitkä lähdekoodi on vaikea lukea.Muokkaa viestiä ja lisätä [

..... [/code]
tags around it so we can see your indenting.

code]
..... [/ code]
tags sen ympärille, jotta voimme nähdä indenting.

 
Code:# include <mega8535.h>

# include <string.h>/ / I2C Bus toiminnot

# ASM

. EQU __i2c_port = 0x15

. EQU __sda_bit = 0

. EQU __scl_bit = 1

# endasm

# include <i2c.h>

# include <string.h>/ / Toteaa maailmanlaajuisesti muuttujat tästä

# define RS PORTA.1

# define RW PORTA.3

# define FI PORTA.5

# define DATA PORTB

# define Varattu PINB.7mitätön lähettää (void);

mitätön wait_LCD (void);

mitätön clear_LCD (void);

mitätön LCD_init (void);

mitätön print_LCD (char mychar []);mitätön lähettää ()

(

EN = 1;

EN = 0;

)mitätön clear_LCD ()

(

RS = 0;

DATA = 0x01;

lähettää ();

wait_LCD ();

)mitätön wait_LCD ()

(

tehdä

(

EN = 0;

RS = 0;

RW = 1;

DDRB.7 = 0;

EN = 1;

) while (Varattu);

EN = 0;

RW = 0;

DDRB.7 = 1;)mitätön LCD_init ()

(

RS = 0;

DATA = 0x38;

lähettää ();

wait_LCD ();

RS = 0;

DATA = 0x0E;

lähettää ();

wait_LCD ();

RS = 0;

DATA = 0x06;

lähettää ();

wait_LCD ();

)mitätön print_LCD (char mychar [])

(

unsigned int i;

RS = 1;

for (i = 0, i <= strlen (mychar) -1, i )

(

DATA = mychar ;

lähettää ();

wait_LCD ();

)

)mitätön main (void)

(

/ / char mychar [20];

/ / Toteaa paikallisen muuttujat tästä/ / Input / Output Ports initialization

/ / Port A käynnistystoimien

/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out

/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0

PORTA = 0x00;

DDRA = 0xFF;/ / Port B käynnistystoimien

/ / Func0 = Out Func1 = Out Func2 = Out Func3 = Out Func4 = Out Func5 = Out Func6 = Out Func7 = Out

/ / State0 = 0 State1 = 0 State2 = 0 State3 = 0 State4 = 0 State5 = 0 State6 = 0 State7 = 0

PORTB = 0x00;

DDRB = 0xFF;/ / Port C käynnistystoimien

/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In

/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T

PORTC = 0x00;

DDRC = 0x00;/ / Port D initialization

/ / Func0 = Vuonna Func1 = Vuonna Func2 = Vuonna Func3 = Vuonna Func4 = Vuonna Func5 = Vuonna Func6 = Vuonna Func7 = In

/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T State7 = T

PORTD = 0x00;

DDRD = 0x00;/ / Timer / Counter 0 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 0 päältä

/ / Mode: Normal top = FFH

/ / OC0 output: Katkaistu

TCCR0 = 0x00;

TCNT0 = 0x00;

OCR0 = 0x00;/ / Timer / Counter 1 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 1 Pysäytetty

/ / Mode: Normal top = FFFFh

/ / OC1A output: lopettaa.

/ / OC1B output: lopettaa.

/ / Noise Canceler: Off

/ / Input Capture on Falling Edge

TCCR1A = 0x00;

TCCR1B = 0x00;

TCNT1H = 0x00;

TCNT1L = 0x00;

OCR1AH = 0x00;

OCR1AL = 0x00;

OCR1BH = 0x00;

OCR1BL = 0x00;/ / Timer / Counter 2 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 2 Pysäytetty

/ / Mode: Normal top = FFH

/ / OC2 output: Katkaistu

ASSR = 0x00;

TCCR2 = 0x00;

TCNT2 = 0x00;

OCR2 = 0x00;/ / External Interrupt (s) käynnistystoimien

/ / INT0: Off

/ / INT1: Off

/ / INT2: Off

MCUCR = 0x00;

MCUCSR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien

TIMSK = 0x00;/ / Analog vertailutehdas käynnistystoimien

/ / Analog vertailutehdas: Off

/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off

/ / Analog vertailutehdas Output: Off

ACSR = 0x80;

SFIOR = 0x00;/ / I2C Bus käynnistystoimien

i2c_init ();

LCD_init ();

clear_LCD ();kun taas (1)

(

char mychar [100];

/ / Place your code here

strcpy (mychar, "Hello World");

print_LCD (mychar);

);

)
 
Se
on paljon helpompi lukea.

En heti nähdä syyllinen, mutta en ole perehtynyt sinun kääntäjään.

Näen mychar käyttää useaan eri paikkaan.Mikä siis se valittaa?

Käytitte mychar [] kahdessa paikassa.Saatat yritä muuttaa niitä * mychar onko kääntäjän tulee onnellisempi.

Olet sisälly string.h kahdesti.Se ei saa vahingoittaa, mutta kuka tietää.

 
silti ei toiminut, mutta olen todella sanoa kiitos apua.Haluaisin tietää, millaista kääntäjän käytit?
Kiitos paljon apuanne jälleenYstävällisin terveisin

 
Käytätkö codevision?
jos se on, käytä LCD-toiminto codevision se on parempi.
käyttää
char mychar [] = "Hello World";

 
Kiitos tiedot.Tiedän, että se toimii, jos voin käyttää LCD-toiminto.Mutta näyttää siltä, että LCD on 4 bittisessä tilassa ja i nyt yrittää käyttää 8 bittisessä tilassa.Joka tapauksessa tämä on ensimmäinen kokeilu avr niin haluan ymmärtää io paremmin.
Kiitos kaikille apuanne.
Jos joku tietää minun virhe ota oikea minulle.

Ystävällisin terveisin

 
Hei,
I haved sama ongelma, ei ohjelman toiminut?
Jos kyllä, lähetä lähdetiedostoa.
Terveisin.

 

Welcome to EDABoard.com

Sponsor

Back
Top