Re: Obsluha tlačítka v assembleru pro procesory PIC 10,12,16F
Milan Kratochvíl
krata.milan na seznam.cz
Neděle Leden 19 14:12:34 CET 2025
Zdravím všechny
Je to již víc než 14 let co jsem to programoval do jednoho stroje a
nedaří se mi to najít a tak alespoň popíšu jak jsem to udělal.
Měl jsem stroj s asi dvaceti vstupy. Jako filtr jsem měl pro každý vstup
bitovou a bytovou proměnnou.
V časovači jsem pouze dektementoval všechny bytové proměnné které nejsou
nulové.
V běhu programu jsem jsem dělal následující akce dle podmínek:
Pokud je BYT nulový provede se negace BITU a nastaví se BYT na
stanovenou hodnotu.
Pokud BIT a VSTUP jsou stejné (0 a 0 nebo 1 a 1) nastaví se BYT na
stanovenou hodnotu.
Dále jsem celý program řídil podle BITŮ.
Stanovenou hodnotu pro BYT jsem měl takovou aby její dekrementace
časovačem dala 8ms.
Jeden senzor měl dvojitý filtr a ten jsem měl udělaný následovně.
Pro tento vstup jsem měl druhý bit a byt. (BIT2 a BYT2) a podmínky jinak
byly stejné, ale druhou stanovenou hodnotu pro časovač jsem měl delší.
V běhu programu jsem jsem dělal následující akce dle podmínek:
Pokud je BYT nulový provede se negace BITU a nastaví se BYT na
stanovenou hodnotu.
Pokud je BYT2 nulový provede se negace BITU2 a nastaví se BYT2 na druhou
stanovenou hodnotu.
Pokud BIT a VSTUP jsou stejné (0 a 0 nebo 1 a 1) nastaví se BYT na
stanovenou hodnotu.
Pokud BIT2 a BIT jsou stejné (0 a 0 nebo 1 a 1) nastaví se BYT2 na
druhou stanovenou hodnotu.
Dále jsem celý program řídil podle BIT2.
Pro Vás by mohl být BIT vstup po filtraci a BYT2 signál o dlouhém stisku.
Přeji hezké odpoledne
Milan
Dne 19. 01. 25 v 11:48 Ladislav Kručinský napsal(a):
>
> Zdravíčko při neděli, kolezi.
>
> Více než kdy jindy jsem se poslední dny cítil jako Saturninův strýc
> František: „Nepotřebuji týt z toho, co objevili jiní…“
>
> Potřeboval jsem si do PICu naprogramovat jednoduchý časovač pro
> medomet, obsluhovaný jedním tlačítkem – krátký stisk něco, dlouhý
> stisk něco jiného. Chtěl jsem, aby tlačítko bylo obsluhováno pomocí
> přerušení timeru – čili žádné čekání v programových smyčkách, aby bylo
> odolné proti zákmitům – debouncing a aby se poznala chyba, když
> tlačítko zůstane viset. Nu a zapotil jsem se. „…A přitom taková
> blbost, že?...“ abych ocitoval dalšího klasika. Nakonec jsem to po
> týdnu dal dohromady (jsem v důchodu, hraju si, vždycky chvilku,
> nefungovalo to tak den pauza, …). A tak bych se rád dotázal zde
> přítomných kolegů, kteří jsou v programování PICů v assembleru zběhlí:
>
> Jak to řešíte vy? Je někde nějaký osvědčený postup s příklady přímo
> v MPASM ? Já tak narychlo nic nenašel, v nějakém předchozím projektu
> jsem aplikoval vertikální čítač, ale to mi tady přišlo poněkud
> komplikované. Nakonec je toho asi 40 řádků v obsluze přerušení. Ale
> docela rád bych viděl, jak na to chodíte vy?
>
> Prosím neozývejte se s jazykem “C“ – ten je mi naprosto Cizí i když
> chápu že to v něm lze efektivně a robustně napsat. Rád bych právě
> porovnal přístupy v assembleru, tedy pokud nejste žárliví právě na to
> svoje řešení. Já do přílohy dávám svůj program, ať si případně
> pozvednete sebevědomí 😊. Vzhledem k tomu, že programuju vždycky
> nějakou capinu a pak třeba půl roku nic, snažím se ten program
> komentovat jako pro dementy – abych si vzpomněl co tam mám a proč.
>
> Hezkou neděli přeji.
>
> Ing. Ladislav Kručinský
>
> Koněvova 427/90
>
> 713 00 Ostrava - Heřmanice
>
>
> _______________________________________________
> HW-list mailing list - sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20250119/e3953a50/attachment.htm>
Další informace o konferenci Hw-list