[elektro] C18 kérdés

Tibor Kovács kovacs.tibor7909 at gmail.com
Thu Sep 12 13:04:55 CEST 2013


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]
>>
>
>


More information about the Elektro mailing list