Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   10 / 153
(#) potyo válasza kissi hozzászólására (») Aug 21, 2009 /
 
Használd a Pickit2 saját programját, akkor tudsz égetni és szimulátorozni is egyszerre.

Idézet:
„Másik kérdés: szimulációnál ( MPLAB SIM ) a lépéseknél az asm-et mutatja. Be lehet állítani, hogy csak a C utasítást lépje le és mutassa, hogy mi történik ( ill. ezt úgy látom, hogy az előzetes részben csinálja, "ahol én még nem is írtam utasításokat" <-- inicializáló rész, ezt ki lehet kapcsolni?”


Tegyél egy breakpointot a legelső utasításra a saját kódodban, és akkor F9-et nyomva a saját inicializálása lefut, és már csak a te kódodat lépteti. Amúgy ha épp a C ablak van felül, akkor F7-el C soronként léptet, míg ha a Program Memory vagy a Disassembly Listing van felül, akkor meg asm utasításonként léptet. Arra vigyázz, hogy a Procedural Abstraction optimalizálást kapcsold ki, a debuggoláshoz, mert eléggé meg tudja keverni a dolgokat.
(#) potyo válasza watt hozzászólására (») Aug 21, 2009 /
 
Igazából logikus, amit indokként említenek, de ha eddig jó volt, akkor igazán hagyhatták volna ezután is úgy, vagy esetleg figyelmeztető üzenetet tettek volna.

Amúgy van 8.36-os MPLAB.
(#) Tibus hozzászólása Aug 25, 2009 /
 
Sziasztok!

Miért csinálja az MPLAB, vagy a PIC, hogyha egy 16bites int-be beírok 1-et(akár direktbe, vagy a programból), akkor 256 lesz az értéke a watch ablakban? Illetve bármit beírok és akárhol, akkor tökre nem az lesz. Az alsó és felső bájt fordítva van a binary nézetben, ezért lesz az 1-ből 256. De miért van fordítva? ICD2-vel debuggolok egy 16F88-ast és C-ben van a program. De végül is ez nem a programtól van szerintem.

Köszi!
Tibus
(#) kissi válasza potyo hozzászólására (») Aug 25, 2009 /
 
Köszönöm a segítségedet!

A "Procedural Abstraction optimalizálás" merre található ?

Steve
(#) icserny válasza kissi hozzászólására (») Aug 25, 2009 /
 
Idézet:
„A "Procedural Abstraction optimalizálás" merre található ?”

Project/Build options/Project menüpontban, MPLAB C18 fülön a Category: legördülő listán Optimization-t választva.

De megspórolhatod a megkeresésére fordított időt, ha fordításkor ezzel az üzenettel találkozol: This version of MPLAB C18 does not support the extended mode and will not perform all optimizations.
(#) potyo válasza Tibus hozzászólására (») Aug 25, 2009 /
 
Watch ablakban tudtommal lehet állítani, hogy melyik bájtot tegye előre, talán rosszul van a sorrend beállítva (ezt csak te állíthattad el, mert alapból eddig mindig jó volt).

De áruld el, hogy milyen C fordító, és jó lenne, ha a kódot is megmutatnád.
(#) potyo válasza kissi hozzászólására (») Aug 25, 2009 /
 
A projekt beállításainál, az optimalizálásoknál.
(#) kissi válasza icserny hozzászólására (») Aug 25, 2009 /
 
Talált, süllyedt

Mit tudok tenni az ügy érdekében, hogy legyen ilyen lehetőségem?

Steve
(#) icserny válasza kissi hozzászólására (») Aug 25, 2009 /
 
Idézet:
„Mit tudok tenni az ügy érdekében, hogy legyen ilyen lehetőségem?”

Csak azért, hogy legyen mit letiltani?
A Standard-Eval verzió elvileg 60 napig tudja.
(#) Tibus válasza potyo hozzászólására (») Aug 25, 2009 /
 
Szia Potyo!

Köszi a választ! Tényleg lehet állítani a sorrendet, de ehhez én tuti nem nyúltam hozzá, de egy vadiúj projektnél nem csinálta, szóval rájöttem, hogy az MPLAB-bal volt a kavarás. Amúgy ccs fordítót használok, a program meg tényleg nem számít, mert a végére már szinte csak egy sor volt benne, ahol két számot összeadtam
De akkor elvileg a program maga jó volt, tehát a PIC-en belül az a szám volt, aminek kellett lennie, csak én láttam valami hülyeségnek, igaz?

Köszi!
Tibus
(#) kissi válasza icserny hozzászólására (») Aug 25, 2009 /
 
Köszi, megtaláltam!

Steve
(#) icserny válasza Tibus hozzászólására (») Aug 26, 2009 /
 
Csak a megjelenítésvolt rosszul beállítva, emiatt a jó adatot rosszul mutatta. A Watch ablakban jobb egérgombbal kattintva előjön egy menü, amiben a Properties pontban beállítható a méret (hogy hány bájtot olvasson össze), a formátum (hex/bináris/decimális/float stb), s a bájtok sorrendje (High:low vagy Low:high). Na, ez az utóbbi volt rosszul beáll(ít)va!
(#) mammut hozzászólása Okt 18, 2009 /
 
Üdv!

Sajnos még csak most kezdtem Hi-Tech C-vel dolgozni, ezért volna egy kérdésem, hogy a következő progrmarész mit csinál pontosan:
  1. case 12:{
  2.                         if(line%8==7)
  3.                                 t=1;
  4.                         else
  5.                         {
  6.                                 if(k%8==0)
  7.                                 {
  8.                                         //fetch a character from data array.
  9.                                         value=*(CoName+(guide<<0)-(guide<<0)+cnt_flag);
  10.                                         //each led is illuminated with 0.
  11.                                         value=~value;
  12.                                         cnt_flag++;
  13.                                 }
  14.                                 t=value & 1;
  15.                         }


Valami jó C nyelvi oktató dokumentumot tud valaki a neten?
Köszönöm előre is!
(#) icserny válasza mammut hozzászólására (») Okt 18, 2009 / 1
 
A ChipCAD tanfolyami lapjáról letölthető a a C programozás alapjai-val foglalkozó jegyzet.

Az általad belinkelt kódból többé-kevésbé ki lehet sillabizálni, hogy mit csinál. De hogy miért csinálja, azt ebből a kiragadott részből csak találgatni lehet.

Mindenesetre ez egy swich elágaztató utasítás egyik esetének tűnik (állapotgép?), amikor a switch-ben vizsgált változó értéke éppen 12.

A line változó valószínűleg egy kijelző pontsorait számlálja. Ha a 8-cal történő osztás maradéka 7 (a karaketersorokat elválasztó üres sor?), akkor csak t=1 beállítás történik. Ha pedig k éppen nyolccal osztható (ez feltehetőleg a line-on belül egy újabb karakterpozíció?), akkor egy számított helyről elővesz egy bájtot ( a csillag az indirekt hivatkozás jele), a value nevű változóba teszi, majd bitenként komplementálja.

A megjegyzés arra utal, hogy a hardverben van egy invertálás, s a LED-eket a 0 érték gyújtja ki, tehát 0 kell oda, ahol az elővett adatban 1 volt (és viszont).

A cnt_flag változó a mutatót előállító kifejezés karakterenként léptetett indexe, ezért azt léptetjük.

A t= value &1; kifejezés t-be a kijelzendő adat legalsó bitjét teszi. Ez valami visszatérési értéknek tűnik, gondolom, azt mondja meg, hogy a (line, k) koordinátákkal jellemzett pontban ki kell-e gyújtani a LED-et. (Az elválasztó 7. sorokban t =1, tehát ott nem gyullad ki a LED...)
(#) Ideiglenes válasza icserny hozzászólására (») Okt 18, 2009 /
 
Ezt magam sem írhattam volna le szebben. Nagyon jó volt olvasni a válaszodat. Le a kalappal...
(#) potyo hozzászólása Okt 29, 2009 /
 
Szerintetek lehet bit tömböt létrehozni C18-ban? Valami ilyesmire lenne szükségem:

  1. typedef union _STATE_LIST
  2. {
  3.         struct
  4.         {
  5.                 unsigned char bytes[32];
  6.         };
  7.         struct
  8.         {
  9.                 unsigned bits:1[256];
  10.         };     
  11. } STATE_LIST;
  12.  
  13. STATE_LIST state_list;
  14.  
  15. state_list.bits[97]=1;
  16. state_list.bits[128]=0;


Csak az így nem működik természetesen
(#) lidi válasza potyo hozzászólására (») Okt 29, 2009 /
 
Huhh, most ez annyira nem rémlik nekem C ből, de az unionban levő struct oknak nem kellene nevet adni ?
(#) lidi válasza potyo hozzászólására (») Okt 29, 2009 /
 
(#) potyo válasza lidi hozzászólására (») Okt 29, 2009 /
 
Nem muszáj, vannak fordítók, amik megeszik anélkül is. Link
(#) potyo válasza lidi hozzászólására (») Okt 29, 2009 /
 
Igen, ezt ismerem, így vannak az SFR zóna bitjei is definiáva a header fájlokban. Elvileg a C szabvány nem foglakozik bitekkel, a bájt a legkisebb egység. Ugyanakkor gondoltam, hátha van valami bővítmény ezzel kapcsolatban a C18-ban, amiről én nem tudok.

Itt épp a példában nem lényeges a struct, de ahol konkrétan használnám, ott még van másik struct is, amiben vannak különböző hosszúságú elemek (8 és 16 bitesek vegyesen, illetve jövőbeli bővítésre is fel kell készülni, azért megy egészen 256 bitig). A bytes tömb igazából csak az inicializálás miatt van, később ez nincs használva.
(#) tothviktor1995 hozzászólása Okt 29, 2009 /
 
Hello

Én nem tudom ezeket hogy kell programozni.Teljesen amatőr vagyok.

Valaki segítene hogy hogy kell ezeket programozni

Előre is köszí
(#) potyo válasza tothviktor1995 hozzászólására (») Okt 29, 2009 /
 
Segíts magadon, Isten is megsegít...
(#) icserny válasza tothviktor1995 hozzászólására (») Okt 29, 2009 /
 
Vannak könyvek (többnyire angolul, ritkábban magyarul), adatlapok, internetes honlapok, tanfolyamok, sőt, van "PIC kezdőknek" c. topik is Bővebben: Link

Kérdezni csak konkrétan érdemes, csak arra várható érdemi válasz.
(#) watt válasza tothviktor1995 hozzászólására (») Okt 30, 2009 /
 
Nézz fel az oldalamra, ott írok a kezdőknek arról, hogy szerintem hogyan érdemes elindulni.
(#) kompakt hozzászólása Nov 29, 2009 /
 
Sziasztok kéne egy kis segitség
*****
Nem picbe kell se nem avrbe .

Sajnos rossz fórumot választottál a kérdésednek, számítógépes programozással itt nem igazán foglalkozunk (egy-két soros- vagy párhuzamos portbirizgáló téma ellenére sem).
-- kobold
(#) trudnai válasza potyo hozzászólására (») Nov 30, 2009 /
 
Rovid valasz: Nem.

Hosszu valasz:
  1. unsigned char state_list[32];
  2.  
  3. #define getBit(t,b) ( (t)[(b)/256] &&  (1 << ((b) % 256)) )
  4. #define setBit(t,b) ( (t)[(b)/256] |=  (1 << ((b) % 256)) )
  5. #define clrBit(t,b) ( (t)[(b)/256] &= ~(1 << ((b) % 256)) )
  6.  
  7. setBit( state_list, 97);
  8. clrBit( state_list, 128);
(#) potyo válasza trudnai hozzászólására (») Nov 30, 2009 /
 
Végül én is hasonlóképpen oldottam meg
(#) googa hozzászólása Nov 30, 2009 /
 
Sziasztok!

Azt írja a HiTech C program súgója, hogy: In MPLAB, set locations path to C:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe for compilator, assembler and linker.
De nem találok semmit, ahol ezeket be lehet állítani. Valaki esetleg tudna segíteni, hogy pontosan merre és hogyan?
(#) kissi válasza googa hozzászólására (») Nov 30, 2009 /
 
Szia!

Ha jól tudom a Project menüpont Set Language Tool Locations menüpontban lehet...

Steve
Következő: »»   10 / 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