[ shadow-bg @ 05.12.2010. 18:41 ] @
Pisem kod PIC kontroler koji ima na sebi serijski port i LCD ekran 16x2.
Moj problem je sledeci:

Code:

odziv = USART_Read();
ByteToStr(odziv,*lcdtekst);
Lcd_Out(1, 1, *lcdtekst);


Citat:
USART_Read = Returns the received byte. If byte is not received, returns 0.


Kad ja posaljem slovo A preko terminala, na LCD ekranu dobijem broj 65, sto je njegova ASCII vrednost. A ja zelim da na ekranu dobijem slovo A.
Kako da konvertujem ASCII kod u karakter?
[ pajaja @ 05.12.2010. 20:54 ] @
Pozdrav,

Byte u C-u 'ne postoji', tacnije postoji char koji je velicine 1 bajta. Ako funkcija USART_Read() vraca char a ti pozoves funkciju ByteToStr() koja recimo ocekuje int kao prvi argument a ti joj prosledis char, to bi bio verovatan uzork zasto dobijas broj a ne karakter. Posto je string array char-ova, probaj da direktno ubacujes u string kako citas sa ulaza. *(lcdtekst+i) = USART_Read() (gde je i pozicija u nizu).

Nisam radio sa kontrolerima tako da nemam iskustva sa tim funkcijama koje ti koristis ali nadam se da sam razumeo sta je problem.
[ shadow-bg @ 05.12.2010. 22:28 ] @
Razumeo si ti mene. Ali ja nisam tebe :)

*(lcdtekst+i) = USART_Read()

meni kompajler ovde prijavljuje "implicit cast of integral value to pointer"
[ pajaja @ 05.12.2010. 23:25 ] @
Pozdrav,

Nisam imao ceo kod pa sam pretpostavio da je promenljiva *lcdtekst a izgleda da je **lcdtekst? Ako je to u pitanju onda meni fali jedna zvezdica:)

Uglavnom, moja ideja je bila da direktno to sto funkcija USART_Read() vraca ubacujes u string.
na primer ako je string char str[16] da ubacujes vrednosti kao
Code (c):

str[0] = USART_Read();
str[1] = USART_Read();
str[2] = USART_Read();
...
 

ili (verovatno) u tvom slucaju:
Code (c):

*(*lcdtekst) = USART_Read();
*(*lcdtekst+1) = USART_Read();
*(*lcdtekst+2) = USART_Read();
...
 
[ shadow-bg @ 06.12.2010. 23:12 ] @
Hvala na pomoci, evo kako sam resio

Code:

ByteToStr(PORTD,dugme);
Usart_Write(dugme[0]);
Usart_Write(dugme[1]);
Usart_Write(dugme[2]);


Pretvorio sam byte u string i poslao ga karakter po karakter na serijski port :)