PIC16F84A a 16bit číslo - 16 bit inkrementace a dekrementace

Ahoj, potřeboval bych s něčím trochu píchnout. mám PIC 16F84A a potřeboval bych aby při každém proběhnutí programu (stisku tlačítka) se zvýšilo 16bitové číslo o 1. Prosím o ukázku jak odečítat nebo přičítat o 1.
Jde mi oto že 16bitů je moc na jeden registr a nevim jak se to rozděluje aby fungoval ten odpočet.

:arrow_right: administrator: přejmenováno z "pic 16F84A a 16bit číslo???"

Cau, treba takle …[code] cblock 0x20
countL ;low
countH ;high
endc

start clrf countL
clrf countH
nop
incf countL,f
btfss STATUS,Z
goto $-3
incf countH,f
goto $-5[/code]

Trošku bych to s dovolením upravil, aby bylo začínajícím jasné, kam s tím dalším kódem…

init clrf countL clrf countH ; btninc incf countL,f btfss STATUS,Z goto $+3 incf countH,f ; goto $-5 ; nop ; nop ; your code nop ; goto btninc

(nepřehlédnout změnu znaménka u prvního ‘goto’, a to že druhé ‘goto’ je zrušeno)

Odečítání bude stejné, jen místo instrukcí INCF budou instrukce DECF, v takovém případě ale bude možná potřeba ohlídat proměnné, aby na nulách nepodtekly, tedy pokud by to mělo něčemu vadit. Jinak pokud to bude podprogram (doporučeno), tak na konci bude místo ‘goto btninc’ instrukce ‘return’ (a podprogram se samozřejmě bude volat pomocí ‘call’)

A ‘goto $+3’ opravit na ‘goto $+2’, páč jsem někde potratil ten první NOP… :blush:

Já si už na assembler PIC moc nevzpomínám, ale nemá to být spíš takhle?

incf countL,f btfsc STATUS,Z incf countH,f (jasně že pro test nulového výsledku to není vhodné)

To bych taky chtěl, “už si příliš nepamatovat assembler”… Nějak mě to C leze do hlavy pomaleji, než bych si představoval :confused: Ale pořád nevíme, co na to náš beginner, nějak se neozývá.

Děkuju moc všem, ale jsem trochu natvrdlej. Můžete mi to prosím nějak líp vysvětlit? Chci to dát na konec programu, bude to jakoby smyčka která čeká pokaždé na stisknutí tlačitka, pak projede program a na konci se to zvýší o 1, aby při příštím stisku začínal program s větším číslem. Jo a ještě do toho aby se číslo zobrazilo na displeji. Mam tu k dispozici nejake lcd znakove displeje a nebo ledkove.

nooooooo, takže viděl bych to asi takhle, cucni si ten texťák a podiv se na to. přeci jen už je po půlnoci, tak mi to moc nemyslí, takže prosim ostatní o kontrolu :smiley:
zdrojak.txt (1.52 KB)

Pawalos: Pěknej full service :slight_smile: Co myslíš, zvládne si sám napsat obsluhu displeje?

Dredd: Jakej displej teda hodláš použít? To je nějaká školní úloha?

no tak já teda doufám že se alespoň pokusí něco napsat :slight_smile:

ted bych se tedy rád podíval, co kolega Dredd má napsaného, aby sme viděli, že naše snaha není marná :slight_smile:

muzes bejt natvrdlej sebevic ale musis si umet poradit,
ve vetsine pripadu pokud davam nejakej kod verejne tak je funkcni i v simulatoru, takze kdyz si to skopirujes do MPLABu a odsimulujes tak zjistis jak to funguje, pak muzes podnikat vlastni upravy klide pokus/omyl tim se to naucis …
jinak ovladat dislpej (jakejkoliv) kdyz se nedokazes poprat s timto ? :unamused:
tak ukaz co si napsal sam …?

Tak Vám znova děkuju, zkusim to zpíchnout. S tím displejem to zvládnu, už jsem viděl pár příkladů a mam i na to knížku. Akorád mi furt nebylo jasné co s tím číslem, teď už to vim. Jestě to musim trochu domyslet. Musim vyleptat plošňák a čekam na nějaké součástky. Abych to moch odskoušet. Jo a jak se někdo ptal jestli je to školní úloha, tak není. Jsem mechanik elektronik se širším zaměřením (PC,Spotřební elektronika a zabezpečovačka). Zkrátka, hrabu se ve všem. Programování jsme měli ve škole taky ale jen tak okrajově. Dost bastlim a rozšiřuju si postupně vědomosti, když dělá člověk v práci pořád stejné věci už 6 let tak se trochu zapomíná. :question: :question: :bulb:

melo by to bejt obracene, nejdriv to odskouset a pak udelat plosnak :wink: , pak se muze stat ze budes skrabat desku, neco tam zapomenes atd, dej nam nejakej popis co to bude, jak to bude fungovat, schema , poradime…, vymyslime …

Proč to řešíte přes Z??

incfsz LOW goto $+2 incf HIGH

Tak jinak, potřebuju přidat do programu ten lcd displej aby mi zobrazil a zvýšil aktuální hodnotu MCODE_2 a ještě bych tam potřeboval nejaký výstup na relé které po naprogramování toho “černého obvodu” na obrázku bylo sepnuté asi cca 3-5s. Půjde tam ten displej?
Programator.png
Program.txt (23.3 KB)

Ja a je mi jedno jestli zobrazí ten displej čislo ve dvojkové, desítkové nebo 16kové soustavě.

RA4 na rele, otevřenej kolektor, RB0-RB5 LCD.

No tak na jeho místě bych si dal spíš LEDkovej displej, bude to s ním pro začátek o trochu jednodušší, ale to se bude muset rozhodnout on sám…

Dredd: Co nepájivý kontaktní pole, máš?

No jasně, nepájivé pole mám, co bych to byl za elektronika bez nepájivého pole.

Dobrý, tak než začneš dělat nějaký desky, tak do něj zaraž tu 16F84 a ozkoušej si to všechno na něm (mimochodem, když jsem začínal s PIC, tak jsem neměl ani to pole, svoji první 16F84 jsem cpal do Alfy 2, měl jsem v ní na místě čítače 7493 patici… 4 horní nožičky “vedly” do vzduchu :smiley: )

Jakej displej k tomu chceš dát? Jde o to, že každej má nějaký výhody a nevýhody, a nevíme, co přesně máš k dispozici a ani pořádně to, jestli jenom děláš pokusy nebo jestli a kam chceš finální produkt nakonec dávat… (?) Znakový displeje umějí na začátku občas trošku potrápit (kontrast, čekačky, čtyřbitový zapojení taky není pro začátek úplně nejlehčí…), ale zase jak už ho jednou rozjedeš, tak už s ním tolik práce není, a umožní ti zobrazit toho víc (ovšem zase třeba nesmí moc na sluníčko, moc nesvítí atd). LEDkový displeje jsou lepší v tom, že líp svítí, a že vidíš hned jak to funguje či nefunguje, ovšem znamená to taky to (kromě spotřeby), že ho musíš řídit multiplexně, což je občas taky legrace (nějaký ty tabulky, přerušení, časovače…), trochu víc vývodů na propojování, a krom toho by se ti v daném zapojení už nedostávalo I/O vývodů toho PICu.

Ale to už jistě všechno víš, tak ať tu zbytečně neplácáme, tak nám řekni, jakej přesně displej teda dáme (a máme)…? A taky jeslti znáš třeba takovej obvod 74LS(HC)595, 74164, a jak funguje…?