Jednotlačítkový spínač s PIC 16F84A

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
PPavel

Jednotlačítkový spínač s PIC 16F84A

#1 Příspěvek od PPavel »

Zdravím. Potřeboval bych jednotlačítkový spínač s PIC 16F84A, tedy funkci ZAP/VYP na jednom tlačítku, ale pro 4 výstupy na kterých se budou spínat LED diody.
Něco jsem zkoušel, ale je to moje první zapojení s PIC a nechce mi to chodit. Můžete se mi na to prosím podívat jestli to může splňovat můj požadavek, případně opravit, a napsat prográmek?
Obrázek
Po zapnutí a resetu jsou všechny výstupy vypnuté.
Předem moc Ď za pomoc. Pavel.
stinger.stinger@email.cz
Uživatelský avatar
ViPali
Příspěvky: 524
Registrován: 21 lis 2005, 00:00
Bydliště: Bratislava

#2 Příspěvek od ViPali »

Ak chceš len zapínať a vypínať 4 LED, tak potom asi takto:

Obrázek

ak ale chceš nájsť chybu v programe, tak daj celý .asm súbor. Zapojenie s procesorom je vždy správne, otázka je, ako ho naprogramuješ.
PPavel

#3 Příspěvek od PPavel »

Potřebuji zapínat 4 LED, ale každou zvlášť.

Zatím jsem zkoušel zapínat jen jednu LED, ale ani to mi nejde

---------------------------------

LIST P=16f84a, R=DEC
#INCLUDE <p16f84a.INC>

#DEFINE TLAC PORTA,0
#DEFINE LED PORTB,0

BSF STATUS,RP0
MOVLW B'00001111'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISB
BCF STATUS,RP0
BCF LED

START
BTFSS TLAC
GOTO $-1
BSF LED
BTFSC TLAC
GOTO $-1

BTFSS TLAC
GOTO $-1
BCF LED
BTFSC TLAC
GOTO $-1

GOTO START

END
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#4 Příspěvek od mikollar »

este by som dal cakaciu slucku k testovaniu tlacitok lebo pri krystale 4MHz a mechanickom tlacitku, jedno stlacenie a pustenie moze a väčšinou robi viac zopnuti a vypnuti
PPavel

#5 Příspěvek od PPavel »

Omlouvam se, ale jsem v tomto zatim totalni "neznalec" :oops: Muzes mi to sem napsat jak by to melo vypadat? Idealne pro vsechny 4 tlacitka a LED diody. Diky
Uživatelský avatar
jezevec
Hlavní moderátor
Příspěvky: 6101
Registrován: 13 čer 2004, 00:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#6 Příspěvek od jezevec »

Celý program udělej znova a začni od jednoduché aplikace jedno tlačítko zapíná a vypíná led a postupně přidávej na složitosti.
Nemůžeš definovat celý port jako TLAC, musíš každému tlačítku a každé LEDce přiřadit jednotlivý pin. Napsat ti hotový program ti moc nepomůže, tím se musíš prokousat sám, jinak se to nenaučíš.
Mrkni se na http://www.cmail.cz/doveda/index.htm
nebo http://www.pandatron.info/
PPavel

#7 Příspěvek od PPavel »

Jde o to, ze nevim kde delam chybu
Sender

#8 Příspěvek od Sender »

Zkoušel jsem to z dlouhý chvíle napsat na to schéma,ale nevím jestli jsem na něco nezapoměl.
http://home.tiscali.cz/delpsoft/download/ibutton_led.hex

Ten hex je upravenej pro UP 2.24 od ASIXu
Uživatelský avatar
jezevec
Hlavní moderátor
Příspěvky: 6101
Registrován: 13 čer 2004, 00:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#9 Příspěvek od jezevec »

Sender píše:Zkoušel jsem to z dlouhý chvíle napsat na to schéma,ale nevím jestli jsem na něco nezapoměl.
http://home.tiscali.cz/delpsoft/download/ibutton_led.hex

Ten hex je upravenej pro UP 2.24 od ASIXu

Hex mu nic neřekne, PPavel se to chce naučit, ne jen rozchodit, pošli mu to v asm i s důkladným komentářem.
PPavel

#10 Příspěvek od PPavel »

jezevec píše:
Sender píše:Zkoušel jsem to z dlouhý chvíle napsat na to schéma,ale nevím jestli jsem na něco nezapoměl.
http://home.tiscali.cz/delpsoft/download/ibutton_led.hex

Ten hex je upravenej pro UP 2.24 od ASIXu

Hex mu nic neřekne, PPavel se to chce naučit, ne jen rozchodit, pošli mu to v asm i s důkladným komentářem.

Dekuji za podporu, presne o to mi jde. Ja se o neco pokousim, ale nevim kde delam chyby, nemam to s cim porovnat. Zkousel jsem zpetny preklad disassemblerem do asm, ale je v tom pekny gulas :)
Kdyby to teda bylo mozne poslal v ASM i s komentarem bylo by to fajn.
Jeste se znovu zeptam - to zapojeni tak jak ho mam je v poradku? Neni tam nejaka blbost nebo neco co bych mel udelat jinak?
Muzu na ty vyvody z PICu krome LEDek co tam ted mam pripojit jeste tranzistory, ktery by spinaly vyssi proudy?
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#11 Příspěvek od mikollar »

na vystup mozes pripojit hocičo le musiš dodržať maximálny povolený prúd pre port ktorý je 20mA
PPavel

#12 Příspěvek od PPavel »

Takze to mam uz ted... LEDky jsou vysocesvitive s odberem 20mA. Na PICu mam jeste volne 4 piny na portuB takze k nim bych zapojil tranzistory a vystupy na pinech RB4-7 by byly ekvivalentem k RB0-3.
Co se stane pokud bude odber vyssi jak 20mA? Znicim PIC?
Sender

#13 Příspěvek od Sender »

Já to psal v pascalu (je to hned napsaný).Zdroj klidně pošlu,ale nevím jestli ti bude co platnej.
Nemám možnost ten pic otestovat, tak nevím jestli program funguje.

Při této příležitosti bych se zkusil zeptat - je u PICu potřeba inicializovat port jako výstupní ?

U ATMega8 je potřeba nastavit port :
LDI R23, 255
OUT DDRC, R23
Uživatelský avatar
jezevec
Hlavní moderátor
Příspěvky: 6101
Registrován: 13 čer 2004, 00:00
Bydliště: Břeclavsko
Kontaktovat uživatele:

#14 Příspěvek od jezevec »

PPavel píše:Potřebuji zapínat 4 LED, ale každou zvlášť.

Zatím jsem zkoušel zapínat jen jednu LED, ale ani to mi nejde

Program by měl fungovat, nastavils při programování správně pojistky? Musíš zakázat Watch Dog a nastavit typ oscilátoru.
PPavel

#15 Příspěvek od PPavel »

Jsem z toho fakt zcela mimo...
V simulatoru jsem si udelal zapojeni se 4 LED na portech RB0-3 a jednim tlacitkem na portu RA0. V pripade, ze necham program tak jak je (viz.vyse), tzn. tlacitko na portu RA0 zapina a vypina LED na portu RB0 tak to funguje.
Ale...
1/ Kdyz zkusim tim stejnym tlacitkem zapnout LED na portu RB1 (misto #DEFINE LED PORTB,0 dam #DEFINE LED PORTB,1) tak to nejede.
2/ pokud pridam v simulatoru do zapojeni zbyvajici tlacitka, tak aby to odpovidalo schematu, nejde uz zapinat ani LED na portu RB0

?????
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“