string.h C AVR

R

Rooftop

Guest
Labas visiems, aš mažai čia problema su kai kuriais kodą naudojant C AVR

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

ji sakė kai panašaus pobūdžio pastovaus klaidos yra per ilgas.I'm using Codevision, prašau padėkite man, nes kai aš naudoju Keill (už 8051) jis veikia gerai, nors man reikia pakeisti "IKI". Prašau man padėti, nes tai mano pirmasis projektas, naudojant AVR ATMEGA8535.

kai aš naudoju

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

ji works.Please man papasakoti, kaip tai daryti daugiau nei du simboliaiTikrai ačiū

Nuoširdžiausi linkėjimai

 
Try this ...

const char Hello [] = "Hello World";

vietoj kopijavimo eilutę į masyvą, tai jis tiesiogiai!

 
vis dar nebuvo darbus ...

Aš tik noriu padaryti taip, einančios eilutės parametrų, bet atrodo, kad ji neveikia, kaip tikėjausi, nors aš galiu padaryti, kad Keil.
tai nutylėjimą kodas:

Chip type: ATmega8535
Programos tipas: Prašymas
Laikrodžio dažnis: 11,059200 MHz
Atminties modelis: Mažas
Išorės SRAM dydis: 0
Duomenys Stack size: 128
*********************************************/

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

/ / I2C Bus Functions
# asm
. kongresas __i2c_port = 0x15
. kongresas __sda_bit = 0
. kongresas __scl_bit = 1
# endasm
# include <i2c.h>
# include <string.h>

/ / Pripažinti savo globalių kintamųjų čia
# define RS PORTA.1
# define RW PORTA.3
# define LT PORTA.5
# define DATA PORTB
# define Užimta PINB.7

void send (void);
void wait_LCD (void);
void clear_LCD (void);
void LCD_init (void);
void print_LCD (void);void send ()
(
LT = 1;
LT = 0;
)tuščia clear_LCD ()
(
RS = 0;
Data = 0x01;
send ();
wait_LCD ();
)tuščia wait_LCD ()
(
daryti
(
LT = 0;
RS = 0;
SM = 1;
DDRB.7 = 0;
LT = 1;
) while (užimtas);
LT = 0;
SM = 0;
DDRB.7 = 1;

)tuščia LCD_init ()
(
RS = 0;
Data = 0x38;
send ();
wait_LCD ();
RS = 0;
Data = 0x0E;
send ();
wait_LCD ();
RS = 0;
Data = 0x06;
send ();
wait_LCD ();
)

tuščia print_LCD ()
(
RS = 1;
Data = "I";
send ();
wait_LCD ();
)

void main (void)
(

/ / Pripažinti savo vietos kintamieji čia

/ / Input / Output Ports initialization
/ / Port initialization
/ / 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 initialization
/ / 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 initialization
/ / Func0 = In func1 = In Func2 = In Func3 = In Func4 = In Func5 = In Func6 = In Func7 = In
/ / State0 = T State1 = T State2 = T State3 = T State4 = T State5 = T State6 = T = T State7
PORTC = 0x00;
DDRC = 0x00;

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

/ / Timer / Counter 0 initialization
/ / Laikrodis šaltinis: sistemos laikrodžio
/ / Laikrodis vertė: Laikmatis 0 Sustabdyta
/ / Mode: Normal viršuje = FFH
/ / OC0 galia: Disconnected
TCCR0 = 0x00;
TCNT0 = 0x00;
OCR0 = 0x00;

/ / Timer / Counter 1 initialization
/ / Laikrodis šaltinis: sistemos laikrodžio
/ / Laikrodis vertė: 1 Laikmatis Sustabdyta
/ / Mode: Normal viršuje = FFFFh
/ / OC1A galia: Discon.
/ / OC1B galia: Discon.
/ / Triukšmas Canceler: Off
/ / Input Capture dėl krintančių kraštas
TCCR1A = 0x00;
TCCR1B = 0x00;
TCNT1H = 0x00;
TCNT1L = 0x00;
OCR1AH = 0x00;
OCR1AL = 0x00;
OCR1BH = 0x00;
OCR1BL = 0x00;

/ / Timer / Counter 2 initialization
/ / Laikrodis šaltinis: sistemos laikrodžio
/ / Laikrodis vertė: Timer 2 Sustabdyta
/ / Mode: Normal viršuje = FFH
/ / OC2 galia: Disconnected
Autonominė Tarybų Socialistinė Respublika = 0x00;
TCCR2 = 0x00;
TCNT2 = 0x00;
OCR2 = 0x00;

/ / Išorės Interrupt (-ai) initialization
/ / INT0: Off
/ / INT1: Off
/ / INT2: Off
MCUCR = 0x00;
MCUCSR = 0x00;

/ / Timer (s) / Counter (s) Interrupt (s) initialization
TIMSK = 0x00;

/ / Analoginis komparatorius initialization
/ / Analoginis komparatorius: Off
/ / Analoginis komparatorius Input gaudymą Timer / Counter 1: Off
/ / Analoginis komparatorius Output: Off
ACSR = 0x80;
SFIOR = 0x00;

/ / I2C Bus initialization
i2c_init ();
LCD_init ();
clear_LCD ();

while (1)
(
/ / Place your code here
print_LCD ();
);
)

Šis kodas yra darbo ...
kai noriu pakeisti print_LCD () turi būti:

tuščia print_LCD (char mychar []);
tuščia print_LCD (char mychar [])
(
unsigned int i;
RS = 1;
for (i = 0; i <= strlen (mychar) -1; i )
(
Data = mychar ;
send ();
wait_LCD ();
)
)

ir keisti pagrindinės programos mažai:

char mychar [20];
strcpy (mychar, 'Hello World');
while (1)
(
print_LCD (mychar);
)Man klaida ką aš sakiau anksčiau.Ačiū už atsakymą ir prašome ...Aš vis dar reikia jūsų pagalbos.

Nuoširdžiausi linkėjimai

 
strcpy (mychar "LOOONG simbolis ');
Tai neteisinga, nes tikisi strcpy eilutę.Naudokite "LOOONG savybių" vietoj.
Taip pat neteisinga, nes "LOOONG savybių" yra neteisėtas simbolių ilgio konstantą.

strcpy (mychar, 'Hello World');
Pačią problemą.Naudokite "Hello World" vietoj.

strcpy (mychar, 'lo');
Pačią problemą.Naudokite "Lo" vietoj.
"LO" yra teisinio pobūdžio nuolat, todėl jūsų Kompiliatorius ne išmeta klaidos pranešimą, tačiau jūs vis dar einanti klaidingą dalykas strcpy.

Jūsų ilgai kodą sunku skaityti.Prašome redaguoti savo žinutę ir įrašyti [

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

kodas]
..... [/ code]
tags aplink jį, kad mes galėtume pamatyti savo wcięć.

 
Kodas# include <mega8535.h>

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

# asm

. kongresas __i2c_port = 0x15

. kongresas __sda_bit = 0

. kongresas __scl_bit = 1

# endasm

# include <i2c.h>

# include <string.h>/ / Pripažinti savo globalių kintamųjų čia

# define RS PORTA.1

# define RW PORTA.3

# define LT PORTA.5

# define DATA PORTB

# define Užimta PINB.7void send (void);

void wait_LCD (void);

void clear_LCD (void);

void LCD_init (void);

tuščia print_LCD (char mychar []);void send ()

(

LT = 1;

LT = 0;

)tuščia clear_LCD ()

(

RS = 0;

Data = 0x01;

send ();

wait_LCD ();

)tuščia wait_LCD ()

(

daryti

(

LT = 0;

RS = 0;

SM = 1;

DDRB.7 = 0;

LT = 1;

) while (užimtas);

LT = 0;

SM = 0;

DDRB.7 = 1;)tuščia LCD_init ()

(

RS = 0;

Data = 0x38;

send ();

wait_LCD ();

RS = 0;

Data = 0x0E;

send ();

wait_LCD ();

RS = 0;

Data = 0x06;

send ();

wait_LCD ();

)tuščia print_LCD (char mychar [])

(

unsigned int i;

RS = 1;

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

(

Data = mychar ;

send ();

wait_LCD ();

)

)void main (void)

(

/ / char mychar [20];

/ / Pripažinti savo vietos kintamieji čia/ / Input / Output Ports initialization

/ / Port initialization

/ / 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 initialization

/ / 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 initialization

/ / Func0 = In func1 = In Func2 = In Func3 = In Func4 = In Func5 = In Func6 = In Func7 = In

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

PORTC = 0x00;

DDRC = 0x00;/ / Port D initialization

/ / Func0 = In func1 = In Func2 = In Func3 = In Func4 = In Func5 = In Func6 = In Func7 = In

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

PORTD = 0x00;

DDRD = 0x00;/ / Timer / Counter 0 initialization

/ / Laikrodis šaltinis: sistemos laikrodžio

/ / Laikrodis vertė: Laikmatis 0 Sustabdyta

/ / Mode: Normal viršuje = FFH

/ / OC0 galia: Disconnected

TCCR0 = 0x00;

TCNT0 = 0x00;

OCR0 = 0x00;/ / Timer / Counter 1 initialization

/ / Laikrodis šaltinis: sistemos laikrodžio

/ / Laikrodis vertė: 1 Laikmatis Sustabdyta

/ / Mode: Normal viršuje = FFFFh

/ / OC1A galia: Discon.

/ / OC1B galia: Discon.

/ / Triukšmas Canceler: Off

/ / Input Capture dėl krintančių kraštas

TCCR1A = 0x00;

TCCR1B = 0x00;

TCNT1H = 0x00;

TCNT1L = 0x00;

OCR1AH = 0x00;

OCR1AL = 0x00;

OCR1BH = 0x00;

OCR1BL = 0x00;/ / Timer / Counter 2 initialization

/ / Laikrodis šaltinis: sistemos laikrodžio

/ / Laikrodis vertė: Timer 2 Sustabdyta

/ / Mode: Normal viršuje = FFH

/ / OC2 galia: Disconnected

Autonominė Tarybų Socialistinė Respublika = 0x00;

TCCR2 = 0x00;

TCNT2 = 0x00;

OCR2 = 0x00;/ / Išorės Interrupt (-ai) initialization

/ / INT0: Off

/ / INT1: Off

/ / INT2: Off

MCUCR = 0x00;

MCUCSR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) initialization

TIMSK = 0x00;/ / Analoginis komparatorius initialization

/ / Analoginis komparatorius: Off

/ / Analoginis komparatorius Input gaudymą Timer / Counter 1: Off

/ / Analoginis komparatorius Output: Off

ACSR = 0x80;

SFIOR = 0x00;/ / I2C Bus initialization

i2c_init ();

LCD_init ();

clear_LCD ();while (1)

(

char mychar [100];

/ / Place your code here

strcpy (mychar, "Hello World");

print_LCD (mychar);

);

)
 
Tai daug paprasčiau skaityti.

Aš ne iš karto pamatyti kaltininkas, tačiau aš nesu susipažinęs su jūsų konkrečiu kompiliatorių.

Matau mychar naudojama keliose vietose.Kuris linija padarė skųstis?

Jūs naudojote mychar [] dviejose vietose.Galite pabandyti juos keisti į * mychar pamatyti jeigu kompiliatorių tampa laimingas.

Jūs įtraukta string.h du kartus.Tai neturėtų pažeisti, bet kas žino.

 
vis dar neveikia, bet aš tikrai pasakyti, thanks for your help.Ar galiu sužinoti, kokios kompiliatorių Jūs naudojatės?
Thanks for your help aikštelė kartąNuoširdžiausi linkėjimai

 
Ar jūs naudojate codevision?
jei ji yra, naudojant LCD funkciją codevision geriau.
naudoti
char mychar [] = "Hello World";

 
Ačiū už jūsų informaciją.Žinau, kad ji veikia, jei aš naudoju LCD funkciją.Bet atrodo, kad LCD yra 4 bitų režimu ir aš dabar bando naudoti 8 bitų režimu.Bet kokiu atveju tai mano pirmasis bandymas su AVR, kad aš noriu suprasti IO geriau.
Dėkojame už jūsų pagalbą.
Jei kas nors žino mano klaida prašome pataisyti mane.

Nuoširdžiausi linkėjimai

 
Labas,
Aš haved ta pati problema, tai jūsų programa veikia?
Jei taip, prašome atsiųsti failą.
Linkėjimai.

 

Welcome to EDABoard.com

Sponsor

Back
Top