Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka

[es] :: Elektronika :: Mikrokontroleri :: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka

[ Pregleda: 2971 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shmeker1
Beograd

Član broj: 128618
Poruke: 27
*.dynamic.sbb.rs.



Profil

icon Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka12.10.2008. u 23:12 - pre 189 meseci
Pozdrav kolege,
imam ispit Mikrokontroleri i interfejsi, posto profa nema knjigu iz predmeta (samo se slusaju predavanja), ali ja na njih nisam isao jer sam zbog bolesti bio sprecen, ostaje mi samo vas da pitam dragi moji Elitovci! :)
Zadatak glasi ovako:

1. "Napisati program koji se na displejima 1 i 2 ispisuje sadrzaj koji se nalazi na memorijskoj lokaciji nazvanoj B[2].Rad organizovati preko prekidnog programa t0."

E sad ovako (nemam sliku ali bih vas ipak molio za pomoc),
imam port P2.1 kojim pobudjujem prvi displej, i port P2.2 kojim pobudjujem drugi displej. ( da napomenem da se radi o 7-mo segmentnim displejima i rade na principu vremenskog multipleksiranja).

Resenje sto sam dobio za to glasi ovako:

#include <reg51.h>
data char B[2];
{
ea = 1;

tr0 = 1;

p1 = 0;

p2.1 = 0;

p2.2 = 0;

while(1) {}
}

void timer0 interrupt 1

{ static data prolaz = 0;

ea = 0;

tr0 = 0;

tf0 = 0;

th0 = 0x80;

tl0 = 0x00;

switch (prolaz)

case 0 : p1 = B[prolaz]
p2.1 = 1;
p2.2 = 0;
prolaz = 1;
break;

case 1: p1 = B[prolaz}
p2.1 = 0;
p2.2 = 1;
prolaz = 0;
break;

}

tr0 = 1;
ea = 1;

}

Bas kratko, zar ne? :)))


E sada ovako,
moze li mi neko pomoci i objasniti sta radi ovaj program?Znam da ispisuje cifre redom, prvo jednu pa drugu ali kod mi je malo nejasan.Ovaj program nisam napisao jednostavno ne znam ideju sta on radi!Da li je ovo tacno resenje?

Da li zbog memorijske lokacije bolje da stavim B1 = buff[1] i B2 = buff[2] ? Ispravite me gde sam pogresio!

2. Molio bih vas da mi objasnite znacenje ovih heksadecimalnih brojeva 0x80
( cak se u nekim zadacima pominju i 0xFE i 0xFF).

Binarno je 0xFE (1111 1110) a 0xFF (1111 1111) ali cemu to sluzi to mi nije jasno i sta predstavlja??????Znam da je vrednost FFa-a 255 decimalno, a FE-a 254, ali osim ovog ja objasnjenje na netu nigde nisam nasao!


3.Na kraju bih vas molio da mi objasnite sta je to TH0 a sta je TL0?Znam da su to neki brojaci ali na ispitu se sve mora znati a ne nabadati :))


Hvala unapred svima koji mi pomognu, u frci sam velikoj nemam kog pitati a pri kraju sam faxa, a ne bi se bez razloga hteo brukati kod profe! :)


Pozz
---------------------------------------
U zivotu se samo upornost isplati!
---------------------------------------
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka13.10.2008. u 23:32 - pre 189 meseci
Posto imas predmet Mikrokontroleri i interfejsi zakljucujem da je malo vjerovatno da studiras istoriju ili medicinu, te da je u pitanju vjerovatno neki tehnicki fakultet elektro struke. Ono sto je meni enigmaticno je kako si uspjeo stici do pred kraj fakulteta, a da ne znas heksidecimalni brojni sistem ili bar osnove C-a. Ima sigurno nekoliko ispita iz ranijih godina koji ne bi trebalo da se mogu poloziti bez toga?!

Nije problem sto ces se ti obrukati pred profesorom, navikli su oni na to. Ali ce biti problem tamo gdje sutra budes radio.
Vidim da je tvoj stil obracanja nama u skladu sa tvojim izabranim "nickom", ali u ovoj struci smekerisanje je od slabe vajde.
Mislim da si se obratio na pogresan forum, ali ne mora znaciti da ti nece biti od koristi, jer kako kaze jedna poslovica: "Nekim ljudima se moze pomoci tako sto im se ne pomaze".

Pozdrav i sretno!


 
Odgovor na temu

Shmeker1
Beograd

Član broj: 128618
Poruke: 27
*.dynamic.sbb.rs.



Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka14.10.2008. u 00:05 - pre 189 meseci
Citat:
Posto imas predmet Mikrokontroleri i interfejsi zakljucujem da je malo vjerovatno da studiras istoriju ili medicinu, te da je u pitanju vjerovatno neki tehnicki fakultet elektro struke. Ono sto je meni enigmaticno je kako si uspjeo stici do pred kraj fakulteta, a da ne znas heksidecimalni brojni sistem ili bar osnove C-a. Ima sigurno nekoliko ispita iz ranijih godina koji ne bi trebalo da se mogu poloziti bez toga?!

Nije problem sto ces se ti obrukati pred profesorom, navikli su oni na to. Ali ce biti problem tamo gdje sutra budes radio.
Vidim da je tvoj stil obracanja nama u skladu sa tvojim izabranim "nickom", ali u ovoj struci smekerisanje je od slabe vajde.
Mislim da si se obratio na pogresan forum, ali ne mora znaciti da ti nece biti od koristi, jer kako kaze jedna poslovica: "Nekim ljudima se moze pomoci tako sto im se ne pomaze".

Pozdrav i sretno!


Dragi moj kolega, da dobro si procitao, stigao sam do kraja tehnickog fakulteta!A necemo se sad vredjati da sad ne znam osnove C jezika!Ja sam programerski smer igrom slucaja, ali jako vise me zanimaju druge stvari u vezi racunara,a ne mikrokontroleri i samo programiranje!Sto se ispita tice imao sam VC++ iz koga imam 9 ali sam to ucio zato sto moram a ne sto volim, i ceo zivot se bavim racunarima tako da cu sa pravom steci titulu inzinjera!Ne volim da se hvalim, mada eto pitao si!Nece biti ni problema gde budem radio jer imam veliko iskustvo u svim oblastima informatike, mada to sada nije ni bitno.

I ne shmekerishem kako si ti to nazvao, nego sam na lep i kulturan nacin zatrazio pomoc!Ako mi ne mozes pomoci bolje da nisi i komentarisao nista!Naravno, ja nemam nameru da gubim vreme i da se svadjam nego sam zeleo da nesto vise naucim!Ali dobro niko se naucen nije rodio!

U svakom slucaju ako je tvoj komentar bio iz dobre namere onda je u redu!

Pozz


---------------------------------------
U zivotu se samo upornost isplati!
---------------------------------------
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka14.10.2008. u 14:18 - pre 189 meseci
Ne cini mi se bas da si ti htjeo nesto da naucis, jer put za to je dobro poznat i ne treba ti ga niko pokazivati. Ti si htjeo da polozis ispit, a to nije isto.
Dobio si rjesenje koje ces ispisati na ispitu i mozda ocekujes da ce te profesor ponesto priupitati pa ti trebaju spremni odgovori na to, iako nista ne razumijes.
To sto si programerski smjer i sto si polozio VC++ i mislis da to garantuje da nesto znas, a da pri tom ne znas heksadecimalni brojni sistem je ipak samo tvoja iluzija, prije nego stvaran dokaz tvog znanja. Jer kad bi ti znao taj ispit, ne za 9 nego za 6, vec bi i sam vidio koliku banalnost pitas, a ovako brukas i sebe i taj ispit i taj fakultet. To sto te neke druge stvari zanimaju vise nego programiranje, to je tvoj problem, imas i drugih fakulteta.

Ne vjerujem da si ti bas tolika cvjecka da ces na intervjuu za posao reci kako ne znas heksidecimalni brojni sistem, ne zanimaju te mikrokontroleri i programiranje i sl. nego ces svoju diplomu poturati sigurno u suprotnom kontekstu i tako zauzeti mjesto nekom kompetentnijem od sebe, ko mozda i nema diplomu, a u stanju je da rjesi ovaj tvoj zadacic, a takvih je na ovom forumu mnogo, cak i medju srednjoskolcima.
Dakle, bolje malo preispitaj svoje motive, jer to sto trazis i razlog iz kog trazis nije bas nesto sto ti daje neki kredibilitet, bar ne na ovom forumu.
 
Odgovor na temu

Shmeker1
Beograd

Član broj: 128618
Poruke: 27
*.dynamic.sbb.rs.



Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka15.10.2008. u 17:39 - pre 189 meseci
Citat:
Odin D.: Ne cini mi se bas da si ti htjeo nesto da naucis, jer put za to je dobro poznat i ne treba ti ga niko pokazivati. Ti si htjeo da polozis ispit, a to nije isto.
Dobio si rjesenje koje ces ispisati na ispitu i mozda ocekujes da ce te profesor ponesto priupitati pa ti trebaju spremni odgovori na to, iako nista ne razumijes.
To sto si programerski smjer i sto si polozio VC++ i mislis da to garantuje da nesto znas, a da pri tom ne znas heksadecimalni brojni sistem je ipak samo tvoja iluzija, prije nego stvaran dokaz tvog znanja. Jer kad bi ti znao taj ispit, ne za 9 nego za 6, vec bi i sam vidio koliku banalnost pitas, a ovako brukas i sebe i taj ispit i taj fakultet. To sto te neke druge stvari zanimaju vise nego programiranje, to je tvoj problem, imas i drugih fakulteta.

Ne vjerujem da si ti bas tolika cvjecka da ces na intervjuu za posao reci kako ne znas heksidecimalni brojni sistem, ne zanimaju te mikrokontroleri i programiranje i sl. nego ces svoju diplomu poturati sigurno u suprotnom kontekstu i tako zauzeti mjesto nekom kompetentnijem od sebe, ko mozda i nema diplomu, a u stanju je da rjesi ovaj tvoj zadacic, a takvih je na ovom forumu mnogo, cak i medju srednjoskolcima.
Dakle, bolje malo preispitaj svoje motive, jer to sto trazis i razlog iz kog trazis nije bas nesto sto ti daje neki kredibilitet, bar ne na ovom forumu.


Cuj covece, to je tvoj problem sto mi ne zelis pomoci!Ako si ti taj pametni srednjoskolac, hajde pokazi to svoje znanje!A jesi li cuo jednu staru iz naroda, sveznalica sve zna a ustvari nista ne zna?!Tu sebe pronadji.Jednostavno,
svaka ti cast na zavidnom "znanju" koje si pokazao, i zelim ti da zauzmes moje mesto u firmi u kojoj budem radio ako si kompetentniji, ali tesko prijatelju Odine...a ti najbolje idi drugde i drugima pametuj!Zato lepo gledaj svoja posla, jer necu da se prepucavam sa tobom i necu da se spustam na tvoj nivo srednjoskolca!

Predlazem moderatoru da tema bude lock ili da se obrise jer ovo ne vodi nicemu i nije dobar primer nekih ljudi koji su clanovi ES foruma!Forum je zamisljen da pomaze svim ljudima koji zele da nauce nesto vise, a da svi znaju sve, ne bi ni bio potreban forum!
---------------------------------------
U zivotu se samo upornost isplati!
---------------------------------------
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka15.10.2008. u 20:20 - pre 188 meseci
Ma nema potrebe da se tema zakljucava zbog mene. Evo ja ovdje necu vise nista pisati, pa ce mozda neko da ti pomogne.
Ti da si htjeo nesto da naucis, kako kazes, o ovome sto pitas, dosad si vec morao nauciti ako si stigao do kraja programerskog fakulteta, ali to je naravno samo moje misljenje i naravno da je subjektivno. Mozda neko ima drugaciji stav, ali ovo je moj i ne stidim ga se.
A ako se ti ne stidis svoga, onda napisi koji je to fakultet programiranja koji se moze zavrsiti ako neznas heksidecimalni sistem, to bi sigurno bilo od pomoci mnogima koji razmisljaju o odabiru fakulteta.

Pozdrav.
 
Odgovor na temu

Shmeker1
Beograd

Član broj: 128618
Poruke: 27
*.dynamic.sbb.rs.



Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka15.10.2008. u 21:02 - pre 188 meseci
A neeeee, nismo se razumeli!Ja vrlo dobro znam heksadecimalni sistem (konverzije jednog brojnog sistema u drugi, bilo da je to binarni, heksadecimalni, dekadni...).I to je ono sto je najvaznije na mom faxu.Naravno hvala ti na opasci, naravno da postoje rupe u znanju, ali ja ne mogu tu nista, ja sam se trudio, ali zaboravio si da je tu veoma bitan i kadar koji to znanje prenosi.Ukratko, uvek nesto moras neznati, bilo da su to mikrokontroleri, programiranje u C jeziku, jer covek koji sve zna ne postoji!Napomenuo sam jos na pocetku da sam bio sprecen da pratim predavanja, pa sam se nadao da ce mi neko pomoci ali u svakom slucaju sam sve pokusao...ne sumnjam snacicu se.Studiram Visoku tehnicku i svima je preporucujem da je upisu jer ima za svakoga po nesto ;)

Pozz
---------------------------------------
U zivotu se samo upornost isplati!
---------------------------------------
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka15.10.2008. u 22:53 - pre 188 meseci
E pa ja sam razumio da ti ne znas heksadecimalni sistem.
Onda ovako:

Ovo je glavni program:
Code:

{
ea = 1;                    //dozvola prekida

tr0 = 1;                   //ukljucivanje tajmera tr0

p1 = 0;                   //ovo sam pogledaj sta je, ja ne znam jer ne radim sa 8051 
                             //niti znam za koji kompajler je ovaj program, pretpostavljam da je znacenje
                             //ovoga da je port p1 izlazni, a to bi trebao biti port na koji su povezani displeji, tj preko koga
                            // oba displeja dobijaju podatak koji treba da prikazu.

p2.1 = 0;                 // pin 1 porta 2 se konfigurise kao izlazni. Ovo je port preko koga prvi displej dobija napajanje, tj. ukljucuje se.      

p2.2 = 0;                 // pin 2 porta 2 se konfigurise kao izlazni.  Ovo je port preko koga drugi displej dobija napajanje, tj. ukljucuje se.

                             // ovdje je zavrsena inicijalizacija, u tom djelu programa je konfigurisan mikrokontroler
                             // za zadatak koji treba da obavlja i ovaj dio koda se vise nece izvrsavati

while(1) {}              //Ovo je beskonacna petlja i glavni program nista ne radi samo se vrti u njoj
                             //Ideja je da se samo ceka na neki prekidni zahtjev (od tajmera) koji ce prekinuti ovo vrcenje u krug.
                             // Kad stigne neki prekid, ovdje ce se prekinuti izvrsavanje ove petlje, izvrsice se odgovarajuca prekidna
                             // rutina, a kad se ona zavrsi, tok programa se opet vraca ovdje i opet se vrti u krug ne radeci nista
                             // sve dok opet ne stigne neki prekid
                             // Necu ti dalje ovdje objasnjavati razne detalje prekida, bolje progooglaj, trazi "interrupt"
}


Ovo je prekidna rutina koja ce se izvrsavati svaki put kad stigne prekid od tajmera tr0

Code:

void timer0 interrupt 1                 //ovim se kaze da kad timer0 posalje prekidni zahtjev da treba da se izvrava ova funkcija

{ static data prolaz = 0;              //ovo je staticka promjenjiva, njena vrednost ostaje zapamcena i nakon sto se izvrsavanje
                                              // funkcije zavrsi. Ovdje sluzi da se zapamti sta je bilo ukljuceno/iskljuceno prosli put, pa da se 
                                              // sledeci put uradi suprotno 

ea = 0;                                    // Onemogucavaju se prekidi. Kad se izvrsava ova funkcija to znaci da je jedan prekid vec stigao,
                                              // i ako se ne bi zabranili dodatni prekidi, moglo bi se desiti da neki prekidni zahtjev stigne u toku 
                                              // izvrsavanje ove funkcije, pa da dolazi do ugnjezdjavanja ovih funkcija, sto ovdje nije potrebno
                                              // omoguciti jer ima samo jedna vrsta prekida. Inace se to radi u situacijama kad ima vise vrsta
                                             // prekida razlicitog prioriteta. Procitaces o tome sigurno tamo gdje budes nasao nesto o prekidima.

tr0 = 0;                                   // iskljucuje se timer 0; 

tf0 = 0;                                   // isto kao i za p1, pronadji sam sta je tf0, ili sacekaj da se javi neko ko zna. Pretpostavljam da znaci u koju stranu
                                             // ce tajmer da broji (unapred ili unazad).

th0 = 0x80;                             // timer0 je 16-bitni, th0 predstavlja gornjih 8 bitova, a

tl0 = 0x00;                              // a tl0 donjih 8 bitova tako da je ukupna vrednost koja se upisuje u tajmer 0x8000, tj 0000 1000 0000 0000 binarno.
                                            // To je 2048 decimalno i tajmer odbrojava od te vrednosti do 0 (u slucaju da broji npr. unazad), i kad dodje do 0 on 
                                            // posalje zahtjev za prekid.
                                            // To brojanje se ne desava sad, ovdje se samo pripremaju te vrednosti, a otpocece se sa brojanjem kad se izadje iz
                                            // iz ove funkcije, tj. tajmer ce odbrojavati svoje dok se glavni program bude vrtio u while(1) petlji.
                                            // Ako pogledas dolje pri kraju ove funkcije ima naredba koja ukljucuje tajmer i on tek tada pocinje da broji.

switch (prolaz)                        // U naredbi switch se naizmjenicno ukljucuje pin p2.1 ili pin p2.2

case 0 :                                // u slucaju da je prolaz == 0
p1 = B[prolaz];                       // na oba displeja se salje podatak sa lokacije B[0]
p2.1 = 1                                // ali se ukljucuje samo onaj koji je prikljucen na pin p2.1
p2.2 = 0;                               // dok se ovaj na pinu p2.2 gasi
prolaz = 1;                             // ovim se pripremamo za sledeci ulazak u ovu funkciju, i ako se npr. u ovom sada pozivu
                                           // izvrsio ovaj dio naredbe switch, u sledecem ce ovaj donji,
break;

case 1:                                 // u ovom djelu se pali drugi displej a na njega ide vrednost sa lokacije B[1]
p1 = B[prolaz];                       // I kako to sve radi?
p2.1 = 0;                               // Brojac broji od 2048 do 0 i svaki put kad dodje do kraja on posalje prekid i tada se izvrsava ova funkcija.
p2.2 = 1;                               // Ova funkcija jedanput ispise B[0] na jednom displeju, a drugi je za to vreme ugasen,
prolaz = 0;                             // A kad timer sledeci put odbroji do 0, onda ova funkcija ispise B[1] na drugom displeju,
break;                                   // a prvi je ugasen. Sve se to odigrava dovoljno brzo da ljudsko oko ne primjecuje to treperenje i cini se da
                                           // oba displeja rade istovremeno neprekidno.

}

tr0 = 1;                                  // ovdje se tajmer opet ukljucuje (a gore ranije smo vec ucitali u njega 2048) i on opet pocinje da odbrojava
ea = 1;                                  // ovdje opet dozvoljavamo prekide, jer ako to zaboravimo, nikad vise necemo moci primiti prekid od tajmera
                                            // i jedan displej ce ostati da svjetli stalno, a drugi nikako, vec kako se zadesilo u tom trenutku

}



Eto, nadam se da ce ti pomoci na ispitu.
Ovo si dobio jer si bio posten, pa si rekao o kojoj se skoli radi i sto nisi nastavio u sumanutom tonu.
A i zato sto mrzim profesore koji nemaju literaturu za svoj predmet.

Pozdrav.

[Ovu poruku je menjao Odin D. dana 16.10.2008. u 00:17 GMT+1]
 
Odgovor na temu

Shmeker1
Beograd

Član broj: 128618
Poruke: 27
*.dynamic.sbb.rs.



Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka16.10.2008. u 16:26 - pre 188 meseci
E pa druze moj izvini onda, doslo je do nesporazuma!Ti izgleda nisi mene razumeo pa si me napao , a ja sam u nesto vreme nervozan zbog ispita pa sam mozda i rekao nesto sto ne treba!U svakom slucaju, zaboravi sve ruzno sto sam napisao, jer si mi mnogo pomogao i veoma sam ti zahvalan!Jeste, bio si u pravu da slabo znamo ali nas i slabo uce, a ja sam bas pozeleo da naucim to dobro!Ne znam sta da kazem-iznenadio si me prijatno!

Puno pozdrava i vidi se da si strucnjak ;)
---------------------------------------
U zivotu se samo upornost isplati!
---------------------------------------
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3874
adsl-19-199.teol.net.



+334 Profil

icon Re: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka17.10.2008. u 12:44 - pre 188 meseci
Ova tema neka bude " svijetli " primjer kako ne treba razgovarati, i nije obrisana, samo i iskljucivo samo zbog edukatvne svrhe. Svaka buduca slicna ce biti obrisana.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Programiranje mikrokontrolera 8051 i interfejsa u C jeziku-pomoc oko zadatka

[ Pregleda: 2971 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.