Rozšíření PIC 16F627A o posuvné registry 4021 a 4094

Potřebuji poradit jak řešit program když mám PIC 16F627A a jeho výstupy jsou rozšířené o 5 ks 4094 a vstupy 2 ks 4021.Jsou to posuvné registry které načítám nebo vyčítám z registru PIC. Načtení a zápis do obvodů CMOS mi funguje bezvadně ale já bych chtěl na vstupní CMOS připojit tlačítka a po stisknutí aby mi aktivovali příslušný registr a ten se potom zapsal na výstupní CMOS. Aby to fungovalo že každé tlačítko bude mít funkci stiskem ON/OFF prostě jednou stisk zapne a podruhé vypne a aby byly ošetřeny zákmity tlačítek. Místo některých tlačítek budou jazýčkové relé proto to potřebuji ošetřit magnet který nad nimi pojede je sepne krátce po sobě dvakrát a to je nežádoucí. Prodleva po sobě jsoucích sepnutí tak 1s.

:arrow_right: administrator: přejmenováno z "Rozšíření PIC o 4021 a 4094"

Zdravím.
Zákmity tlačidiel ošetrujem tým spôsobom,že každých 10ms je vyvolané
prerušenie od TMR0 a počas tohoto prerušenia testujem či nie je stlačené nejaké tlačidlo,vo Vašom prípade či nie je nasetovaný bit v registri(v registroch) kam ukladáte zoskenované stavy z posuvných registrov.
Pokiaľ nič nie je nasetované,vrátim sa z prerušenia do mainu.
Ale ak niečo je nasetované,tak obsluha prerušenia "odskočí"do podprogramu v ktorom sa počíta koľo krát za sebou nastal tento jav.
Ja to nechám prejsť 5-krát čo je 50ms a úplne mi to doteraz stačilo.
Potom ako to úspešne prejde piaty krát nastavím príznak že je zopnuté tlačidlo.(Samozrejme tlačítko testujem aj naďalej a ak raz nie je nasetované mažem príznak zopnutia.)S týmto príznakom sa ďalej pracuje v maine.

K ovládaniu výstupu tlačidlom z dvoma stiskmi:

           BTFSS  LED;kontrola či je výstup on alebo off
           GOTO  set  ;LED je v nule
           GOTO  reset;LED je v jedničke

set BSF LED
RETURN
reset BCF LED
RETURN

Ako máte zabezpečené že počas presunu dát z posuvného registra do
mikrokontroléra sa pri zopnutí nejakého vstupu neprenesú do mikrokontroléra samé jedničky?
S pozdravom Relatko.

Zdravím. Koukal jsem na tu 4021 a asi by to stisknuté tlačítko šlo ošetřit vstupem PL č. pinu 9. Pomocí něj se načte hodnota do registru a pak rotací přečíst. Nebo plácám nesmysly :slight_smile: ?

no slo byto cez diody spojit tlacitka a priviest na PL tak aby pri stlaceni sa zapisali data do 4021. pri citani potom blokovat PL tj hodit na LOW a moze veselo nacitat stav.

JA by som tlacitka cez diody priviedol na procesor kde by to vyvolalo prerusenie, vyrobil impulz pre nacitanie na pin PL a bud hned nacital ktore to je tlacidlo …alebo nastavil priznak a potom v hlavnej slucke nacital.

Děkuji za nápady řešení mého problému s PIC nic méně jelikož jsem začátečník a zatím jsem naprogramoval jen pár jednoduchých prográmku tak bych Vás chtěl poprosit o bližší konzultaci. Kontakt na mé ICQ 260888336 a tam probrat problém podrobněji. Poskytnu část programu kterou již mám hotovou to je načtení a vyčtení registru z PIC do CMOS obvodů.
S pozdravem rnekolny