Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok! Egy lcd kijelzőn szeretnék 0 - 9 számolni ezzel a ciklussal, de csak egy fekete négyzet villog a kijelzőn.Az i váltózó értéket hogyan tudnám kiíratni az lcd kijelzőre?
Próbáld meg, hogy az i értékéhez hozzáadsz 48-at. Ha jó lett, akkor gondolkodj el, miért! Irányvonalnak javaslom az ASCII kódkészlet és az LCD karaktertábláját tanulmányozni.
Szerintem hex30-at hozzá kell adni, hogy ascii legyen.
HEX 30 <--> 48 dec !
Sany: szerintem a késleltetés rossz helyen van ( bár én még csak assemblyben programozok remélem jól értem a parancsaidat!) Steve
Szia!
#define VALTOZO VALTOZObits.x Ez a sor ez tuti? Nem #define VALTOZObits.x VALTOZO ? Bár arra meg ezt dobja: Error [1039] illegal character in macro name '.'
Képtelen vagyok lefordítható állapotba hozni a kódot!
Kérlek írd le úgy, hogy a változó neve TQA és a 0. és 1. bitjét akarom használni! Továbbá hova helyezzem el a programban a különböző részeket? Szerk: Kicsit rinyálnom kellett itt és rögtön működik!
Ha így gondoltad watt, akkor így sem működik.
Én két problémát látok!
Az egyik: kétszer növeled i értékét ciklusonként! A másik, hogy a 48-at minden ciklusban hozzá adod, pedig csak egyszer kéne. De a legegyszerűbb ,ha nem 0-9 ig megy a ciklus, hanem 48-57 ig! Azzal, hogy adj hozzá 48-at arra akartak rá világítani, hogy ASCII kódban a "0" = decimális "48" "1" = decimális "49" és így tovább! Ezért javasolták, hogy nézd meg az ASCII kódokat!
A MikroElektronika mintapéldáiban így tudják:
Tehát _LCD_CLEAR az lcd_clear helyett és lcd_chr() az lcd_custom_out() helyett. Idézet: „Kicsit rinyálnom kellett itt és rögtön működik!” Ez azt jelenti, hogy sikerült?
Így sem jó. Lehet hogy nem tudja a PIC , hogy ASCII kód a 48?
Ennek pedig így is mennie kéne.
Ha csak egy 48-at küldesz ki, akkor mit mutat az LCD? (egy 0-át kéne látod!) Várj csak! Az i=i+1 minek van ott? A for ciklusban már egyszer magától növekszik! Persze ettől még valami számoknak meg kéne jelenniük... (ha jól van inicializálva az LCD.)
Köszönöm mindenkinek a segítséget , így valóban működik, ahogy írtátok.
Ismét gondom van!
Nem tudok egy port lábat beolvasni, pontosabban mindig ugyan azt olvassa. LED=LATCbits.LATC1; Így próbálkozom, de nem megy. A "LED" az egy általam definiált másik láb. Az biztosan működik, mert kipróbáltam. Azt szeretném, hogy RC1 értéke kerüljön a "LED" által mutatott másik lábra, de mindig "0"-át olvas, vagy legalább is úgy tűnik! A PIC 18f14k50, C18 compiler. Az RC1-es lábon be van kapcsolva at INT1 megszakítás lefutóélre, ami működik is, továbbá kivan kapcsolva a komparátor. CM1CON0bits.C1ON = 0; // Disable comparators CM2CON0bits.C2ON = 0; Ezzel kapcsoltam ki a komparátort, nem tudom elég-e. Ja és a kérdés: Mit csinálok roszúl?
Sziasztok!
Egy olyan problémám van, hogy egy .asm fájlt szeretnék lefordítani, de nem igazán akar összejönni MPLAB-ban. Még kezdő PIC-es vagyok, interneten találtam egy kapcsolást, amihez mellékelte a szerző az áramkörben található PIC forráskódját. Elvileg működik, csak nem tudok belőle .hex-et varázsolni, mert folyton hibaüzeneteket ír ki az MPLAB, de sajnos nem vagyok még jártas ezek értelmezésében. Segítene valaki azzal, hogy megpróbálja lefordítani? Így hátha kiderül, hogy a hiba a forráskódban van, vagy én csinálok valamit rosszul. Kösz Üdv Szabi Idézet: „Ja és a kérdés: Mit csinálok roszúl?” Mondjuk úgy, hogy átestél a ló másik oldalára. Nézd meg az adatlapban, hogy a LATx regiszterek mire valók! Figure 9-1-en az RD LAT hatására mehet-e a lábról az adatbuszra a jel? Ha nem, akkor milyen úton keresztül mehet?
Basszus 20x átolvastam és nem jöttem rá!
Kezdtem már kicsit mérges lenni, hogy miért vissza kérdezel, miért nem a megoldást mondod, de mondom azért is megtalálom a "Figure 9-1"-en a megoldást és meg van! És szerintem többet tanultam mint suliba hetek alatt! Szóval akkor ezzel azt akarod mondani, hogy ha egy lábra írok akkor azt a LATx-el csináljam, ha olvasok akkor a PORTx-el? Idézet: „hogy ha egy lábra írok akkor azt a LATx-el csináljam, ha olvasok akkor a PORTx-el?” Pontosan. Ez egy főszabály, jegyezd meg !
Oksa! Köszönöm! Megjegyzem!
Neked is Potyo köszönöm!
Ja és már működik a dolog amire ez az egész kellett!
Véletlen magamnak válaszoltam, de Potyo -nak szántam!
Sziasztok!
Hogyan tudnám futtatni a PIC-re feltöltött programot? Ez egy pic18f4455, a MPLAB-ból el tudtam indítani, PICKIT2-vel, de a nélkül szeretném, úgy hogy ha ráadom a tápot elinduljon magától. Az MCLR lábat egy 22k-s ellenálláson keresztül a +5V ra kötötten de semmi, nem indul el. Próbáltam az adatlapon 4.2. fejezetben szereplő reset áramkört is de nem indul el a program. A config bitek között az MCLR engedélyezve van. A tápegység egy számítógép táp. Nincs valakinek ötlete?
Nagyon sok minden lehet gond.
A PIC inkabb harver, mint szoftver, szoval azert egy kapcsolasi kornyezetet rajzolhatnal. Oszcillator-beallitas pl.? Tap biztosan jo? Szurokondik ott vannak a taplabak korul? Biztos, hogy nem indul el a progi? Nem csak nem jut el valameddig? Probalj egy ledet kigyujtani az elso harom utasitassal. Megszakitasvektorok, startvektor jo helyen allnak? A config biteknel rengeteg dolgot be lehet meg kapcsolni, hogy ne induljon el, mondjuk a tobbszorozest, stb, stb. Elsokent probalj egy NAAAAGY resetet (chip erase) csinalni rajta, aztan ujra feltolteni. Idézet: „Azzal, hogy adj hozzá 48-at arra akartak rá világítani, hogy ASCII kódban a "0" = decimális "48" "1" = decimális "49"” Az ilyet amugy sokkal jobb hexaban megadni, mivel egyszerubb elemezni mi is tortenik: 0x30 --> '0', 0x31 --> '1' -- azaz egybol laltni milyen szamot jelent a kod mikor olvassa a forrast, ugye a '3'-ast elveszi az ember a fejeben es mar tudja is mi az abra. Masik megoldas ha karakteresen adjuk meg, tal;an az meg olvashatobb: j = i + '0';
Próbáld meg, hogy nem 22k-val húzod fel, hanem 10k-val. Tegyél oda még egy 100n-t is a test felé. Ha a PK2-vel megy, akkor mennie kell így is!
Ez meg mi a banat? Ha masik lapra akarsz ugrani, akkor PAGESEL makrot kell hasznalni! Azt azonban erdemes lenne megnezned az adatlapban, hogy a GOTO 2k cimtartomanyt kepes megcimezni, Te ennek a kozeleben sem jarsz! Tehat valojaban nem ugrasz masik lapra, vegig a nullas lapon marad a programod, igy a lapozassal sem kell torodnod. Amivel valoszinuleg ossze kevered, hogy mikor szamitott ugrast hajtasz vegre (esetedben az ADDWF PCL-lel) akkor a PCLATH-t valoban fel kell tolteni, de ezt a PAGEISEL makroval kell megtenni (vedd eszre az I betut, tehat ez nem azonos a PAGESEL-el!) |
Bejelentkezés
Hirdetés |