Fórum témák

» Több friss téma
Fórum » PIC programozása C nyelven, C-Compiler
Lapozás: OK   55 / 153
(#) Soós Antal válasza icserny hozzászólására (») Márc 14, 2012 /
 
Köszönöm 2. esetett szeretném de nem megy

void lcd (unsigned int poz, auto const rom char *szoveg[]) {
char c;
lcd_poz (poz);
c=*szoveg[0];

c be szeretném rakni a szövegkaraktereit persze ciklussal de most míg addig nem jutottam

nem használtan míg mutatókat most is csak azért mert nem tudom hogy lehetne ezt megoldani persze a normal
1. lcd_poz (poz);
2. printf

az megy csak sajátot akartam meg hát ezt egyszerűbb lenne használni
(#) Soós Antal válasza icserny hozzászólására (») Márc 14, 2012 /
 
Kösz még egyszer meg lett!
Esetleg hátha másnak is hasznos ide rakom!

  1. void lcd (unsigned int poz, const rom char *szoveg) {
  2. lcd_poz (poz);
  3. while (*szoveg){
  4. lcd_4bit(*szoveg);
  5. szoveg++;
  6. }
  7. }
(#) cszotyi hozzászólása Ápr 9, 2012 /
 
Sziasztok!
Engem az érdekelne, Hi-Tech c fordítónál, hogy lehet megtudni a compiler verzió számát a fordítás közben, vagyis attól függően szeretnék lefordítani egyes kódrészleteket, hogy milyen a verziószám, pl. 9.83 vagy 9.70.
Előre is köszönöm a válaszokat.
(#) MPi-c válasza cszotyi hozzászólására (») Ápr 9, 2012 /
 
Nézd meg a manual pdf-t, a "Predefined Macros" részben szerepel az a szimbólum, amivel a feltételes fordítás megoldható.
(#) benjami válasza cszotyi hozzászólására (») Ápr 9, 2012 /
 
  1. #if _HTC_VER_MAJOR_ == 9
  2. #if _HTC_VER_MINOR_ == 70
  3. // 9.70-es verzió kódja ide jöhet
  4. #elif _HTC_VER_MINOR_ == 83
  5. // 9.83-as verzió kódja ide jöhet
  6. #endif
  7. #endif
(#) cszotyi válasza MPi-c hozzászólására (») Ápr 9, 2012 /
 
Ezer köszönet mindkettőtöknek a fáradozást ...
(#) szaffo555 hozzászólása Ápr 13, 2012 /
 
Az alábbi C kód megfejtéséhez kérném a segítségeteket:
(már az első kérdés az miből látszik hogy az adott rövidke forrás CSS vagy pl. C18 compilerre van -e megírva?)
Feltételezve a C18 at, megnéztem abban a ADC.h függvénykönyvtárát, és mivel van benne ilyen, ebből indultam ki. Ebben viszont nincs adc() függvény. Most akkor mi a helyzet?
Másik dolog hogy a *(p+x) mutatót hogyan kell értelmezni a p definiálását is beleértve?

  1. #include"ADC.h"    
  2. #define p ((unsigned char volatile xdata *) 0x800)    
  3.  
  4. void main(void)  
  5. {  
  6.     unsigned char x;  
  7.     for(x=0;x=127;x++)  
  8.         {  
  9.             *(p+x)=adc();  
  10.         }    
  11. }
(#) icserny válasza szaffo555 hozzászólására (») Ápr 13, 2012 / 1
 
Idézet:
„CSS vagy pl. C18 compilerre van -e megírva?”
Szerintem egyikben sem így néz ki az ADC kezelés.

De a honlapomon találsz C18-hoz ADC példát. Bővebben: Link
A PIC18F14K50 olyan típus, amelyben az ANSEL/ANSELH regiszterekben csatornánként, egymástól függetlenül engedélyezhető az analóg funkció.

A PIC18F4550 pedig az olyan mikrovezérlőkre jellemző típus, amelyeknél az ADCON1 regiszterben csak folytonosan, AN0-tól kezdve engedélyezhetők az analóg csatornák. Lehet választani...
(#) potyo válasza szaffo555 hozzászólására (») Ápr 13, 2012 / 1
 
A *(p+x) az szerintem ugyanaz, mint a p[x].
(#) Programmer válasza szaffo555 hozzászólására (») Ápr 13, 2012 / 1
 
A p egy mutatóként van definiálva, típusa a zárójelben, értéke a 0x800. A volatile kulcsszó biztosítja, hogy az adott terület mindig a memóriából lesz kiolvasva közvetlen a felhasználás előtt. Ezt olyan változóknál szokás alkalmazni, amit több helyen is meg lehet változtatni. Például írhatja egy periféria és a felhasználó is a kódból.
A *(p+x) egyszerű mutató aritmetika, amit már potyo is leírt. Jó tudni, hogy bár az x 0 tól 127 ig fut, ez nem feltétlenül jelenti a p után következő 128 bájtot. Ha "p" short típusra mutatna akkor (p+1) két bájttal arrébb mutatna. Ha int akkor 4el, stb.
(#) trudnai válasza szaffo555 hozzászólására (») Ápr 17, 2012 /
 
Teljesen mindegy van-e adc fuggveny vagy sem mivel a for ciklus magja egyszer sem fog lefutni: 0-val tortenik az x valtozo inicializalasa majd a feltetel szerint akkor hajtoik vegre a ciklus torzs ha x valtozo egyenlo 127-tel.

Amugy valoszinunek tartom, hogy az "ADC.h" egy sajat header allomany, annal is inkabb, mert standard headereket nem idezojelekkel, hanem kacsacsorokkel szokas megadni (bar vannak ennel nagysagrendekkel durvabb megoldasok ebben a rovidke program reszletben, ugyhogy nem csodalkoznek ennek a konvencionak a be nem tartasan sem)
(#) Programmer válasza trudnai hozzászólására (») Ápr 17, 2012 /
 
Tudomásom szerint a kacsacsőr (<>) és az idézőjel ("") az include-nál az állomány keresésének módját adja meg. Ha jól emlékszem a kacsacsőr a standard elérési utakban keres, míg az idézőjel a forrás állomány aktuális mappájában. Az MPLAB például nem engedi, hogy módosítsd a saját include-jait ezért, ha erre szükségem van, másolatot készítek a projekt mappájába amit szabadon szerkeszthetek. Ezt viszont idézőjellel include olom...
(#) potyo válasza Programmer hozzászólására (») Ápr 17, 2012 /
 
Inkább csak a prioritást adják meg. Ha kacsacsőrbe teszed a saját mappádban található állományt, akkor ott is megtalálja, csak előtte megnézi, hogy van-e olyan a standard elérési utakon. Ha talál, akkor a standard útvonalon levőt használja, ha nem, akkor meg a saját mappádban levőt.
(#) icserny válasza Programmer hozzászólására (») Ápr 17, 2012 /
 
Egy praktikus szempont: Az ebbe a fórumba belinkelt programokba nem célszerű kacsacsőrt tenni, mert előfordulhat, hogy a kacsacsőrtől a sor végéig tartó szakasz "eltűnik". Biztonságosabb az idézőjel használata!
(#) potyo válasza icserny hozzászólására (») Ápr 17, 2012 /
 
Most kipróbálom:

  1. include <htc.h>


Szerk.: tehát ha code tagok közé tesszük, akkor jól jelenik meg. Egyébként code nélkül is jól kellene, hogy megjelenjen, itt valami el van rontva a kimeneten a html spéci karaktereknél - gondolom nem a htmlspecialchars php függvényre van bízva a dolog intézése, hanem valami saját cucc, ami rosszul kezeli. Talán az új hobbielektronikán már jó lesz, csak nem tudjuk, az mikor lesz
(#) trudnai válasza trudnai hozzászólására (») Ápr 17, 2012 /
 
Helyesbites! Az 'x' valtozot a for ciklusban minden feltetel vizsgalatkor feltolti 127-tel, mivel csak egyetlen egyenloseg jel van ott (meg engem is megkavart reggel). Szoval vegrehajtodik a ciklus torzs, meghozza pontosan vegtelenszer, egyszer sem tobbszor...
(#) Programmer válasza potyo hozzászólására (») Ápr 17, 2012 /
 
Természetesen így van, az először szót is oda kellett volna biggyesztenem.
U.I: ez csak akkor igaz, ha nincs teljes elérési út megadva. Teljesen egyértelmű elérési út esetén nem keres a standard könyvtárakban.
(#) k hozzászólása Máj 5, 2012 /
 
MP-lab ban a c fordító a következőket írja:

[quote]
C:\PICula\lcd\lcd8bit.c:1:Error: syntax error
Halting build on first failure as requested.

Kérdés honnan tudom, hogy melyik sorban van az a syntax error?
(#) icserny válasza k hozzászólására (») Máj 5, 2012 /
 
Idézet:
„?C:\PICula\lcd\lcd8bit.c:1:Error: syntax error”

A kettőspontok közötti "1" jelenti a sorszámot. Tehát a legelső sor (nálam ott komment kezdődik) el lett babrálva.
(#) k válasza icserny hozzászólására (») Máj 5, 2012 /
 
Erre gondoltam én is, de:
- hozzá sem nyúltam a programhoz, tehát a kommentet írta hibának

-miután én is erre a sorra gyanakodtam, töröltem az egész sort, csak az üres sorszám maradt - és erre is ugyanezt kaptam, (az első üres sor hibás??
(#) k válasza k hozzászólására (») Máj 5, 2012 /
 
[code=c]

00001
00002
00005
00006 #include "piccolo_all.h"
00007 #include
00008 #include
00009
00023 //-- A hardverfüggő részletek elkülönítése ------------------
00024 #if defined(__18F14K50)
00025 #define BUSY_FLAG PORTCbits.R

itt van a kimásolt "javított" -és hibás programrészlet- kezdve azzal az "ominózus" első sorral
(#) _vl_ válasza k hozzászólására (») Máj 5, 2012 /
 
Nem lehet, hogy valami "szemét", de nem látható karakter van abban a sorban?
(#) k válasza _vl_ hozzászólására (») Máj 5, 2012 /
 
Megvan a hiba!
Amint látszik is a másolt szöveg tartalmazza a sorszámokat is!
Az a syintax error
(#) _vl_ válasza k hozzászólására (») Máj 5, 2012 /
 
Ez fájdalmas
(#) icserny válasza k hozzászólására (») Máj 5, 2012 / 2
 
Légy szíves a PICula honlapon a baloldali menüben a PIC18 példaprogramok menüpontra kattintani, s ha eljutottál erre az oldalra, akkor töltsd le és bonts ki a code_examples.zip állományt!

Az ebben levő példaprogramokat nézegesd és használd, ne a dokumentációból kimásolt listákat! A listából másolt programoknál nem csak a sorszámmal lesz gubanc, hanem a kommentek is hiányosak, mert van, amit a Doxygen kiemel belőle.
(#) k válasza icserny hozzászólására (») Máj 5, 2012 /
 
OK!
Köszi, most már megtanultam.
Egyébként úgy is kezdtem, csak ennél a programnál bele kell nyúlnom, és nem akartam a te programodat piszkálni, ezért történt ez a másolás.
Az én kártyámon az LCD vezérlő bitek máshova vannak kötve (B4-B6), ezért kell a programba belepiszkálni.
(#) icserny válasza k hozzászólására (») Máj 5, 2012 / 1
 
Idézet:
„bele kell nyúlnom, és nem akartam a te programodat piszkálni”
A javasolt megoldás:
  1. copy lcd8bit.c my_lcd8bit.c
  2. copy lcd8bit.mcp my_lcd8bit.mcp

Ezután Notepad Editorral megnyitod az my_lcd8bit.mcp állományt, és a
  1. file_000=lcd8bit.c

sorban átírod a nevet my_lcd8bit.c-re

Nálam ez a "szokásos eljárás".
(#) k válasza icserny hozzászólására (») Máj 5, 2012 /
 
Köszönöm a segítőkész hozzáállást, és a sok jó tanácsot.
Most éppen a picula-4520.h állományban állítottam át a kapcsolók helyét, de gyakorlatozásnak, és a program működésének megértéséhez ez csak jó.
Amit írtál azt is ki fogom próbálni.
(#) k hozzászólása Máj 8, 2012 /
 
Most már egyszerűbb c programokkal elboldogulok, de valami olyan link kellene, ahol pontosan le van írva a c parancsok szintaktikája, és paraméterezhetősége.
Csak a példaprogramokból ezt megtanulni nem lehet.
(#) mps válasza k hozzászólására (») Máj 8, 2012 / 1
 
Következő: »»   55 / 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