[elektro] C18 kérdés

hg12345 hg12345 at freemail.hu
Thu Sep 12 14:32:04 CEST 2013


Hi,
a return nem kell mert a függvény ezzel zár.... de gondolom ez a legkisebb probléma.
a változóid léteznek, definiáltad a C-ben?
Ha igy írod a programot akkor nem lokális változóként definiáld öket.

az C-ben definiálni kell, 

"Tibor Kovács" <kovacs.tibor7909 at gmail.com> írta:
>Egy ujabb buktató.>
Van neküknk régebbről, még asm-es korból egy jól bevált crc-r rutin, amit>
eddig basicbe be tudtam szúrni, de itt C-ben az istennek sem fogadja el.>
Syntax error-t dob vissza... esetleg nem jól használom az asm beszúrást?>
>
void Crc8bit(void)>
{>
_asm>
BANKSEL iobyte>
MOVF iobyte,W>
MOVWF b_crcv4>
CLRF b_crcv2>
BSF b_crcv2,3>
crc8c:>
MOVF b_crcv4,W>
XORWF b_crc8,W>
MOVWF b_crcv3>
RRCF b_crcv3,1>
MOVF b_crc8,W>
BTFSC STATUS,0>
XORLW c_crc8c>
MOVWF b_crcv3>
RRCF b_crcv3,W>
MOVWF b_crc8>
RRCF b_crcv4,1>
DECFSZ b_crcv2,1>
GOTO crc8c>
BANKSEL porta>
RETURN>
_endasm>
}>
>
>
2013. szeptember 11. 15:37 Tibor Kovács írta, <kovacs.tibor7909 at gmail.com>:>
>
> köszi!>
>>
> így már ugy működik ahogy szerettem volna. kezdem kapizsgálni... a minap>
> kezdtem el a C-ben létezni, és vannak még dolgok bőven amik meg tudnak>
> kavarni.>
>>
>>
> 2013. szeptember 11. 15:27 Lajos Rancz írta, <lajos.rancz at gmail.com>:>
>>
> igen mert a pData_2 elé nem kell a csillag ha az nem lokális hanem vmilyen>
>> globális. Mivel ez itt értékadás nem pedig deklaráció. Tehát>
>>>
>> *Eset 1, globális:*>
>>>
>> char *pData_2 = NULL;>
>> ....>
>> void MyPrint(...)>
>> {>
>> pData_2 = data_2; // Globalis ertekadas>
>> for (...) ....>
>> }>
>>>
>> *Eset 2, lokális:*>
>>>
>> ...>
>> void MyPrint(....)>
>> {>
>> char *pData_2 = data_2; // Lokalis deklaracio + ertekadas>
>> for (...) ...>
>> }>
>>>
>> Üdv>
>>>
>>>
>> 2013. szeptember 11. 15:22 Tibor Kovács írta, <kovacs.tibor7909 at gmail.com>
>> >:>
>>>
>> > próbáltam így: *pData_2 = data_2;>
>> > de hibával fordul...>
>> >>
>> >>
>> > 2013. szeptember 11. 15:21 Lajos Rancz írta, <lajos.rancz at gmail.com>:>
>> >>
>> > > Hi!>
>> > >>
>> > > Úgy, hogy a ptr változót mindig az elejére állítod a for ciklus előtt.>
>> > >>
>> > > Üdv>
>> > >>
>> > >>
>> > > 2013. szeptember 11. 14:56 Tibor Kovács írta, <>
>> > kovacs.tibor7909 at gmail.com>
>> > > >:>
>> > >>
>> > > > szuper!>
>> > > >>
>> > > > Ez működik, viszont azt hogy csináljam hogy ha ezt:>
>> > > >>
>> > > > for (i = 0; i < 18; ++i)>
>> > > > {>
>> > > > ptr += sprintf(ptr, "%02x ", S2buffer[i]);>
>> > > > }>
>> > > >>
>> > > > többször is meg akarom hívni akkor ne fűzze mindíg az előző állapot>
>> > > > végéhez. Mert jelenleg ez van...>
>> > > >>
>> > > >>
>> > > > 2013. szeptember 11. 14:37 Lajos Rancz írta, <lajos.rancz at gmail.com>
>> >:>
>> > > >>
>> > > > > Helló!>
>> > > > >>
>> > > > > Hogy akarod kiírni mint hexa számok mint decimális számok vagy>
>> mint>
>> > > > > karakterek?>
>> > > > >>
>> > > > > hexában és decimálisan:>
>> > > > > int i;>
>> > > > > char *ptr = data_2;>
>> > > > > for (i = 0; i < 18; ++i)>
>> > > > > {>
>> > > > > ptr += sprintf(ptr, "%02x ", pS2buffer[i]); // Decimalisan a>
>> format>
>> > > > string:>
>> > > > > "%d ">
>> > > > > }>
>> > > > >>
>> > > > > Üdv>
>> > > > >>
>> > > > >>
>> > > > > 2013. szeptember 11. 13:58 Tibor Kovács írta, <>
>> > > > kovacs.tibor7909 at gmail.com>
>> > > > > >:>
>> > > > >>
>> > > > > > Sziasztok!>
>> > > > > >>
>> > > > > > Egy ujabb C-s kérdés merült fel bennem..>
>> > > > > > Mégpedig van egy bejövő soros adatom amit egy tömb-be letárolok>
>> (18>
>> > > > > byte),>
>> > > > > > ezzel eddig nincs is gondom, viszont ahoz hogy ezt ki tudjam>
>> írni>
>> > > > LCD-re>
>> > > > > át>
>> > > > > > kell tennem egy string-be formázottan. Van egy módszer amivel>
>> > > sikerűlt>
>> > > > de>
>> > > > > > túl hosszúnak találom, és az lenne a kérdésem hogy lehet ezt>
>> > > > > > leegyszerűsíteni.>
>> > > > > >>
>> > > > > > pl.: (ez csak 6 byte-ra vonatkozik, nekem ugye 18 kellene)>
>> > > > > > sprintf(data_2, "%c%c%c%c%c%c",>
>> > > > > >>
>> > > >>
>> >>
>> s2buffer[0],s2buffer[1],s2buffer[2],s2buffer[3],s2buffer[4],s2buffer[5]);>
>> > > > > >>
>> > > > > > gondoltam egy ilyenre, de ez nem működik...>
>> > > > > >>
>> > > > > > pData_2 = &data_2[0];>
>> > > > > > pS2buffer = &s2buffer[0];>
>> > > > > > for (i=0; i < 18; i++)>
>> > > > > > {>
>> > > > > > sprintf(*pData_2, "%2x", *pS2buffer);>
>> > > > > > pData_2++;>
>> > > > > > pS2buffer++;>
>> > > > > > }>
>> > > > > >>
>> > > > > > előre is köszi!>
>> > > > > > ----------------------------------------->
>> > > > > >           elektro[-flame|-etc]>
>> > > > > >>
>> > > > > ----------------------------------------->
>> > > > >           elektro[-flame|-etc]>
>> > > > >>
>> > > > ----------------------------------------->
>> > > >           elektro[-flame|-etc]>
>> > > >>
>> > > ----------------------------------------->
>> > >           elektro[-flame|-etc]>
>> > >>
>> > ----------------------------------------->
>> >           elektro[-flame|-etc]>
>> >>
>> ----------------------------------------->
>>           elektro[-flame|-etc]>
>>>
>>
>>
----------------------------------------->
          elektro[-flame|-etc]>




More information about the Elektro mailing list