Stránka 1 z 2

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

Napsal: 29 srp 2006, 21:22
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

Napsal: 30 srp 2006, 11:18
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š.

Napsal: 30 srp 2006, 13:17
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

Napsal: 30 srp 2006, 16:22
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

Napsal: 30 srp 2006, 16:56
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

Napsal: 30 srp 2006, 18:23
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/

Napsal: 30 srp 2006, 18:59
od PPavel
Jde o to, ze nevim kde delam chybu

Napsal: 30 srp 2006, 20:04
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

Napsal: 30 srp 2006, 23:21
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.

Napsal: 31 srp 2006, 06:46
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?

Napsal: 31 srp 2006, 08:32
od mikollar
na vystup mozes pripojit hocičo le musiš dodržať maximálny povolený prúd pre port ktorý je 20mA

Napsal: 31 srp 2006, 09:30
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?

Napsal: 31 srp 2006, 10:08
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

Napsal: 31 srp 2006, 12:01
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.

Napsal: 31 srp 2006, 12:57
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

?????