Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   75 / 153
(#) El_Pinyo válasza bocios hozzászólására (») Máj 20, 2013 /
 
Az fname tömb nem dinamikus, egyszerű statikus tömb. A sizeof utasítás a paraméterül kapott tömbök méretével tér vissza fordítási időben. Egyébként az ilyesmit nem így szokás megoldani. Legegyszerűbb, ha létrehozol egy lokális tömböt, amely elegendő méretű ahhoz, hogy a karakterek elférjenek benne. Mivel lokális, a stack-en jön létre, tehát a függvényből való kilépés után megszűnik és nem foglalja tovább a helyet. Ezután már ezen a lokális tömbön lehet végezni a string műveleteket.
(#) icserny válasza Lüke Aladár hozzászólására (») Máj 21, 2013 /
 
Az alábbi eljárás 32 bites előjeles (long) típusú paramétert alakít karakterekké és ír ki.
lcd_putc() helyére az egy karakter kiíró eljárásod nevét helyettesítsd be!
  1. void outdec(long data) {
  2. static char sign, s[12];
  3. unsigned int i;
  4.         i=0; sign='+';
  5.         if(data<0) { sign='-'; data = -data;}
  6.         do {
  7.                 s[i]=data%10 + '0';
  8.                 data=data/10;
  9.                 i++;
  10.         } while(data>0);
  11.         lcd_putc(sign);
  12.         do{
  13.                 lcd_putc(s[--i]);
  14.         } while(i);
  15. }


Kis módosításokkal, ugyanezzel az eljárással, felskálázott értékeket adott tizedesjegyre is kiírathatunk (pl. millivoltokra átszámított feszültséget 3 tizedesre, vagy tizedfokokban mért hőmérsékletet 1 tizedesre):

  1. /**------------------------------------------------------------
  2.  * Decimális kiíratás adott számú tizedesjegyre.
  3.  *-------------------------------------------------------------
  4.  * data - a kiírandó szám (előjelesen)
  5.  * ndigits - a kiírandó tizedesek száma
  6.  */
  7. void outdec(long data, char ndigits) {
  8.   static char sign, s[12];
  9.   char i;
  10.   i=0; sign=' ';
  11.   if(data<0) { sign='-'; data = -data;}
  12.     do {
  13.       s[i]=data%10 + '0';
  14.       data=data/10;
  15.       i++;
  16.       if(i==ndigits) {s[i]='.'; i++;}
  17.     } while(data > 0 || i < ndigits+2);
  18.     lcd_putc(sign);
  19.     do {
  20.       lcd_putc(s[--i]);
  21.     } while(i);
  22. }
(#) bocios válasza El_Pinyo hozzászólására (») Máj 21, 2013 /
 
Ha megkérlek írsz erre egy példát? Én sem szeretném túlbonyolítani.
  1. char fname[25];


ezt szeretném feltölteni, akkor strcat jó lesz nekem?
Egyébként próbálkoztam így is, de valahogy nem stimmelt.
Pl.:
Az strcat visszatérési értékével kell folytatnom, azaz ha további strcat -ot hívok, akkor valahogy így?

  1. fname = strcat(fname,"akarmi");
  2. fname = strcat(fname,"masik akarmi");


Amiket hozzáfűzök, azokba van másik char[] és az RTCC miatt lenne BYTE is.
Ezeket cast-oljam char-ra, hogy az strcat működjön? (vagy legalább a BYTE-ot?)

RTCC-vel kapcsolatban én is belefutottam a fenti problémába, de nekem úgy sem működik az év megadásával a 14, hogy 0x14..
(#) bocios hozzászólása Máj 21, 2013 /
 
Közben látom, hogy az strcat visszatérési értékével nem kell csinálnom semmit!
Szerintem ez már jól működik, a gond lehet, hogy inkább az RTCC-vel van!

Ha van egy ilyenem:

  1. BYTE yr = rtcc_read_dt.f.year;


Miként fűzöm hozzá a fname char tömbhöz?
char -ra való cast nem igazán sikerült, próbáltam beletenni egy char tömbbe az yr változót és azt hozzáfűzni az fname -hez strcat-al
Itt 2 gond van (és időnként nem vagyok benne biztos, hogy MPLAB alatt azt látom ami a valóság)
simulator-ban próbálkozom:
  1. char yrarr[2];
  2. sprintf(yrarr,"%s",(char)yr);  // vagy csak siman (char) nelkul is probaltam


ha az év 14 akkor belekerül, hogy 14, de utána:
  1. strcat(fname, yrarr);


futása után az fname 145 -el bővül, a vicc, hogy az 5 az a hónap ami utána van egy a yrarr-hoz hasonló mtharr tömbbe!
Érdekelne mi lehet.. túlcsordul és az azt követő memóriacím alatt éppen a rákövetkező tömb tartalma található?
(#) _vl_ válasza bocios hozzászólására (») Máj 21, 2013 /
 
  1. sprintf(yarr, "%d", yr);

Az persze probléma, hogy az yarr mérete 2 byte, amibe bele kéne férnie az yr értéknek megfelelő karaktereknek (ez BYTE esetén legrosszabb esetben 3 is lehet), plusz a lezáró 0-byte-nak is. Szóval minimum 4-nek kéne ott lennie.
A végtelen sok strcat-olgatás helyett pedig egyben kéne előállítani az egész stringet, pl.:
  1. sprintf(fname, "Az ido: %d:%d:%d", ora, perc, masodperc);

Persze az fname tömbnek akkorának kell lennie, hogy bármi is van az egyes mezőkben, a végeredmény elférjen benne.
A hozzászólás módosítva: Máj 21, 2013
(#) bocios válasza _vl_ hozzászólására (») Máj 21, 2013 /
 
Hát igen talán az elsők között volt az sprintf ilyen használata, csak oda %s -et írtam, könnyen lehet, hogy azért volt rossz az egész utána!
(#) Hp41C válasza bocios hozzászólására (») Máj 21, 2013 /
 
Szia!
Itt mindenki bináris számokkal gondolkodik, de az RTC -d pakold BCD -ben adja az évet, hónapot, napot, órát percet és a másodpercet. Ha ezeket ez adatokat szeretnéd string -be konvertálni, egyszerűen a %d helett alkalmazz %x -et. (Az RTC nem fog 9 nél nagyobb digitet adni ezeknél az adatoknél, bár elképzelhető, hogy más adatot kaphatunk a nem használt biteken. Ekkor maszkolással lehet eltávolítani a nem kívánt adatot.)
Miért kell ennyit számolgatni?
  1. string date[9];
  2. date[0]= (year >> 4) | 0x30;
  3. date[1]= (year & 0x0F) | 0x30;
  4. date[2]='.';
  5. date[3]= (month >> 4) | 0x30;
  6. date[4]= (month & 0x0F) | 0x30;
  7. date[5]='.';
  8. date[6]= (day >> 4) | 0x30;
  9. date[7]= (day & 0x0F) | 0x30;
  10. date[8]='\0';

Ráadásul a fordító a >>4 műveletet swapf -re fordítja, nem osztásra.
A hozzászólás módosítva: Máj 21, 2013
(#) bocios válasza Hp41C hozzászólására (») Máj 21, 2013 /
 
A fentebb leírt sprintf működik remekül, köszönöm!


Igen a másik gondom az RTCC.. láttam, hogy BCD és, hogy miként lehetne neki kezdő értéket adni, de nem működik.
Amit Te írtál, ahhoz miként kell beállítani?
Erre gondolok:
  1. RtccTimeDate.f.year = 14;


Ez nem jó, de 0x14 -el sem megy, az a helyzet, hogy amikor itt debugolok, és megnézem mi van az RtccTimeDate struct -ba, látom, hogy a decimal érték 14..
Aztán amikor lekérem akkor nem ezt adja vissza.
Az általad leírt kódnál a date tömbbe az év helyén 17 áll ilyenkor.
Gyanítom nem így kell megadni neki..
(#) Hp41C válasza bocios hozzászólására (») Máj 21, 2013 /
 
Szia!
A 14 decimális érték 0x0E, azaz nem egy BCD szám. Ahhoz, hogy beírd az értéket az RTC -be előbb BCD kódra kell konvertálni. A year változó tárolja az évszámot évszázad nélkül (0..99).
byte year_BCD;
year_BCD = year + (year / 10) * 6;
Ezt írd be az RTC éveknek megfelelő helyére. Ugyan így a többi dátum és idő résszel.
Vizsgálatkor nem decimálisan, hanem hexadecimális formában nézd és az értéket pakolt BCD formában értsd - ugyan úgy néznek ki.
Kiolvasáskor ne decinális kiíratást használj.

Pl. 13.05.21 dátumot véve: year = 13 = 0x0D, month = 5 = 0x05, day = 21 = 0x15.
BCD -re konvertálva, year_BCD = 0x13 = 19, month_BCD = 0x05 = 5, day_BCD = 0x21 = 33. Tehát az RTC -be évnek 19 -et, hónapnak 5 -öt, napnak 33 -at kell beírni. Kiolvasni is ezt fogod. Ha hexadecimális formában íratod ki a sprintf vel, akkor 0x13 0x05 0x021 -et kapsz, ha a date stringbe konvertálod akkor "13.05.21" lesz az eredmény.
A hozzászólás módosítva: Máj 21, 2013
(#) slogan hozzászólása Máj 21, 2013 /
 
Sziasztok !

Tudom nem a reklám helye ,de tettem az apróba egy hirdetést ,aki C -ben ,PIC-ben otthon van ,hátha érinti a dolog.

Köszönettel !
-istván
A hozzászólás módosítva: Máj 21, 2013
(#) bocios válasza Hp41C hozzászólására (») Máj 21, 2013 /
 
Szia!

Sajnos még mindig nem az igazi.
Így állítom be:

  1. RtccInitClock();                                                                //turn on clock source
  2.    RtccWrOn();                                                                          //write enable the rtcc registers  
  3.    mRtccSetClockOe(1);                                                                  //enable RTCC output on RTCC output pin
  4.    mRtccSetInt(1);
  5.  
  6.    //Set Date and time using global structures defined in libraries
  7.    RtccTimeDate.f.hour = 1;                                                             //Set Hour                                     
  8.    RtccTimeDate.f.min =  7;                                                             //Set minute
  9.    RtccTimeDate.f.sec =  5;                                                     //Set second
  10.    RtccTimeDate.f.mday = 4;                                                         //Set day
  11.    RtccTimeDate.f.mon =  7;                                                         //Set month
  12.    RtccTimeDate.f.year = 19;                                                    //set year
  13.    RtccTimeDate.f.wday = 2;                                                     //Set which day of the week for the corrsponding date
  14.    
  15.    //Set the alarm time and date using gloabl structures defined in libraries
  16.    RtccAlrmTimeDate.f.hour = RtccTimeDate.f.hour;               //Set Hour                     
  17.    RtccAlrmTimeDate.f.min =  RtccTimeDate.f.min ;               //Set minute
  18.    RtccAlrmTimeDate.f.sec =  RtccTimeDate.f.sec + 4;    //alarm after ten seconds
  19.    RtccAlrmTimeDate.f.mday = RtccTimeDate.f.mday;               //Set day
  20.    RtccAlrmTimeDate.f.wday = RtccTimeDate.f.wday;               //Set which day of the week for the corrsponding date
  21.    RtccAlrmTimeDate.f.mon =  RtccTimeDate.f.mon;                //Se month
  22.    RtccAlrmTimeDate.f.year = RtccTimeDate.f.year;               //set year
  23.    
  24.    int ok = RtccWriteTimeDate(&RtccTimeDate,1);                                 //write into registers
  25.    RtccSetAlarmRpt(RTCC_RPT_TEN_SEC,1);                                         //Set the alarm repeat to every minute
  26.    RtccSetAlarmRptCount(5,1);                                                   //set alarm repeat count
  27.    RtccWriteAlrmTimeDate(&RtccAlrmTimeDate);                    //write the time for alarm into alarm registers
  28.    mRtccOn();                                                                                   //enable the rtcc
  29.    mRtccAlrmEnable();                                                                   //enable the rtcc alarm to wake the device up from deep sleep


aztán kiolvasás:
  1. BYTE yr  = Rtcc_read_TimeDate.f.year;


Erre ráhúztam a Te string-es példádat fentebb és a Watch ablak szerint
0x05 hexa, decimal 5 van benne, a date string pedig:
"05.07.05" -öt adott

még mindig nem 13 az év
(#) bocios hozzászólása Máj 21, 2013 /
 
Úgy tűnik a szimulátoral való próbálkozással van a gond.

  1. RtccReadTimeDate(&Rtcc_read_TimeDate);

Így olvasom ki a dátumot, és ugye rossz értékek vannk benne,
viszont az előző függvényben beállított változóból:
  1. RtccTimeDate.f.year = 19;

olvasva OK, a date string tartalmazza a 13 -as évet!
(#) Hp41C válasza bocios hozzászólására (») Máj 21, 2013 /
 
Szia!
Sajnos nem tudom, hogy mit is csinál egy ilyen sor: RtccTimeDate.f.min = 7;.
Az RTC idő regisztereit a RCFGCAL regiszter RTCPTR<1:0> bitjeivel címezve lehet az RTCVAL regiszteren keresztül:
RTCVAL<15:8>: RTCVAL<7:0>:
11 = Reserved 11 = YEAR
10 = MONTH 10 = DAY
01 = WEEKDAY 01 = HOURS
00 = MINUTES 00 = SECONDS

Szóval, a dátum és az idő beállítása (nincs nagy gyakorlatom ezzel a típussal):
  1. RCFGCAL = (RCFGCAL & 0xFCFF) | 0x300;
  2. RTCVALL = year_BCD;
  3. RCFGCAL = (RCFGCAL & 0xFCFF) | 0x200;
  4. RTCVAL = ((int)month_BCD << 8) | day_BCD;
  5. RCFGCAL = (RCFGCAL & 0xFCFF) | 0x100;
  6. RTCVAL = ((int)wday << 8) | hour_BCD;
  7. RCFGCAL = (RCFGCAL & 0xFCFF) | 0x100;
  8. RTCVAL = ((int)minute_BCD << 8) | second_BCD;
A hozzászólás módosítva: Máj 21, 2013
(#) El_Pinyo válasza bocios hozzászólására (») Máj 21, 2013 /
 
Egyébként a szimulátorról csak annyit, hogy az általad választott kontroller béta szupportált a szimulátorban, tehát nincs garancia arra, hogy jó értékeket mutat a SIM. Ezért az lenne a legjobb, ha a valós kontrolleren, debugger segítségével nézegetnéd az értékeket. Az is lehet, hogy teljesen jó amit csináltál, csak a szimulátor ad megtévesztő eredményt!
(#) Lüke Aladár válasza icserny hozzászólására (») Máj 22, 2013 /
 
Ebből kiindulva megoldottam a problémát egy IntToStr függvénnyel. Ha olyat szeretnék, hogy pl. A=234, azt hogy tudom kiíratni?
Én így álltam neki:
int a=234;
char szam[4];
...

IntToStr(a,szam);
LCD_OUT(1,1,szam);


Ekkor megjelent a 234 két hellyel jobbra, tehát úgy, mint ha az LCD_OUT(1,3,szam); parancsot adtam volna ki. Én viszont azt gondoltam, hogy így jó lesz, de nem:
LCD_OUT(1,1,"A = " );
LCD_OUT(1,5,szam);


Ekkor megzavarodik az egész. Kétszer jelenik meg a felirat, egyszer a második sorban és a számot, ha éppen négy jegyű a kijelző két szélén jeleníti meg szétbontva.
Most próbálok áttérni PIC Basic Pro-ról C-re, úgyhogy ez a rész még elég új.
A hozzászólás módosítva: Máj 22, 2013
(#) icserny válasza Lüke Aladár hozzászólására (») Máj 22, 2013 /
 
A válaszhoz látni kellene az IntToStr() és az LCD_OUT() függvényed forrását. Például nem tudom, hogy az előjelet (vagy szóközt) kiíratod-e külön karakterként?
(#) AZoli hozzászólása Máj 26, 2013 /
 
Sziasztok!

Újra előkerült EZ a probléma, tehát konstansokat pakolnék a program memóriába szekciókba, de nem megy azzal a technikával ahogy a függvényeknél működik.
MPLAB C30.
A .gld:
  1. .myDataSection 0x2000 :
  2. {
  3. *(.myDataSection);
  4. } >data

És a forrásban:
  1. const unsigned int __attribute__((__section__(".myDataSection"))) PowerSupplyArray [256] =
  2. { 0,  1,  2,
  3. ...

Hiba nélkül lefordul.. Mit csinálok rosszul?
(#) icserny válasza AZoli hozzászólására (») Máj 26, 2013 /
 
A DS51317 dokumentum 10. fejezét kellene megérteni hozzá (nekem még nem sikerült...). Itt a 10.4.1, illetve 10.4.2 alfeezetekben beszél hasonló dolgokról. Ami bonyolítja a megértést: bekavar a képbe a PSV elérhetőség is, no meg az is, hogy a mintapéldák assembly-ben vannak.
(#) _vl_ válasza icserny hozzászólására (») Máj 26, 2013 /
 
Esetleg amit 11.6, 11.7-ben írnak?
(#) nyarfa hozzászólása Máj 30, 2013 /
 
Sziasztok!

Kellene egy kis segítség. Kezdő vagyok nagyon a C18-ban (persze ASM-ben is) ezért megakadtam egy ponton.

Lenne egy változóm ami 1 byte hosszú lenne egy kezdeti értéke mondjuk 11001100 majd ez léptetném vagy balra, vagy jobbra. Az alsó négy bithez hozzá rendelném valahogy négy I/O portot.
volt egy kísérletem, de hibával száll ki:

header részlet:
  1. extern volatile near unsigned char x_mot;
  2. extern volatile near union {
  3.         struct {
  4.                 unsigned b0:1;
  5.                 unsigned b1:1;
  6.                 unsigned b2:1;
  7.                 unsigned b3:1;
  8.                 unsigned b4:1;
  9.                 unsigned b5:1;
  10.                 unsigned b6:1;
  11.                 unsigned b7:1;
  12.         };
  13.         struct {
  14.                 unsigned LATA0:1;
  15.                 unsigned LATA1:1;
  16.                 unsigned LATA2:1;
  17.                 unsigned LATA3:1;
  18.          };
  19. } x_motbits;

a program részlet:

  1. if (Dir_x==1)
  2.                                 if (x_motbits.b7==0)
  3.                                         x_mot=x_mot<<1;
  4.                                 else
  5.                                         x_mot=(x_mot<<1)+1;                            
  6.                         else
  7.                                 if (x_motbits.b0==0)
  8.                                         x_mot = x_mot>>1;
  9.                                 else
  10.                                         x_mot = (x_mot>>1) & 0x80;



valamit nagyon benéztem csak nem tudom mit.

  1. MPLINK 4.37, Linker
  2. Copyright (c) 1998-2010 Microchip Technology Inc.
  3. Error - could not find definition of symbol 'x_motbits' in file './main.o'.
  4. Errors    : 1
A hozzászólás módosítva: Máj 30, 2013
(#) Llajti válasza nyarfa hozzászólására (») Máj 31, 2013 /
 
Szia!

A linkernek az a baja, hogy nem találja az x_motbits változót, azaz nem definiáltad le sehol. A másik, hogy gondolom az x_mot az x_motbits-et is akarná jelenteni. A harmadik, hogy hiába rakod be a LATA0 jelzést a struktúrába, az nem a LATA-t fogja állítani, hanem az x_motbits.LATA0 bitjét (x_motbits.LATA0 megegyezik x_motbits.b0-al). Szerintem erre gondolhattál:
Header:
  1. typedef union {
  2.         unsigned char Value;
  3.         struct {
  4.                 unsigned b0:1;
  5.                 unsigned b1:1;
  6.                 unsigned b2:1;
  7.                 unsigned b3:1;
  8.                 unsigned b4:1;
  9.                 unsigned b5:1;
  10.                 unsigned b6:1;
  11.                 unsigned b7:1;
  12.         };
  13. } u_x_mot;
  14. extern volatile near u_x_mot x_mot;

c:
  1. volatile near u_x_mot x_mot;
  2. if (x_motbits.b0==0)
  3. {
  4.         x_mot.Value = x_mot.Value  << 1;
  5.         LATA3 = 0;
  6.         LATA0 = 1;
  7. }
  8. ...

Persze a LATA így még mindig nincs átállítva, azt mindenképp külön kell megtenni.
volatile, near tuti kell? Megszakításból használod?
Az extern azt jelzi, hogy az utána következő változó már le van definiálva egy .c fájlban, és csak az elérhetőségét adja meg. Header-be "extern char i;" .c-be "char i;".
A union-ból létrehozott változó mérete a unionban lévő legnagyobb típus mérete lesz, és a sorrendben megadott típusok a memória ugyanazon helyére mutatnak. Tehát a fenti kódban az x_mot.b0 az xmot.Value nulladik bitje.
(#) icserny válasza nyarfa hozzászólására (») Máj 31, 2013 /
 
Idézet:
„Lenne egy változóm ami 1 byte hosszú lenne egy kezdeti értéke mondjuk 11001100 majd ez léptetném vagy balra, vagy jobbra. Az alsó négy bithez hozzá rendelném valahogy négy I/O portot.”
Pontosítás: a "4 I/O port" az csak egy I/O port kimeneti adatregiszterének négy bitje.

Az uniókkal való cirkusz helyett egyszerűbb így:

  1. #define updateLATA(x) LATA^=((LATA^x)&0x0F)
  2. uint8_t xmotbits;


Forgatod az adatbájtodat, majd amikor kell, akkor "kiíratod":

  1. updateLATA(x_motbits);
(#) nyarfa válasza Llajti hozzászólására (») Máj 31, 2013 /
 
Igen a megszakítás lenne a megoldás, de itt a project: http://www.hobbielektronika.hu/forum/topic_post_1447055.html#1447055

A lábakat azért akatam "linkelni" a változó egyik bitjéhez mert eleve tévedtem most ebben a pillanatban jöttem rá. hmm
Végül is csak a 0-ik bit kell, és a byte-nak pedig "forogni" kell, azaz ami a léptetés során elveszne érték, az a másik oldalon jelenjen meg.

Tömböt lehet így "forgatni"?

  1. x_mot[4]>>1  // amikor is mind a négy érték egyet lép egyszerre


Remélem nem tévedek nagyot.
(#) nyarfa válasza icserny hozzászólására (») Máj 31, 2013 /
 
csak az első azaz X ilyen szabályos az Y az RA4,RA5,RC0,RC1 a Z RC2, RC7, RC6,RB3
A hozzászólás módosítva: Máj 31, 2013
(#) Hp41C válasza nyarfa hozzászólására (») Máj 31, 2013 /
 
Idézet:
„x_mot[4]>>1 // amikor is mind a négy érték egyet lép egyszerre”

x_mot[4] >>= 1; Szerintem csak a tömb 4. elemét lépteti.
(#) Llajti válasza Hp41C hozzászólására (») Máj 31, 2013 /
 
Ahogy a kollega mondja.
A >>, << egy bitmozgató művelet, tömbökön, egyebeken nem műkszik. Ezen kívül jó tudni, hogy ez nem a pic-féle rlncf, azaz az egyik oldalon kieső bit nem kerül a másik oldalra, hanem minden esetben 0-ák jönnek be.
(#) nyarfa válasza Llajti hozzászólására (») Máj 31, 2013 /
 
Nekem most pont ez a hátrány, hogy 0-ák jönnek.

Igazából erre van szükségem:
  1. //x_mot egy 8bites memória terület előzőleg feltöltve a kívánt értékkel pl:00111000
  2. RRF x_mot,0 //x_mot értékét W-be forgatja a kieső bitet C-be x_mot értéke változatlan
  3. RRF x_mot,1 //x_mot értékét lépteti el a hiányzó értéket C-ből veszi

igaz ez ASM, de pont azt csinálja ami nekem kell. Viszont C-ben minden fontosabb lépésnél ASM-et használni, nem túl elegáns és a C-t akarom megtanulni.
A hozzászólás módosítva: Máj 31, 2013
(#) Hp41C válasza Llajti hozzászólására (») Máj 31, 2013 /
 
A C18 -ban vag rá gyári macro:
Rlncf(var, dest, access);
Rrncf(var, dest, access);
dest 0 -> eredmény a WREG -ben, dest 1 -> eredmény a var -ban.
access 0 -> ACCESS bank szerint, access 1 -> BSR bank szerinti bank választás.

Ha valaki megnézi az assembly kódot is, rájön erre is:
x >>= 1;
if (STATUSbits.C) x |= 0x80;
A hozzászólás módosítva: Máj 31, 2013
(#) nyarfa válasza Hp41C hozzászólására (») Máj 31, 2013 /
 
Na ez viszont elegáns
(#) nyarfa válasza Hp41C hozzászólására (») Máj 31, 2013 /
 
MPLAB IDE 8.91 és MCC18 amit használok, de nemtudok asm fájlt kicsalni a fordítóból

Így hiba keresés nem nagyon fog menni.
A hozzászólás módosítva: Máj 31, 2013
Következő: »»   75 / 153
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem