[elektro] C18 kérdés

hg12345 hg12345 at freemail.hu
Thu Sep 12 14:33:25 CEST 2013


Mert azt a linker kezeli.


"Tibor Kovács" <kovacs.tibor7909 at gmail.com> írta:
>Így már majdnem lefordul, csak a BANKSEL-t nem tudom vele megetetni...>
>
void Crc8bit(void)>
{>
_asm>
BANKSEL iobyte>
MOVF iobyte, 0, 0>
MOVWF b_crcv4, 0>
CLRF b_crcv2, 0>
BSF b_crcv2, 3, 0>
crc8c:>
MOVF b_crcv4, 0, 0>
XORWF b_crc8, 0, 0>
MOVWF b_crcv3, 0>
RRCF b_crcv3, 1, 0>
MOVF b_crc8, 0, 0>
BTFSC STATUS, 0, 0>
XORLW c_crc8c>
MOVWF b_crcv3, 0>
RRCF b_crcv3, 1, 0>
MOVWF b_crc8, 0>
RRCF b_crcv4, 1, 0>
DECFSZ b_crcv2, 1, 0>
GOTO crc8c>
BANKSEL PORTA>
RETURN 0>
_endasm>
}>
>
>
2013. szeptember 12. 13:04 Tibor Kovács írta, <kovacs.tibor7909 at gmail.com>:>
>
>>
> 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