[elektro] C18 kérdés
Tibor Kovács
kovacs.tibor7909 at gmail.com
Wed Sep 18 16:17:50 CEST 2013
Köszi, akkor marad az if-es szerkezet, pedig a switch -el pofásabb
lenne, de... több százas érték tartomány átfogásokra csak nem sorolom
fel az össze értéket :)
A Windows Phone-telefonomról küldtem
Feladó: Lajos Rancz
Feladva: 2013.09.18. 15:08
Címzett: elektro at tesla.hu
Tárgy: Re: [elektro] C18 kérdés
Hi!
switch (variable)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
....
break;
case 11:
....
}
De ettől egyszerűbb az if () else if () else if () stb
2013. szeptember 18. 15:05 Tibor Kovács írta, <kovacs.tibor7909 at gmail.com>:
> Azt szeretném megkérdezni hogy, a Switch - Case szerkezetben meg lehet e
> adni érték tartományokat? pl. a basic-nél amit eddig használtam meg
> lehetett ugy adni hogy "Case 1-10:", vagyis ha a vizsgált érték 1 és 10
> között van akkor hajtódik végre. Na ilyet hogy tudok C-ben megoldani?
>
> köszi
>
>
> 2013. szeptember 13. 8:02 hg12345 írta, <hg12345 at freemail.hu>:
>
> > Hi,
> > nem értek túlzottan hozzá, de mindenki arról cikkez, hogy az új "ipari
> > szabvány" a ARM lesz. Hogy ki mit használ azt maga dönti el.
> > uC vonalon, a PIC32-nek egy elönye van, hogy hasonló a periféria készlete
> > a többi PIC-hez, de ezek igen gyenge képességüek egy normális hasonló
> > perifériához. (Trabi és modern autó, mind a kettő megy), de ez a nagy
> > hátránya is két egy forma PIC perifériával még nem találkoztam :-( A MIPS
> > mint önálló cég megszünt, szétszedve adták el, és kérdéses lesz honnan
> > licenszelni a következő MIPS magot. (Igérték de nem hozták kia következő
> > nagyobb teljesítményű magot....) (A PIC nagyon jó volt egy ideig, de
> > személy szerint túl sokáig használtam :-(
> > Áraban már szerintem egyértelmű az elöny..... $1 kapsz 16K/2K M0 uC
> > 32lábbal 5V-os kivitelben, de $0.5 kaphatóak már az alap kivitelű M0/M0+
> > 3.3V eszközök, nézz körűl.
> >
> >
> > Az ARM vonalon nagyobb az élénkség és licenselt CORTEX M magokkal nagyon
> > sok cég gyárt uC, a PIC-hez képest elképtelhetetlen mennyiségű
> > periférákkal. Az induló fejlesztő eszközök $10-20 megvannak ezek már
> > tartalmazzák a teljes értékű programozót és debuggert is.
> > -M0 ajálják a 8/16 bites uC helyettesítésére
> > -M0+ ugyan ez de gyorsabb és kisebb fogyasztású
> > -M3 teljes értékű, de a fentieknél 30% tömörebb kód és gyorsabb
> > -M4 M3+DSP funkció
> > de erről inkább olvass a neten, (a perifériékat eltekintve a magasabb
> > sorszámuak felülről kompatibilisak kódban)
> > Már többen irtak van ingyenes fejlesztő környezet COOCOX, de 32K ig a
> KEIL
> > is használható szabadon, hasonlók a többi cég IDE rendszerei általában.
> >
> > Maga a futtató környezet, ténylég C barát, relativ cimzéssel müködik,
> maga
> > a C erre alapú PC+relativ szedi be a konstansokat és SP relativvel
> kezeli a
> > lokális változókat és a függyvény paraméter és visszatérő érték adatok.
> >
> > ---------------------------
> > Egyébként ez nem hit kérdése mint valamikor volt PIC-ATMEL háborusdi, ez
> > is csak egy rendszer valakinek tetszik másoknak, itt is megoldható a
> > feladat és a másikon is , a legfontosabb hogy mennyi idő alatt lehet a
> > terméket megbizhatóan elöállítani. Ez mindenki maga dönti el.
> >
> >
> > Zsolt <zsoltlevlistalaptop at gmail.com> írta:
> > >Ha már itt tartunk:>
> > Én megragadtam a pic 18-as sorozatnál. >
> > 1.Szeretnék továbblépni 32 bites irányba, de nem tudom merre induljak el.
> > PIC32, vagy más. Jó lenne LCD, meg esetleg android. >
> > 2.Mi a különbség a munkában, amit zongorázni lehet a 18 és a 32 bit
> > között? Más a fejlesztőeszköz(bár az ugye nem bitfüggő), vagy mire
> > gondolsz?>
> > >
> > Zsolt>
> > >
> > > -----Original Message----->
> > > From: elektro-bounces at tesla.hu [mailto:elektro-bounces at tesla.hu] On>
> > > Behalf Of hg12345>
> > > Sent: Thursday, September 12, 2013 7:45 PM>
> > > To: elektro at tesla.hu>
> > > Subject: Re: [elektro] C18 kérdés>
> > > >
> > > Hi,>
> > > Ez a CRC16 (8bites) számítás gyors és legtömörebb kivitele. (Tisztán
> C->
> > > ben)>
> > > >
> > > static void Calc_CRC( uint16_t* CRC,uint8_t C)
> > //folyamatos>
> > > ellenörzö összeg számító program>
> > > { register uint16_t i,x;>
> > >
> > /*----- RTU : CRC>
> > > ---*///http://www.dattalo.com/technical/software/pic/crc16.asm>
> > > { i= (C ^ *CRC) & 0x00FF;>
> > > x= i ^ (i>>4);>
> > > //atmeneti byte paritás számítása>
> > > x= x ^ (x>>2);>
> > > x= (x ^ (x>>1)) & 0x0001 ;>
> > > x= x ? 0xC001 : 0x0000;>
> > > *CRC = ((*CRC)>>8) ^ x ^ (i<<6) ^ (i<<7);>
> > > }>
> > > }>
> > > >
> > > static int GenIdenCRC(uint8_t* Array, int Lenght) { int i;>
> > > uint16_t CRC=0xFFFF;>
> > > *(uint32_t*)Array= FixIdenArray[(IdenArray[6]>>2)&0x0F];
> //adathalmaz>
> > > kiegészítése>
> > > for(i=0;i<Lenght;i++)>
> > > { Calc_CRC((uint16_t*)&CRC,*Array++);
> //következö>
> > > elem értékének generálása>
> > > }>
> > > *Array++=CRC&0xFF;>
> > > *Array =CRC>>8;>
> > > return CRC;>
> > > }>
> > > >
> > > generáláshoz ellenörzéshez jó, csak a buffer-ben mindig legyen 2byte>
> > > tartalék>
> > > >
> > > Amúgy kár erőltetni a 8 és 16 bites uC, árban tudásban könnyen lehet>
> > > kényelmesebb eszközt találni a 32 bitesek között... Dolgozni meg>
> > > zongorázni lehet a különbséget>
> > > >
> > > "Tibor Kovács" <kovacs.tibor7909 at gmail.com> írta:>
> > > >a hibaüzenet - Error: syntax error>>
> > > >>
> > > hogy tudom akkor ezt a dolgot megoldani? ha nem tudom pontosan melyik>>
> > > bankba teszi a változót akkor hogy állítsam? vagy a c-ben meg lehet
> azt>>
> > > mondani neki hogy hova tegye a változót deklaráláskor?>>
> > > >>
> > > egyébként azért van asm-ben ez a rész mert a kommunikációs csatorna>>
> > > tulvégén egy pici proc van amibe sehogy sem férnék bele ha C-ben írnám>
> > > a> programját... itt pedig nem akartam bajlódni ennek az átírásával.>>
> > > >>
> > > >>
> > > 2013. szeptember 12. 14:33 hg12345 írta, <hg12345 at freemail.hu>:>>
> > > >>
> > > > 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]>>>
> > > >>>
> > > >>>
> > > > ----------------------------------------->>
> > > > 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