Fórum témák

» Több friss téma
Fórum » Bináris óra
Lapozás: OK   13 / 26
(#) hackerfish válasza vilmosd hozzászólására (») Dec 26, 2010 /
 
Itt a táblázat nem fölösleges?
Mármint ha bináris az óra, a számok nincsenek kódolva, egy az egyben kiírhatók.
A multiplexnél az jó, ha RB-t invertálom? Így ott kapcsolja össze a ledeket a földdel, ahol 0 az értéke. A multiplex értékét tartalmazó változót pedig kiírás előtt invertálom, majd utána visszalakítom, hogy lehessen vele számolni. Az invertálásra PICeknél van külön művelet, pl. NOT?
A ledek bekötését valahogy így gondoltam:

led.PNG
    
(#) vilmosd válasza hackerfish hozzászólására (») Dec 26, 2010 /
 
Hali
Tablazattal konnyebben meg lehet csinalni szerintem. A BIN koddal meghivod a ket tablazatot, ahova beirod (binarisan) az altalad kivant variaciot (PORTA, PORTB) majd kiteszed a portra, es kesz. Nem kell konvertalni, szamolgatni, csak ket call.
  1. Table           ADDWF   PC              ;ADD TO PC
  2.         RETLW   B'00111111'     ;CODE FOR 0
  3.         RETLW   B'00000110'     ;CODE FOR 1
  4.         RETLW   B'01011011'     ;CODE FOR 2
  5.         RETLW   B'01001111'     ;CODE FOR 3
  6.         RETLW   B'01100110'     ;CODE FOR 4
  7.         RETLW   B'01101101'     ;CODE FOR 5
  8.         RETLW   B'01111101'     ;CODE FOR 6
  9.         RETLW   B'00000111'     ;CODE FOR 7
  10.         RETLW   B'01111111'     ;CODE FOR 8
  11.         RETLW   B'01100111'     ;CODE FOR 9

Ez peldaul egy 7 szegmenses kijelzo meghajtasa ASM-ben.
A hasznalata :
  1. movfw   num
  2. call   Table
  3. movwf    PORTB
Ezzel a "num" valtozo erteket alakitjuk at a 7-szegmenses kodra, majd kitesszuk a RB-re.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 27, 2010 /
 
A hét szegmenses kijelzőnél értem is, de bináris változó esetén mért van rá szükség? Ott a változót mindenféle alakítás nélkül ki lehet írni, ahogy van nem? Persze akkor a ledeket szépen sorban kell bekötni, nem összevissza.

led.PNG
    
(#) _JANI_ válasza hackerfish hozzászólására (») Dec 27, 2010 /
 
Referenciaként ajánlom ezt a _cikket_. ( Ill. A cikkben az forrásfájlt. )
(#) hackerfish válasza _JANI_ hozzászólására (») Dec 27, 2010 /
 
Jéé, ezt még nem is láttam. Köszi!
(#) hackerfish hozzászólása Dec 27, 2010 /
 
És szerintetek mi legyen a 3 funkció?
Mi a legjobb megoldás amit ki lehet hozni 3 bitből?
[stop/play] [óra +] [perc +]
vagy...
[óra > perc > másodperc] [+] [-]
Most hogy így belegondolok a másodperc állítgatása eléggé fölösleges.
Az óra, és perc beállíthatósága fontos. Az óra megállítása legyen a harmadik?

_JANI_! Ezt nem értem: "Ill. A cikkben az forrásfájlt."
Milyen harmadik cikk? Én csak egy egyoldalas cikket láttam, folytatás nélkül.
(#) hackerfish hozzászólása Dec 27, 2010 /
 
És a PORTB-t, vagyis az MPEX (multiplex) változót hogyan tudnám invertálni, úgy hogy kiírás után újra invertálva az eredeti számot kapjam, és ne kelljen a biteket egyesével vizsgálni és megváltoztatni? Vagy ezt csak bitenként lehet?
(#) hackerfish válasza hackerfish hozzászólására (») Dec 27, 2010 /
 
Az invertálásos kérdés már nem aktuális, megtaláltam:
movlw B'11111' ; Bitmaszk
xorwf MPEX,1 ; Invertálás
MOVF MPEX,W
MOVWF PORTB
movlw B'11111' ; Bitmaszk
xorwf MPEX,1 ; Invertálás
(#) _JANI_ válasza hackerfish hozzászólására (») Dec 27, 2010 /
 
( Illetve... Bocs nem akartalak megtéveszteni. )
_ASM_-fájl.
(#) hackerfish válasza _JANI_ hozzászólására (») Dec 27, 2010 /
 
Jaaa... ahha! :heureka:
(#) hackerfish hozzászólása Dec 27, 2010 /
 
Íme a kijelző
Lehet hogy egy műanyag tolltartóba lesz beleépítve.
(#) hackerfish hozzászólása Dec 28, 2010 /
 
Ha PORTA-t beállítom, úgy hogy R0 bemenet, a többi kimenet legyen, és kiküldök egy 4 bites bináris számot a portra, mért R0-on kezdi a kiírást?
...
; PORTA
MOVLW B'00000111'
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'00001'
MOVWF TRISA
...
CLRF MPERC1
MOVLW B'1111'
MOVWF MPERC1
...
MOVF MPERC10,W
MOVWF PORTA
...
A szimuláció ezt írja ki:
PORTA/Binary: 00001110
De szerintem ennek kéne lennie:
00011110

A hardver majdnem kész, márcsak a megrendelt 7805-re várok, meg a nyomógombos nyák és a programozás van hátra.
(#) vilmosd válasza hackerfish hozzászólására (») Dec 28, 2010 /
 
Hali
Mivel bit helyesen teszi ki a portra az erteket, ez teljesen termeszetes. Viszont ha azt akarod, hogy a 4 bit egyyel feljebb keruljon el kell shiftelni balra 1x, es utana kiirni a portra.
  1. ...
  2. RLF MPERC10,W
  3. MOVWF PORTA
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Hali!
Az "el kell shiftelni" mit jelent?

Most kicsit változtattam, és egyszerűsítettem a progin.
Az előbb kicsit összekavartam, mert az invertált portnak az RB-nek kell lennie, nem RA-nak. Javítottam.

Az egyszerűség kedvéért minden portot beállítottam kimenetnek. RA4 mintha nem működne...
Rámértem a lábra, és amikor kéne, nincs rajta fesz.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Ha egy ilyet csinálok:
MOVLW B'00011111'
MOVWF PORTA
Csak az alsó 3 led világít.
És nem elkötés, mert a lábon sincs meg a feszültség.
A ledek így vannak bekötve:
legalsó - RA1
RA2
RA3
legfelső - RA4
Mit csinálok rosszul?
(#) vilmosd válasza hackerfish hozzászólására (») Dec 28, 2010 /
 
A shifteles magyarul eltolast jelent 1 bit helyertekkel.. lehet jobbra, lehet balra. Mondtam mar, hogy olvassad a T es T oldalt. Ott minden utasitasnak le van irva a mukodese. Az RA4 problemara ugyanott, vagy az adatlapban megtalalod a valaszt. Ez azzal a kulonlegesseggel rendelkezik, hogy a CMOS kimeneti bufferbol csak az also "N" csatornas FET letezik, a felso "P" csatornas nem. Ugy hivjak hogy "Open Drain". magyarul nem tud csak "0"-t kiadni, "1"-ben szakadas.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Ezt hogy érted? Akkor RA4 egyáltalán nem tud 1-et kiadni?
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Most köthetem át a ledet RA0-ra?
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Jólvan, átkötöttem, így most működik is. RA4 bemenetnek azért használható?
(#) vilmosd válasza hackerfish hozzászólására (») Dec 28, 2010 /
 
Az RA4 termeszetesen hasznalhato kimenetkent es bemenetkent is. Erosen javaslom, hogy vedd elo az adatlapot es olvasd vegig az elsotol az utolso betuig (na jo az impresszumot nem fontos). Ott minden kerdesre valaszt kapsz.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Jó, de az adatlap bazi hosszú... maximum átnézem, és a fontosabb részeket végigolvasom, vagy ilyesmi.
Mosthogy kicsit 'megkeveredtek' a számjegyek, nem tudom simán kiírni a bináris számokat a változókból.
Pl. a 9 nem 1001 lesz, hanem 0011, mert a port bitjeinek sorrendje ilyen:
led4 -> RA0 (legfelső)
led3 -> R3
led2 -> R2
led1 -> R1
Itt szükség lenne egy olyan táblázatra, amit korábban mondtál, de a bit eltolással egyszerűbben megoldható nem?
Ide RRF ugye?
Pl.:
RRF MPERC10,W ; eltolás
MOVWF PORTA ; kiírás
RLF MPERC10,W ; visszaalakítás
(#) vilmosd válasza hackerfish hozzászólására (») Dec 28, 2010 /
 
Idézet:
„Jó, de az adatlap bazi hosszú”
De ezt el kell olvasni, sot meg kell tanulni, mert kulonben nem fogod erteni a PIC belso felepiteset, es igy nem tudod programozni sem!
Idézet:
„bitjeinek sorrendje ilyen: led4 -> RA0 (legfelső) led3 -> R3 led2 -> R2 led1 -> R1”
Ezt meg lehetne ugy is oldani, hogy bekotod bit helyesen: RA0-> bit0 RA1 -> bit1...
Vagy a tablazat, mert mivel nem sorban vannak a bitek, igy a shifteles sem segit rajta.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Mért, a shiftelés nem ilyet csinál?
3214 -> 4321, vagy az utolsó bit nem kerül az első helyre?
Vagy ez így nagyon béna?
Nemsok kedvem van újra bekötni, mert az összeset át kellene rakni.
(#) vilmosd válasza hackerfish hozzászólására (») Dec 28, 2010 /
 
Mondtam mar, hogy olvasd el a t-es-t oldalon az utasitasok mukodeset, es szintaktikajat! Ott vilagosan leirja es peldakkal illusztralja hogyan mukodik az utasitas. Van 8+1 bit (8 a regiszter+1 a "Carry"). A RLF pl elsifteli balra a valtozo 8 bitjet, a "0" bitbe betolja a "Carry" bitet. Probalgasd a szimulatorban , es figyeld mi tortenik a valtozoban kulonbozo tartalmaknal.
(#) hackerfish válasza vilmosd hozzászólására (») Dec 28, 2010 /
 
Ok, átkötöttem. Tökéletesen működik! (Bár egyenlőre még csak fényeffektként funkcionál.)
(#) hackerfish válasza vilmosd hozzászólására (») Dec 29, 2010 /
 
Hali!
Most ott tartok, hogy ki tudom írni a másodperc első számjegyét, a második oszlopban meg megjelenítek egy ötöst. (Utóbbit csak az időzítés miatt csinálom.)
A másodperc növelődik is, de nem pont 1 másodperc alatt. Itt nem lehet szünetet használni, mert a multiplexet folyamatosan pörgetni kell. Csak a kiírást tudom ciklusba tenni, és meghatározni, hogy növelés előtt hányszor írja ki az adatokat.
Itt a kódom, az lenne a kérdésem, hogy eddig jó -e, és hogy hogyan tovább? Az időzítés pontos beállítását most kellene megcsinálni, vagy majd a végén, ha a többi kód is megvan?

binclock.ASM
    
(#) hackerfish válasza vilmosd hozzászólására (») Dec 29, 2010 /
 
Már eljutottam odáig, hogy az órát is mutatta, de akkor egyszercsak valami elromlott.
A ledek többször egymás után gyorsan felvillannak, majd elalszanak és vége.
Kipróbáltam, hogy kitörlöm az órás részt, és csak addig hagyom meg a kódot, ameddig tutira működött.
Így is ugyanaz.
Utána csináltam bele egy sima villogtatást, hogy kipróbáljam, hogy egyáltalán rendesen működik -e még a PIC, de az is ugyanezt csinálja.
Most akkor mivan? :help:

Szerk.: Most megint jó, nem tudom mivolt az előbb...
Átfutnád a kódot, hogy jó -e?

binclock.ASM
    
(#) hackerfish válasza hackerfish hozzászólására (») Dec 29, 2010 /
 
Valószínűleg csak az elem merült le 5V alá. Kicseréltem, mostmár nem vacakol.
Már megijedtem, hogy sikerült kinyírni a PIC-et.
(#) _JANI_ válasza hackerfish hozzászólására (») Dec 29, 2010 /
 
Érdemes lett volna az 5V-os tápegység megépítéséve elkezdeni a tesztelést!
(#) hackerfish válasza _JANI_ hozzászólására (») Dec 29, 2010 /
 
De ezt a kis órát mindenképpen hordozhatóra szeretném, nem hálózatról akarom működtetni.
Mondjuk a teszteléshez tényleg használhatnék tápot is...
Következő: »»   13 / 26
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