Led na 16f887
Moderators: pedja089, stojke369, [eDo], trax
Led na 16f887
Pozdrav decki ...
Duze vrijeme pokusavam napisati kod u mikroC-u koji ce na jednom tasteru paliti led diode, na zalost ne ide mi to za rukom.Pa bih molio da mi pomognete.Rijec je o projektu sa dva tastera i kad pritisnem jedan taster upali se jedna led , kad ponovo pritisnem isti taster da se upali sljedeca led dioda i tako dalje... Kada pritisnem drugi taster trebale bi se ledice paliti u obrnutom smjeru ( ako je upalita dioda 5 , kada pritisnem taster upali se dioda 4) ... imam i shemu koju sam napravio, bio bih vam zahvalan...
evo sheme : http://prntscr.com/rof5a
Duze vrijeme pokusavam napisati kod u mikroC-u koji ce na jednom tasteru paliti led diode, na zalost ne ide mi to za rukom.Pa bih molio da mi pomognete.Rijec je o projektu sa dva tastera i kad pritisnem jedan taster upali se jedna led , kad ponovo pritisnem isti taster da se upali sljedeca led dioda i tako dalje... Kada pritisnem drugi taster trebale bi se ledice paliti u obrnutom smjeru ( ako je upalita dioda 5 , kada pritisnem taster upali se dioda 4) ... imam i shemu koju sam napravio, bio bih vam zahvalan...
evo sheme : http://prntscr.com/rof5a
Re: Led na 16f887
sema ti ne valja
kad pritisnes taster napravis kratki spoj a i ledice ti nisu nigdje spojene (izbaci konektor)
kad pritisnes taster napravis kratki spoj a i ledice ti nisu nigdje spojene (izbaci konektor)
Nikad briga, nikad stres, pijte samo Kraš Express
Re: Led na 16f887
Pa sta vi predlazete konkretno kako da prepravim shemu ?
Re: Led na 16f887
Prvo, gdje ti je drugi taster?
Drugo,ovaj postojeci taster ti je posgresan. Izmedju napajanja i tastera ubaci otpor od 1Kohma na strani koja ide na port, a drugu stranu tastera samo stavi na masu. Na slican nacin postavi i drugi taster. Naravno na drugi ulaz.
Trece, da bi ti mogli pomoci postuj kod programa u C-u. Mozda i tu imas gresku.
Drugo,ovaj postojeci taster ti je posgresan. Izmedju napajanja i tastera ubaci otpor od 1Kohma na strani koja ide na port, a drugu stranu tastera samo stavi na masu. Na slican nacin postavi i drugi taster. Naravno na drugi ulaz.
Trece, da bi ti mogli pomoci postuj kod programa u C-u. Mozda i tu imas gresku.
Re: Led na 16f887
Evo prepravio sam shemu jel sad ok ?
http://i.imgur.com/C0dHLui.png
http://i.imgur.com/C0dHLui.png
Re: Led na 16f887
Krivo; otpornik treba ići prema VCC (+)
Nakon toga tipkalo prema GND
A sredina na PIC
Nakon toga tipkalo prema GND
A sredina na PIC
Re: Led na 16f887
Evo sad sam napravio pravu shemu
http://i.imgur.com/YLQ9ep1.png
Ali ne razumijem kako da napisem if petlju tako da mjenjam pinove i portove .
NPR.
if(Button(&PORTA,0,10,1));
{
upaliti sljedeci pin // ako je bio upaljen pin 0 porta a on da upali pin 1 porta a;
}
if(Button(&PORTA,1,10,0));
{
upaliti predhodni pin // ako je bio upaljen pin 1 upaliti pin nula na istom portu...
}
http://i.imgur.com/YLQ9ep1.png
Ali ne razumijem kako da napisem if petlju tako da mjenjam pinove i portove .
NPR.
if(Button(&PORTA,0,10,1));
{
upaliti sljedeci pin // ako je bio upaljen pin 0 porta a on da upali pin 1 porta a;
}
if(Button(&PORTA,1,10,0));
{
upaliti predhodni pin // ako je bio upaljen pin 1 upaliti pin nula na istom portu...
}
Re: Led na 16f887
To provjereno radi. Samo je problem naredba IF.
Re: Led na 16f887
Ali će u stvarnosti izgoriti LED ili PIC (jedino ako ti LED nije za 5V; u što sumnjam)
Re: Led na 16f887
Dobro to znam ... Jel ima neko da mi moze pomoc ?
Re: Led na 16f887
Ajd da probam ja al ne znam jel ce to tak radit. Najme moja ideja je paljenje ledica tako da se npr. porta.0 = 1 da je isto sto i porta = 1 , zatim porta.1=1 isto sto i porta = 2 , porta.3 = 2 isto sto i porta = 4 . sad ne znam jel to tocno mislim da pise u datasheetu te adrese od svakog pina na portu. Uglavno promotris za kolko rastu jedan u odnosu na drugi i obratno te nekaj inskombiniras. Ak nece tak e onda ima i drugi (duzi) nacin al ne znam koliko je ispativ ...
Re: Led na 16f887
Neide kolega to bas tako.On treba da mjenja stanja tako da je jedan upalit a svi ostali ugasiti...
Re: Led na 16f887
Uvedes u igru neku promenljivu!
pa onda "if taster1 povecaj promenljivu" ili "if taster2 smanji promenljivu".
Tek onda ide"portA=promenljiva"
pa onda "if taster1 povecaj promenljivu" ili "if taster2 smanji promenljivu".
Tek onda ide"portA=promenljiva"
Re: Led na 16f887
Evo kako sam ja to rijesio , ali ne radi kad hocu da idem u nazad, radi samo naprijed.
if(Button(&PORTA, 0, 100, 0))
{
i=i+1;
if(i>3)
{
i=0;
}
if(i<=3)
{
PORTC = maska(i); //MASKA
}
}
if(Button(&PORTA, 1, 100, 0))
{
g=i-1;
PORTC = maska(g); //MASKA
}
}
unsigned short maska ( unsigned short kombinacija) {
switch (kombinacija) {
case 0 : return 0x01;
case 1 : return 0x02;
case 2 : return 0x04;
case 3 : return 0x08;
if(Button(&PORTA, 0, 100, 0))
{
i=i+1;
if(i>3)
{
i=0;
}
if(i<=3)
{
PORTC = maska(i); //MASKA
}
}
if(Button(&PORTA, 1, 100, 0))
{
g=i-1;
PORTC = maska(g); //MASKA
}
}
unsigned short maska ( unsigned short kombinacija) {
switch (kombinacija) {
case 0 : return 0x01;
case 1 : return 0x02;
case 2 : return 0x04;
case 3 : return 0x08;
Re: Led na 16f887
Nisam nikakav stručnjak za C, ali evo pokušat ću. Ovo sam napisao za PIC16F877, dakle promijeni ADCON1 u ANSEL = 0x00; za PIC16F887. Mislim da ćeš kod razumjeti:
Kod sam provjerio na hardware-u, pa neću nikakve reklamacije
Code: Select all
unsigned short Button(unsigned short *port, unsigned short pin, unsigned short time, unsigned short active_state);
unsigned short i = 1;
void main()
{
ADCON1 = 0x07; // PORTA je digitalni
TRISA = 0xFF; // PORTA je ulazni
TRISC = 0; // PORTB je izlazni
do // glavna petlja
{
if(Button(&PORTA, 0, 100, 0)) // ako je tipka na PORTA.0 pritisnuta (lijevi pomak)
{
i = i << 1; // pomakni bit za jedno mjesto lijevo
if ( i > 8 ) // ako je preko zadnjeg
{
i = 1; //vrati ga na prvi
}
}
if(Button(&PORTA, 1, 100, 0)) // ako je tipka na PORTA.1 pritisnuta (desni pomak)
{
i = i>> 1; // pomakni bit za jedno mjesto desno
if ( i < 1 ) // ako je ispod prvog
{
i = 8; // vrati ga na zadnji
}
}
PORTC = i; // "ispiši" na PORTC
}
while(1); // vrati se na početak petlje
}
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: Led na 16f887
Stvarno ne radi , nerazumijem zasto.Kad kopiram cijeli kod i ispravim ovo sto si rekao , pokranem simulaciju stalno mi gori prva ledica, koji god prekidac pritisnem ona gori.
Re: Led na 16f887
A da pridržiš prst na mišu malo duže, dok pritišćeš tipku
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
Re: Led na 16f887
Uostalom, evo ti cijeli direktorij s simulacijom, kodom hex-om, i to za tvoj procesor PIC16F887.
https://www.dropbox.com/s/c04y67cp180t9ep/Hary.rar
https://www.dropbox.com/s/c04y67cp180t9ep/Hary.rar
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....