Problém s kódom pre pic16f777 4 prepínač

T

Tom2

Guest
Písal som kód pre 4 polohový prepínač, ako je ukazujú v obrázku below.The problém je, že okruh nie je working.Is každý, kto vie, čo je problém ????( som PCM kompilátor a pic16f777 mikroprocesor), kód : if ((vstup (PIN_A3) == 0)) {/ / Ak je nízka setup_timer_2 A3 (T2_DIV_BY_1, 255,1), output_high (PIN_D2);} else if (((vstup (PIN_A3) == 0)) & & (vstup (PIN_A4) == 0)) {/ / Ak je nízka A_4 setup_timer_2 (T2_DIV_BY_4, 255,1), output_high (PIN_D3);} else if (((vstup (PIN_A3) == 0) & & (vstup (PIN_A4 ) == 0) & & (vstup (PIN_A5) == 0))) {/ / Ak je nízka A_5 setup_timer_2 (T2_DIV_BY_16, 255,1), output_high (PIN_C4);} else if (((vstup (PIN_E0) == 0) & & (vstup (PIN_A3) == 0) & & (vstup (PIN_A4) == 0) & & (vstup (PIN_A5) == 0))) {/ / Ak setup_timer_2 (T2_DISABLED, 255,1);}
 
Po prvé, zistil som, okruh trochu divné. Výstup 1 Ak je vstup 1, výstup 2 ak Input1 a vstup 2 a tak ďalej. Mimochodom, na nejaký výstup ísť vysoko, je pin 1 je vysoká. Ale to znamená, že iba prvá časť kódu je prevedený a program preskočí až na konci if, else, ak aj ostatné ustanovenia. Takže logika je chybný. Skúšobné každom prípade za sebou s if, else if žiadne veci. Tiež ak sú všetky vstupy nízke potom všetky doložky sú pravdivé a bude popravený. Všetky conditons by mala byť unikátne pre každý bod. Rovnako ako v prípade pin 1 do, else if pin 2 do B a tak ďalej. V tomto prípade je pin 1 bod bude mať najvyššiu prioritu. Dalo by sa Uistite sa, že jeden a iba jeden kolík bol stanovený, a tak skôr, než vykonáte nejakú akciu, ale to je len na vás. Tiež sú DIP prepínače debounced? spustite vstupy cez čipové vyrovnávacej pamäte CMOS (vstupné brány musí byť CMOS) a použiť správne hodnoty odporu a kondenzátora (je to len filter). Nemôžem si spomenúť hodnoty, tak Google prepínač odskoku, že sa niečo prísť. Alebo stačí použiť Delay_ms () vyhlásenie, skontrolujte, že PIN je stále nízka. Tiež stačí použiť if (vstup (PIN_E0), zabudnite na == 0 veci, nie je to necessayr od vstupnej funkcia vracia 1 alebo 0 (to je boolean) už. Dúfam, že pomôže.
 
Skontrolujte prosím, či sú porty nakonfigurované ako digitálne I / O
 

Welcome to EDABoard.com

Sponsor

Back
Top