Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok!
Hogy lehetne megoldani a legegyszerűbben PIC-ben egy bájt tartalmát (0-99-ig) 2 karakteres hétszegmenses kijelzőre kiíratni? Eddig úgy csináltam hogy megnéztem hogy nagyobb-e mint 90 aztán kírattam egy 9-est ha igen aztán, levontam belóle 90-et, aztán megnéztem hogy 9-e, ha igen akkor kiraktam egy kilencest az egyesek helyére. Ugyanezt eljátszottam a a többi számmal. ... Ennél van egyszerűbb megoldás, kultúráltabb?
Mondjuk A-ben van a számod. Csinálsz egy kis ciklust, ami 10-el csökkenti az A-t, amíg nem keletkezik alulcsordulás, és közben növeli egy másik változó értékét. Valahogy így:
clrf B ciklus movlw d'10' subwf A skpnc goto ciklus_vege incf B, F goto ciklus ciklus_vege movlw d'10' addwf A, F Ezután a B értéke a tizesek helyén álló számjegy lesz, az A értéke pedig az egyesek helyén álló számjegy. A kódot fejből írtam, elvileg jó, de azért nem garantálom. Kb. annyira kultúrált, mint a tiéd, de talán egy kicsit áttekinthetőbb. Jobb módszerről nem tudok.
Ime itt a példa.
Én csináltam (nem az egészet) és szerintem jól mükődik.
Sziasztok!
Van egy kis problémám, remélem ti tudtok segíteni. 16f877a első analóg csatornáján szeretnék feszültséget mérni. Külső referenciát használok ami egy REF191 tipusu 2,048 V-os IC. A mérendő feszültség kb 100 mV. Van egy hőelem ami egy AD621 IC-re van kötve. Az AD621 egy erősitő ami 100x -os erősitésre van beállítva. Ez eddig jó is. A problémám az, hogy a 100 mV -ot multiméterrel mérve rendben találom, de a PIC valamiért össze-vissza ugrál 30-40 mV-ot. Próbáltam hidegitő kondikat berakni de nem segített. Az ADCON0 = $5, ADCON1 = $85. Nem tudom mi lehet a baj. Van ötletetek? Köszi: cyberjani
Én igy csináltam és nekem nagyon satbilan azt méri amit kell.
Próbálj meg tőbb mérés átlagát venni. Én próbáltam 16 és 32 mérés átlagával is és nem sok külőnbség volt. Néha-néha becsúszik egy kicsi hiba.
Szerintem az is megoldás lehet (de legalább pozitívum), ha a kellő időnél is többet vársz a mérések között, magyarul lelassítva vezérled az AD-t...
Nem segitett probaltam tobbfelekeppen is, de semmi.
Kezdek arra gondolni, hogy nem jo maga a panel rs232 resze. (Mondjuk 2 panel van, 2 ugyanolyan, mindketto suket) Hogyan lehetne tesztelni, hogy jo e?
Köszi mindkettőtöknek, nekiesek programozni, majd kiderül mi lesz belőle
Sziasztok!
Olyan problémám lenne, hogy hajjaj!!! Hogy lehetne a legegyszerűbben osztani illetve szorozni olyan számokat amik 3 byte-osak/3 regiszterbe van eltárolva/??? Extra ráadásként az eredményt még ASCII-be is átkéne kódolni!!! Ha valaki okos megoldást tud azt meghívom
Esetleg ez segíthet:
Alapműveletek
ASCII kérdésedet most veszem észre...
Ha 0-9-ik kell ASCII kódokat előállítanod számok kijelzésére pl. LCD-s, akkor annak menete: A kijelzendő szám helyiértékein lévő számokat kell előállítani, hogy aztán 48-hoz hozzáadva megkapjuk a 0-9-ig terjedő karakterkódokat. (A 48 a 0 kódja) A helyiértékek számosságát pedig osztással(kivonások sorozatának számolásával) kaphatjuk meg. pl. a 342 esetében először 100-akat vonunk ki. Ezt háromszor lehet megtenni úgy, hogy ne legyen alulcsordulás. Ha alulcsordulást észelünk, azt már nem számoljuk bele(az a 4. kivonás). Visszaállítjuk az utolsó kivonás előtti értéket(ami itt 42) és folytatjuk a következő helyiértékkel (10). A maradék már egyből az egyeseket adja. Természetesen bármekkora számot át lehet így konvertálni, realtív kevés lépésből.
Oh!
Hát nagyon köszönöm! Ezzel már talán menni fog!
kb 10 hsz-el lejjeb ott a kész szám bontó kód.
Hello!
Igen, láttam azt is, sőt, le is tőltöttem, de azt hogy tudnám alkalmazni 3byte-os számra???
Igen itt szokott lenni a gond, mert ha valaki nem érti az elvét a feladatnak, nem tud értelmezni egy kódot. Még az sem biztos, aki érti.
Ezért gondoltam, hogy nem kódot írok, hanem leírom a lényegét. Azt meg akármennyi bájtra lehet értelmezni. Az más kérdés, hogy több bájtból kivonni, ellenőrizni az átviteleket stb. az kicsit bonyolultabb, mint egy esetében, de ezt mindenképpen meg kell ismerni, mert akkor más feladat sem megy. Kódokat bedobálni nem nehéz, bárhol lehet találni egy rakattal, akár a microchip oldalán is. :yes:
Bocsi! Nem figyeltem, hogy neked 24 bites számokkal kell dolgoznod.
De az elv ugyan az amit watt leirt csak én 8 bitesre csináltam.
Hello!
Én értem a lényegét, aszthiszem, de pl, a 2. byte-ra nem tom alkalmazni, mert akkor hamis eredményt kapok!Ugye a 2 byte-on összesen 65536 -ot tudok ábrázolni, abbol nem tudok kivonogatni 10ezret neg 1000-et mert nem fogja értelmezni,mert ugye egyszerre csak 1 byte-ot kezel,amin meg egyszerre csak 256-ot tudok ábrázolni! Ha meg elvégzem a 2. byte-ra ugyan ezt a módszert, akkor az csak akkor adna hiteles eredményt, ha beszoroznám 256-talNem? De lehet, hogy mégis csak én nem értem a lényegét, de akkor léccccciii javíts ki!
Igen két bájton 0-65535 érték fejezhető ki. Kivonni belőle 10000-ret a következőképpen lehet:
A 10000 az hexában 2710h Ekkor a KIVONANDÓ_L = 10h, a KIVONANDÓ_H = 27h Először a low bájtot(azaz10h)-t kell kivonni a kissebbítendő L bájtjából. Ekkor meg kell vizsgálni, hogy történt-e alulcsordulás. Ha igen akkor a H bájtot csökkenteni kell 1-el, majd alulcsordulást vizsgálni(ha már itt van alulcsordulás, a kissebbítendő már most kisseb, mint 10000 sőt, kisseb mint 16). Ha nincs alulcsordulás jön a KIVONANDÓ_H kivonása a kissebítendő H bájtjából. Ha ekkor ez is alulcsordul, akkor a kissebbítendő kisebb volt, mint a kivonandó, ebben az esetben a 10000-nél. Ez jelzi azt, hogy a következő helyiértékre lehet váltani, miután az utolsó kivonás előtti értéket visszaállítottuk a kissebbítendőben. A többit korábban tárgyaltuk(számlálni a kivonásokat alulcsordulásig, stb.)
Segítséget kérnék!
Miként kell értelmezni az alábbi sort?
(Azt értem, hogy számot a 'w'-be, de miért vannak << karakterek?) A másik ez:
>>>>
Hello!
Lehet valami abban a mit írtál! Lehet, hogy csak nem gondoltam át eléggé!:yes: Azért köszi! Most megpróbálom magamtól!Hátha sikerül!
Sziasztok!
Nemsokára belekezdek a PIC -es próbálkozásaimba. 16f84 -esen akarok tanulni, és a kérdésem az lenne, hogy a kimenetei mekkora terhelést bírnak el? pl. egy standard led-et elbír? (ja és arról a szlovák oldalról megépítettem a JDM programozót, és az ugye nemműködés esetén sem teszi tönkre sem a pc-t sem apic-t, ugye?)
Szia!
A PIC kimenetei elbírnak egy normál fényű LED-et, de a nagyobbakhoz már tranzisztoros kapcsolófokozatot érdemes építeni. A programozó természetesen tönkreteheti mind a PC-t (pl. rövidzárlat), mind a PIC-et (pl. helytelen bekötés), ezért többször nézd át az áramkörödet, hogy jól kötötted-e be.
köszi, a választ, akkor majd mindent figyelmesen átnézek, próbapanelnak meg csinálok olyat amin van led, meg nyomógomb
Ha még nem késő akkor inkább 16f627A vagy 628A-t használj! Olcsobb is és több periféria vanbenne a f84 és f627A közti különbség leírása meg van a chipcad honlapján.
Még pont jókor van!
Én szívesen választanám a 628A-t, de ide az van írva, hogy csak 16f8x -t tud progizni. Ha biztos forrásból tudod, hogy a 628A-t is viszi, akkor szólj és olyat veszek.
Esetleg megtudná valaki mondani, hogy a típusok végén szereplő betűk mit jelentenek? pl. 16f84 és 16f84A között mi a különbség?
Az "A" a sima (nem "A"-s) tipusok javított változata.
Néha előfordulhat, hogy többet tud minta sima zestvére.
Természetesen nem garantált hogy tudod égetni vele, de a meghajtó programja (Ic-Prog) tudja kezelni a 628A-t. A soros porti programozók nál (ami a soros portról veszi a tápot) előszokott fordulni hogy néha nem rendesen éget!
Igen finoman fogalmaztál, amúgy egyetértek. Nem is értem, hogy mernek ilyen égetőket publikálni. Annyi baj van velük, hogy nem győzöm lebeszélni róla a fórumtársakat(természetesen nem csak ezen a fórumon jönnek elő ilyen problémák). Még a megfelelően kiépített égetőkkel is előfordul, hogy nem működnek rendesen, pl. legutóbb egy 7406-os kimenete romlott el, ami néhány évig működött! Ha direktbe lett volna kötve a PIC a PC-re, akkor nem a 7406 nyekkent volna le, hanem a PIC! Egy normális programozó költsége alatta van egy jó PIC árának, nem érdemes ezen spórolni. De már azon túl vagyok, hogy meg lehet győzni az embereket, mert csak az egyszerűségere mennek, és aki ilyet épít, sajnos nem ért hozzá annyira, hogy meg tudja ítélni, hogy amit ajánlanak neki, az nem jó. Ezért nem is lehet rájuk különösebben haragudni, esetleg csak sajnálni. Ja és ismét elmondom, hogy akinek működik JDM annak szerencséje van, mert olyan a PC-jének COM portja, ami éppen elég Vpp-t termel. De nagyon sok olyan is van, ami nem, még a módosított JDM-el sem. Én nem ajánlom senkinek. Csak a szívás van vele, mert nehéz eldönteni, hogy a program rossz, vagy az égető szívat. Nem kimondottan kezdő barát helyzet!
Igazad van a sajátépítésű programozók nagy hátránya hogy nem lehet eldönteni hogy a program rossz vagy a programozó. Az én esetem az volt hogy építettem egyet (ProPic) egy ideig minden ok. de utánna egymásután 3 16F628A-t tett tönkre, ezután vettem egy PICKIT2-t valami 10.000 ért. Mostmár a dolog úgyjárja hogy nagyon sok PIC-et lehet vele programozni (10, 12,16, 18, 24 sorozatút) és lassan beintegrálják a MPLAB-ba is.
|
Bejelentkezés
Hirdetés |