[ sasha_kg @ 13.06.2008. 13:08 ] @
potrebna mi je pomoc u resavanju ovog zadatka u asembleru

Realizovati sistem za uključenje i vremenski ograničen rad neke mašine. Mašina po ukljucenju radi 10 sec a zatim se isključuje. Pritiskom na taster stop ciklus se u svakom trenutku može prekinuti.

PORTB.0 Pogon mašine
PORTA.0 Start mašine
PORTA.1 Stop mašine


hvala unapred resenje mozete poslati na mail : [email protected]
[ veselinovic @ 13.06.2008. 17:40 ] @
Sasa, posto si novi evo ti jedna napomena, drzi se nje i nece biti problema:
Nemoj nikad da postavljas ovakva pitanja, pitanje treba da ima oblik :
zadatak je to i to, ja sam pokusao ovako, ali zapeo sam kod tog i tog, ili gdje grijesim...
Ovako ispada da ti postavis problem a da nisi ni pokusao da ga rijesis. Malo se potrudi.
Ovo shvati kao dobronamjerno.
I da, nemoj nikad da dpliras poruke pod drugim imenom.
[ sasha_kg @ 13.06.2008. 22:09 ] @
Pokusao sam da uradim ali mi ne ide jer sam skoro poceo da radim u ovom programu
pa bi mi svaka pomoc dosla oko ovog zadatka
[ veselinovic @ 14.06.2008. 13:04 ] @
Pa ako si pokusao napisi dokle si stigao ( daj program) ili gdje je zapelo
[ sasha_kg @ 14.06.2008. 13:24 ] @
Pa evo sta sam pokusao a ne znam ovo oko starta i rada od 10 sekundi ajde probajte

list p=16F84 ; Definiše mikrokontroler
#include <p16F84.inc> ; Definiše nazive registra

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

cblock 0x0C
CounterA
CounterB
CounterC
endc

errorlevel -302

ORG 0x00 ; Definiše početak programa

movlw 0x00
movwf PORTA ; Podešavanje Portova
movlw 0x00
movwf PORTB

bsf STATUS,RP0
movlw b'00000011'
movwf TRISA ; Podešava ulazno izlazne pinove
movlw b'00000000'
movwf TRISB
bcf STATUS,RP0

Start
btfsc PORTA,1 ;Testira START prekidac
goto Start



movlw D'51'
movwf CounterC
movlw D'237'
movwf CounterB
movlw D'173'
movwf CounterA


movlw b'00000001'
movwf PORTB ; uključuje mašinu

Poc
btfsc PORTA,0
goto Poc ;Testira STOP prekidač

; Prekidač je pritisnut

movlw b'00000000'
movwf PORTB ;Isključuje mašinu

Pet
call Pet ;Mrtva petlja

end ; kraj programa
[ Stojan Trifunovic @ 14.06.2008. 13:25 ] @
Vec reseno u ovoj temi:
http://www.elitesecurity.org/p1970308



Cek cek! Ne mogu da verujem. Ovde je kopirana cak i ista greska kao u gornjem linku (call umesto goto na kraju programa) ali deo za pauzu jednostavno nedostaje. Cccc!
[ Slavenko @ 14.06.2008. 18:07 ] @
Citat:
sasha_kg: Pa evo sta sam pokusao a ne znam ovo oko starta i rada od 10 sekundi ajde probajte



Saša, nisi ti ni probao da rešiš ovaj zadatak jer si skoro potpuno prepisao Stojanov kod koji je dao u drugoj temi. Pošteno bi bilo da kažeš ja ne znam da radim ove stvari a treba mi to i to zbog toga i toga i da li mi neko može pomoći a ne ovako na istom sajtu kopiraš kod ali u drugoj temi.

E sada malo o tvojoj profesorki. Ona vam je postavila par simpatičnih zadataka a najbolji što se mene tiče je onaj sa oscilatorom koji je neko uradio tvom kolegi a onaj primer neće raditi kako treba, odnosno neće imati one frekvencije koje su tražene jer postoji caka na koju nije obraćena pažnja prilikom rešavanja jer zadatak samo na izgled izgleda lagan a u stvari ima začkoljicu. Za ljude koji rade programiranje naravno to nije problem ! Po težini zadataka ja bih upravo taj zadatak što se mene tiče proglasio najtežim od svih ostalih iako je i on lagan ali barem zbog one začkoljice.

Što se tiče tvog zadatka kaže se : Da,

- na PORTB.0 - treba da bude pogon mašine
- PORTA.0 - treba da bude vezan STARTNI prekidač. Kada se uključi mašina radi 10sec. i zaustavlja se !
- PORTB.1 - treba da bude vezan na prekidač STOP za zaustavljanje mašine
Jako bitna stvar tvog zadatka je ono što si napisao a to je :Pritiskom na taster STOP ciklus se u svakom trenutku može prekinuti.

Na žalost postoji par grešaka i program neće raditi dobro. Samo da se ogradim da nisam pregledao ovaj kod na drugoj temi nego sam samo konstatovao da ti je ponuđeno rešenje a komentarišem samo kod koji je sada napisan u ovoj temi !

Greške su sledeće :

Uslov zadatka je da na PORTA.0 bude START prekidač a ti si stavio da je :

Citat:
sasha_kg
Start
btfsc PORTA,1 ;Testira START prekidac
goto Start


Druga greška je da si isto to uradio za STOP prekidač :

Citat:
sasha_kg


Poc
btfsc PORTA,0
goto Poc ;Testira STOP prekidač




Treća greška: Prema uslovu zadatka mašina treba da radi 10 sec po uključenju prekidača START a u "tvom" rešenju će napraviti pauzu oko 10 sec. pa će onda da se uključi jer si uključenje mašine stavio posle petlje za kašnjenje a trebalo je pre nje. Dakle treba staviti uključenje mašine pre petlje a njeno isključenje odmah iza petlje pa će tako da se uključi odmah po pritisku tastera START a isključi posle 10 sec. sama.

Nećeš verovati ali ima i četvrta greška ( ne računam ono na kraju: Call ) ! U uslovu zadatka se kaže da se mašina preko STOP tastera može isključiti u bilo kom trenutku ! U rešenju koje je napisano mašina može da se isključi tek pošto program dođe do koda koji testira prekidač STOP a to nije podrazumevani "svaki trenutak" jer se to dešava tek posle pauze kada će svejedno biti isključena. Kada profeosrka kaže svaki tenutak onda bi to trebalo da podrazumeva i trenutak kada se program nalazi u petlji jer se program najduže zadržava u njoj a takođe mora da se omogući isključenje i pre kao i posle petlje. Postoje dva rešenja a to je ili testirati prekidač STOP na više mesta u programu i takođe u petlji ili koristiti interapt rutinu koja je po meni najjednostavnije rešenje za ovaj slučaj.

Da li ćeš ti Stojane prepraviti ovaj program ili ne to je tvoja stvar , ja znam da ja neću i to neću namerno upravo iz razloga što je postavljač teme "pokušao" sam da reši ovaj problem tvojim kodom.

E sada nešto za kraj za postavljača teme : Pretpostavljam da si student kao što si i rekao ili neko od ovih tvojih kolega. Kada bi neko rešavao tvoje probleme na način na koji ti očekuješ ti nikada ne bi naučio ono što se od tebe traži ! Kako je Stojan , ja ili neko drugi mogao da sedi mesecima i uči mikrokontrolere tako možeš i ti inače ćeš protrčati kroz školu, nadam se da nije fakultet u pitanju jer ako jeste bolje vam je svima da ga napustite na vreme jer od vas nikad ništa neće biti pa ne shvatam ni svrhu vašeg studiranja.

I na kraju, imam rešenje za sve vas koji ste ovde postavili zadatke i očekivali da vam ih neko reši a da pri tome nemate blage veze sa mikrokontrolerima koji na vašu žalost moraju mnogo da se uče a naravno svako rešenje koje dam praktično ću da proverim i da potvrdim ispravnost rešenja na razvojnom sistemu kod mene.

Rešenje je sledeće: Svima vama ja mogu da rešim te zadatke pojedinačno ( koliko moje slobodno vreme to bude dozvoljavalo ) ali naravno svima ću i da naplatim moj rad a vi naravno treba da platite za vaš nerad i to u vidu kredita za mobilni telefon po ceni koju ćemo da odredimo u zavisnosti od vremena koje je potebno da se vaš zadatak uradi. Znači vi meni postavite zadatak ovde na ovoj temi ili ga pošaljete na privatnu poruku ili na mail , ja vama odgovorim koliko će to da košta pa onda vi ako hoćete platite moj rad na broj koji ću vam dati. Da ne bi bilo zabluda rešenja svih vaših zadataka ja ću da objavim ovde na sajtu da ne bi slučajno ispalo da sam nekoga prevario.

I još jednom, na sajtu bi trebao da postaviš pitanje tipa šta da uradim da rešim deo koda koji mi pravi probleme pa onda postuješ kod, pa ljudi koji znaju pogledaju, ponude alternativan kod a ne da ti neko rešava kompletan tvoj problem jer kakav god da je zahteva pored znanja i određeno vreme i to ne sigurno 10 min kao što vi mislite da bi neko imao vremena tek tako da se zeza pošto nema šta da radi.

Mislim da je moj predlog pošten a naravno vi možete da komentarišete sve što sam napisao !




[Ovu poruku je menjao Slavenko dana 14.06.2008. u 21:47 GMT+1]
[ Struja01 @ 14.06.2008. 18:32 ] @
Eh kad bi profesorica vidjela sve ovo...
[ veselinovic @ 14.06.2008. 18:57 ] @
Bravo Slavenko, ja nisam imao volje ovako dugacko da pisem, a eto ti si uradio umjesto mene.
Ovakve poruke od kragujevackih studenata ce ubuduce biti odmah obrisane. Ovo stvarno nema smisla.
[ Slavenko @ 14.06.2008. 20:35 ] @
Citat:
milovan_regodic: Eh kad bi profesorica vidjela sve ovo...


E, kad bi neko video šta se radi po Kragujevcu odmah bi zatvorio i profesorku i nazovi fakultet ! Inače Milane pozdrav za tebe pošto sam porijeklom iz okoline, tačnije iz Lopara !



Citat:
veselinovic: Bravo Slavenko, ja nisam imao volje ovako dugacko da pisem, a eto ti si uradio umjesto mene.
Ovakve poruke od kragujevackih studenata ce ubuduce biti odmah obrisane. Ovo stvarno nema smisla.


Moj Veselinoviću muka vi više od svega pa sam zato tako i reagovao. Svi, sve znaju a niko pojma nema a da ironija bude veća obično nađu dobre poslove na kojima uglavnom ništa ne rade za dobre pare ili ne rade ništa u struci pa ko ne bi pukao. Danas svaka budala može da završi "nazovi" fakultet a da pri tom nema pojma ni koji je smijer završio pa se pitam gdje mi to idemo pošto sam mislio da će posle svega da bude bolje što je bilo logično ali izgleda da ide u suprotnom smijeru i to baš ubrzano.
Ali zato komentar tipa: Ovaj podforum treba zatvoriti zato što odavno niko ne odgovara na pitanja je česta pojava a da pri tom taj ili ti ljudi koji to pišu nisu ni svesni koje gluposti lupaju sa njihovim pitanjima.

Sjećam se jednog mog profesora sociologije koji je jedne prilike rekao nešto što mi je ostalo u sećanju gde kaže na onu čuvenu izreku : Pametniji popušta

Pametni dokle ćete ćutati, budale sve upropastiše !



Tako da dragi moji, vi koji postavljate pitanja koja možda samo vama imaju smisla prije toga bi ste trebali pročitati dosta literature što zahteva vreme, puno razmumijevanja, puno vežbanja i dobre koncentracije. Onda kada mislite da ste nešto shvatili probate to primeniti praktično ( pošto su ovde uglavnom svi sigurni da im kodovi rade iz prve ruke ).
Tek kad vam nešto ne bude radilo kako ste vi zamislili a vi ne možete da pronađete gdje je problem ili znate gde je problem ali ne znate kako to da riješite onda ima smisla da pitate nekoga ovde na forumu ko bi mogao da vam pomogne u tom delu koji vas zanima, a ne tek tako treba mi pomoć da rešim zadatak za seminarski inače ne mogu izaći na ispit. Prosto mi nije jasno kako će neko položiti ispit ako ne zna rešavati ovakve "nazovi" zadatke ! A da pojasnim i ovo što sam napisao "nazovi zadatke".
Svaki zadatak ma koliko na prvi pogled izgledao banalan može samo tako da izgleda na prvi pogled. Čak i kada stvarno to jeste onda samo pisanje koda za takav zadatak zahtijeva planski da se razmotri prvo šta se traži ( ovo dobro da se pročita i obrati pažnja ) pa tek onda da se napravi neki algoritam pa na kraju pisanje koda, simulacija i ispravljanje grešaka kojih će skoro uvijek biti zavisno od koncentracije. Svaki od ovih zadataka koje postavljaju kragujevački "studenti" zahtijeva vreme za rešavanje jer da nije tako onda svi napisani kodovi bi im radili od prve a po onome što sam ja pogledao u ponuđenim rešenjima teško da će to da se tesi. Već sam rekao da mi se svidela caka koja ima u onom zadatku iz druge teme gde se tražilo da se napravi oscilator tri različite frekvencije na tri pina. Pisac koda mislio je da je riješio problem pa je čak i napisao nešto u stilu : pa ovo je lako ! Njemu bejaše lako ali mu rešenje ne valja jer nije sagledao šta je problem da bi shvatio šta treba da uradi ! Ironija tog zadatka bi bila da profesorka prihvati rešenje koje je ponuđeno za slučaj da ni sama nije shvatila šta je tražila.

Što se mene tiče Veselinoviću možda i ne bi trebao brisati ovakve teme, mene lično zanima kakve zadatke zadaju i u kom pravcu idu rješenja zadataka ako ih neko napiše !

Jedan moj poznanik ovde u Nišu lepo mi je jedne prilike rekao za mikrokontrolere : Čitav život ćeš ih učiti a nikada ih nećeš naučiti !

Lično za sebe mogu napisati : Gdje sam ja i koliko još treba da učim hvata me panika ! Barem mislim da znam koliko ne znam, mada mi se čini da ni to nije tačno !

Toliko !

[ Stojan Trifunovic @ 14.06.2008. 22:03 ] @
Ccc, ala me obrukaste! A ja mislio da malo brata zainteresujem za programiranje (program je njegov sto se moze videti iz naziva bez obzira na IP, i da, svakako pisan za 10min.).

Samo jedna ispravka. U programu jeste pogresno postavljeno testiranje prekidaca. U originalnoj poruci na koju je odgovoreno programom stoji:

PORTB.0 Pogon ma�ine
PORTA.0 Start ma�ine
PORTA.1 Stop ma�ine

Bas zbog toga je ubacena hardverska konfiguracija sa komentarima:
; XT oscilastor od 4MHz
; RA0 - ulaz Taster STOP sa eksternim pull-up otpornikom od 10k prema masi
; RA1 - ulaz Taster START sa eksternim pull-up otpornikom od 10k prema masi
; RB0 - izlaz pogon

ali nazalost pogresno jer su zamenjeni START i STOP pinovi. Moglo se primetiti iz same ove konfiguracije, ali eto nije.

Za trecu gresku Slavenko je napisao:
Prema uslovu zadatka ma�ina treba da radi 10 sec po ukljucenju prekidaca START
medjutim u originalu stoji:
Ma�ina po ukljucenju ne radi 10 sec.

E sada, pretpostavljam da ni mom bratu (a iskreno receno ni meni) nije najjasnije sta je tu pisac hteo da kaze. Ovde bi trebalo malo preciznije definisati to "ukljucenje". Je li to dovodjenje napona napajanja mikrokontroleru (u kom slucaju je START taster suvisan) ili pak pritisak na START taster. Na kraju krajeva, nije ni bitno.

Sto se mene tice necu ubuduce (a savetovacu i brata) pomagati gotovim programima. Ipak je to medvedja usluga.

Zamolio bih moderatore da ne brisu ovakve poruke jer eto i mene zivo interesuje struktura zadataka. Iz njih se prilicno moze saznati o "naucenosti" predavaca. U jedno sam siguran. Brat mi nece u Kragujevac.
[ Slavenko @ 14.06.2008. 22:27 ] @
Hehe Stojane što si me nasmejao !!!

Nisam ja imao nameru da nagrdim tebe nego je moj komentar bio usmeren na "pozajmljen" kod u ovoj temi ! Mada moram priznati da sam mislio da si ti napisao ovaj kod, pa reko dal nisi imao loš dan ?

Čitava zbrka ovog i onog tamo programa je što oni nisu isti ali su slični jer se očigledno ne radi o istim postavljačima teme ali postavljač ove teme je definitivno imao u zadatku da mašina po uključenju radi 10 sec. Nije lako ni profesorki izmišljati zadatak za svakog studenta pa je zato obrtala uslove da bi zadaci bili različiti ali su izgleda ovi studentni bili nezainteresovani za učenje ili je možda profesorka previše dobrog izgleda pa niko nije ni obraćao pažnju šta je pričala na predavanjima.

Što se tiče samog zadatka profesorka se ovde malo zaletela jer je izgubila iz vida da će na startu mašina odmah da se uključi pritiskom na taster START, radi 10 sec i onda se isključuje pa onda samo isključenje mašine posle 10 sec. realno nema ni smisla jer će ionako biti isključena, zato sam i napisao da provera STOP tastera mora da se odradi pre u toku i ajde nek bude i posle petlje ( iako posle nema smisla ) što bi realno bilo najbolje ustanoviti testiranjem STOP tastera u interapt rutini inače testiranje u petlji samo komplikuje samo trajanje petlje a ako bi se i radilo bez interapta onda bi barem ja testiranje STOP prekidača stavio u prvoj petlji za pauzu jer kroz nju često prolazi. Znači da se u ovom zadatku mašina jedino može isključiti pre petlje ili u samoj petlji s obzirom da je rečeno da se omogući isključenje u bilo kom trenutku a to su jedini momenti kada je ovo moguće. Ovo je tipičan primer igre reči i još kad profesorka postavi zadatak onda to tek postaje komplikovano ali jednostavno za pogrešiti i zato žene treba posebno dobro slušati . Zato sam par puta i napisao da nisu dobro pročitani zahtevi koji se traže ne samo u ovom nego i ostalim zadacima.


Citat:
Stojan Trifunovic:  U jedno sam siguran. Brat mi nece u Kragujevac.



Pusti ga ali samo turistički !




[Ovu poruku je menjao Slavenko dana 15.06.2008. u 08:55 GMT+1]
[ stefic_kg @ 15.06.2008. 11:46 ] @
Zadatak jeste prepisan. Drugi je tekst. (to is vec napisao)

A sto se tice fakulteta u Kragujevcu, mogu vam reci da je ovo samo jedan predmet (arhitektura racunarskih sistema), za koji nemamo bas dobre profesore, a i mi se nismo bas potrudili da naucimo asembler, trenutno. (nemamo dovoljno vremena, bar ja,) a i,

NISU NAM BILE KVALITETNE VEZBE.

Nemojte suditi o fakultetu po jednom predmetu, zato sto imamo vecinu predmeta, profesora, asistenata koje necete naci ni na beogradskim fakultetima, po kvalitetu nastave, znanju...
Ali u svakom zitu ima kukolja! :)

A za brata, neka razmisli sta hoce od smera, ako ce Informatiku (programiranje), toplo bi mu preporucio KG.
Raspiajte se koji sve profesori i sa kakvim znanjem ima u Kgagujevcu.

Inace ovi seminarski su nam uslov za ispit.
A do ispita ce mo morati kako znamo i umemo da naucimo mikrokontrolere.

Pozz

[ Slavenko @ 15.06.2008. 12:07 ] @
Citat:
stefic_kg

Nemojte suditi o fakultetu po jednom predmetu, zato sto imamo vecinu predmeta, profesora, asistenata koje necete naci ni na beogradskim fakultetima, po kvalitetu nastave, znanju...

Pozz


E svaka ti je ne na mestu, samo ne znam da li znaš koliko nisi u pravu !
[ stefic_kg @ 15.06.2008. 12:29 ] @
Slavenko, a po cemu to nisam u pravu.
Prosvetli me

[ veselinovic @ 15.06.2008. 13:31 ] @
Citat:
stefic_kg: , za koji nemamo bas dobre profesore, a i mi se nismo bas potrudili da naucimo asembler, trenutno. (nemamo dovoljno vremena, bar ja,) a i,

NISU NAM BILE KVALITETNE VEZBE.

Pozz


E evo rece covjek koji nema pojma o predmetu da profesor ne valja. Da ne povjerujes rodjenim ocima.

Kako vjezbe nisu kvalitetne? Ako zaista nisu i ako je asistent los, to ne znaci da ne mozete traziti da vam objasnbi stvar dodetalja. Ja sam vjeruj na faksu ostajao sa asistentom po dva tri sata duze a sve da bih shvatio nesto sto mi je bilo maglovito.
Dzaba vi to studirate sa takvim stavom,
[ stefic_kg @ 15.06.2008. 16:34 ] @
Sta ti znas kolko znanje ja imam o tom predmetu!?
Kao prvo, predemet se zove: ARHITEKTURA RACUNARSKIH SISTEMA. Radimo dosta opstie stvari, a mikrokontroler, tj. programiranje u asebmleru je samo jedan deo toga.

A kako nisu kvalitetne?
Pa kad na predavanju profesorka cita iz worda predavanje sa racunara i kad je pitamo nesto ona se pogubi. Posle toga dodje asistent koji se i trudi da nam pokaze osnovne stvari tipa bulova algebra, logicka kola, kombinacione mreze, senkvencijalne mreze, registe, brojace.... i sve to za vreme od oko 8 predavanja+vezbe. Onda nama ostane 2 vezbe za mikrokontroler PIC16F84, isprica nam ukratko koja komanda sta radi i podeli nam seminarske.

Pitam sad ja Kako nisu kvalitetne?

Toliko novih informacija (barem za mene, a znam da je i za veliku vecinu) za tako kratko vreme, a da pritom ne pricam o jos ostalih 4 predmeta koji se odrzavaju u tom periodu koje isto tako trebam da ucim.
Mozda je malo i kriva bolonja, tj. prelazak sa starog na novi nacin skolovanja, pa je ovaj predmet do pre 2 godine bio dvosemestralni a sada jednosemestralni, a gradivo skoro isto.
Malo ispada da se zalim, ali nije tako, samo pokusavam da objasnim u cemu je problem oko seminarskih tj. navalom ovih zadataka.

Mrzi me vise da kucam...... a i da se pravdam.

A sto se stava tice stava, valjda ti je sada malo jasnije....
[ Stojan Trifunovic @ 15.06.2008. 17:43 ] @
Pa evo, kada vec trazite, mozda bih ja mogao da Vas "prosvetlim"!

Nije li Vam arhitektura racunarskih sistema jedan od najstrucnijih predmeta? Sta bi Vam vredela npr. sociologija, informatika (iako bi na vasem fakultetu ipak bila potrebna) ili strani jezik za kasniji rad?
Pretpostavljam da se bar neki od ovih predmeta izucava na prvoj godini svakog fakulteta. Sve su to predmeti koji bi trebao da se uce u osnovnoj (eventualno i srednjoj skoli) i da tu i ostanu, a se na fakultetu nakon cak 12 godina izucavanja ovakvih "opstih" predmeta pocne uciti sustina. Ali, i fakulteti se moraju (bar tom dodatnom godinom) razlikovati od visokih skola.
Uopste nije bitno ukoliko su predavaci iz opstih predmeta vrhunski. Naucicete malo bolje ono sto ste vec znali i u osnovnoj skoli, a iz strucnih predmeta ostacete suplji!

U srednjoj skoli u Aleksincu imao sam dva odlicna nastavnika strucnih predmeta. Vesnu (elektronika) i Mikija (elektricne masine i termicki uredjaji). Svojim znanjem vadili su sve ostale "strucne" nastavnike. Danas se pak pitam, da li je vredelo!

Jasno mi je da Kragujevac nije "silikonska dolina", ali na strucnim predmetima ne treba stedeti. Dovedite Vi gospodo Voju Antonica (tvorca prvog Jugoslovenskog kompjutera "Galaksije") www.paralaksa.com na fakultet, makar i kao asistenta, pa onda da pricamo!

Ipak, svidja mi se to sto je ispit uslovljen znanjem pokazanim na ovakvim zadacima. Jeste da ovakvi zadaci bas slikovito pokazuju "strucnost" onih koji ih postavljaju, ali odnekud se mora poceti.
Slavenko je lepo rekao: "Ironija tog zadatka bi bila da profesorka prihvati re�enje koje je ponudeno za slucaj da ni sama nije shvatila �ta je tra�ila.". Smeo bih da se kladim, da ce se ovo i dogoditi.


A za brata, pa jos mu je rano. Prvo da podje u srednju skolu, pa da je zavrsi, pa onda...
[ Slavenko @ 15.06.2008. 21:01 ] @
Ne možeš tek onako reći ono za tvoje profesore i asistente jer beogradski univerzitet ima daleko veću tradiciju ako ništa drugo a o ostalim stvarima veruj mi nema svrhe ni raspravljati , možda da pokušaš da pređeš na baogradski fakultet pa bih onda video o čemu ti pričamo !
Profesor ili asistent na jednom fakultetu ne sme sebi dozvoliti da nema konkretan odgovor na bilo koje pitanje svog studenta ali nikako ne sme !

Možda bi te mogla prosvetliti ova izreka koju sam skoro negde pročitao gde kaže :

Ironija života je kad ti čitav život sole pamet a ti umreš od šećera !



Tvoja dobra osobina je što si spreman za komunikaciju kao i da podeliš nešto sa drugima što sam zaključio iz ove teme i one gde si postavio zadatak !

PS: stefic_kg, sada sam mislio da ti rešim zadatak koji si napisao ali koliko god sam pokušavao da shvatim šta se tamo traži nisam uspeo u tome jer ono što si napisao nema nikakvog smisla. Ponovi sada na ovoj temi još jednom kompletan tekst tvog zadatka ali da bude razumljivo pa ću nadam se u toku sutrašnjeg dana uspeti da ti napišem rešenje jer nemam baš puno slobodnog vremena. Znači, mora biti precizno šta se traži !




[Ovu poruku je menjao Slavenko dana 16.06.2008. u 09:36 GMT+1]
[ stefic_kg @ 16.06.2008. 11:08 ] @
Nisam mislio na na sve fakultete, daleko od toga. Mislio sam na Masinski fakultet u KG ( i mozda PMF - Prirodno matematicki), koji ima dugu tradiciju u masinstvu, a i u informatici nakon propadanja Zastave krenulo se dosta u smeru informacionih tehnologija (mislim na smerove i profesore).

Mnogi od predavaca za koje mogu da tvrdim da si zaista strucnjaci, su upravo zavrsili Masinski fax u KG, pa su isli na razna usavrsavanja van zemlje, pa su neki od njih vanredni predavaci cak i na Harvardu, da nepricam da ucestvuju u raznim projektima u EU, ...
Sad sam se setio, samo jednog od projekta (simulacija krvotoka), koji je bio najuspesniji u EU, koji je radio moj profesor sa svojom ekipom, i sada ce za potrebe masinskoj fakulteta (a i drugih) uvesti GRID u nasoj zamlji.
Za one koji neznaju sta je GRID: http://www.youtube.com/watch?v=LZDSLzU9pZ4 ....

Ali kao sto rekoh ranije: "U svakom zitu ima kukolja!" - tj. sto bi reko moj drug: "Uvek se nadje neko ko ce da kvari sliku!" :)

A o znanju ucenika pogledaj na nasem sajtu: http://www.mfkg.kg.ac.yu/index.php --- ko je ovoijo prvo mesto u srbiji:

"Juče je u Palati Srbija završeno lokalno finale Microsoftovog Imagine Cupa, najvećeg svetskog takmičenja za studente u upotrebi informacionih tehnologija. Od ukupno četiri tima sa univerziteta u Beogradu, Novom Sadu i Kragujevcu, koja su se takmičila u kategoriji „Dizajn softvera“, tim Cluster sa Mašinskog fakulteta u Kragujevcu je dobio priliku da svoj projekat FEAT prikaže na svetskom finalu Imagine Cupa, koje će se održati početkom jula u Parizu................."

Postavka zadatka, koju sam dobio od asistenta je:
Realizovati svetlosni efekat tako da se led diode PORTAB, PORTA,0 i PORTA,1, PORTA,2 se pale po jedna sa leve i desne strane počev od PORTB,5 (koja se pali sama) redom svake sekunde. Kada se sve upale prvo se gase poslednje upaljene led diode Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.

I meni nije jasno sta se trazi zadatkom, ali takva je postavka. Moracu da vidim sa asistentom pa cu da ti javim, ako budes raspolozen da pogledas to.

PS: Nisam hteo da kazem da su beogardski fakulteti losi, nego da kragujevacki nisu losi.


[Ovu poruku je menjao stefic_kg dana 16.06.2008. u 14:58 GMT+1]
[ Slavenko @ 16.06.2008. 13:32 ] @
OVAJ KOD NIJE DOBAR I IMA PAR GREŠAKA A ISPRAVKA JE URAĐENA NAKNADNO PAR JAVLJANJA NIŽE


Ovako, prvo evo rešenje za ovog tvog kolegu Sašu koji je pokrenuo ovu temu.
Iako sam rekao da neću ipak sam rešio tvoj zadatak nisam ja kriv što sam meka srca !

Zadatak je glasio :

Realizovati sistem za uključenje i vremenski ograničen rad neke mašine. Mašina po ukljucenju radi 10 sec a zatim se isključuje. Pritiskom na taster stop ciklus se u svakom trenutku može prekinuti.

PORTB.0 Pogon mašine
PORTA.0 Start mašine
PORTA.1 Stop mašine

Rješenje ovog zadatka je :

Code:



    list p=16F84 
    #include <p16F84.inc> 

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


    cblock 0x0C    ; Definisanje bloka konstanti 

    BROJAC1        ; Brojač za prvu petlju
    BROJAC2        ; Brojač za drugu petlju
    BROJAC3        ; Brojač za treću petlju

    endc        ; Kraj bloka za definisanje konstanti



    bsf STATUS,RP0
    movlw b'00000011'
    movwf TRISA        ; Pinovi RA0 i RA1 ulazi za tastere a ostalo izlazni pinovi
    clrf TRISB       ; Svi pinovi PORTB izlazni
    bcf STATUS,RP0
 
    movlw 0x00       ; U momentu uključenja mikrokontrolera svi pinovi
    movwf PORTB       ; na PORTB su u stanju log. nule da se onemogući slučajno 
               ; uključenje mašine a pre pritiska tastera Start
    

Start   
    
    btfsc PORTA,0        ; Testira START taster, ako je pritisnut nastavlja se program 
    goto Start        ; ako nije onda ide na labelu Start za ponovno testiranje tastera START

    bsf PORTB,0       ; Nakon pritiska tastera START setuje se pin RB0 i uključuje mašinu 

    movwf .51       ; Ubacuje vrednost 51 u BROJAČ3 koliko
    movwf BROJAC3       ; je otprilike potrebno da bi se imala pauza od 10 sec.

Petlja    
    btfss PORTA,1       ; Da li je pritisnut taster STOP ?
    goto Stop       ; Jeste, idi na labelu Stop isključi mašinu pa onda idi na početak programa
    decfsz BROJAC1,0
    goto Petlja
    decfsz BROJAC2,0
    goto Petlja
    decfsz BROJAC3,0
    goto Petlja    

Stop    bcf PORTB,0        ; Posle pauze od 10 sec. mašina se sama isključuje osim ako prije toga nije
               ; pritisnut taster STOP u petlji što će izvršenje programa direktno usmeriti
               ; na ovu labelu Stop i zaustaviti njen rad tj. isključiti je !
    
    goto Start       ; Ide na početak i ponovo čeka tenutak kada će se pritisnuti taster za START
              

    end            ; kraj programa

    


Napomena za Sašu vezana za ovaj zadatak : za treću petlju je upisana vrednost 51 u BROJAČ3 dok ostali BROJAČI imaju podrazumijevanu vrijednost od 255 ( ako nije naglašeno posebno kao u tećoj petlji onda se podrazumeva 255 ).
Izvršavanje petlje je takvo da će samo izvršavanje najčećše prolaziti kroz prvu petlju pa je zato i testiranje tastera STOP stavljeno baš u prvoj petlji odnostno neposredno prije nje što će omogućiti uslov zadatka da mašina može da se isključi u svakom trenutku kako je i zahtevano u zadatku ali ... uvek postoji ali a ovde se odnosi na sledeće :
Petlja bi po mom računu trebala trajati cca 10 sec da u njoj nema testiranja prekidača STOP a pošto je to testiranje ubačeno onda će i sama petlja trajati malo duže od potrebnih 10 sec. Tebi ostaje da smanjiš malo onu vrednost za BROJAČ3 od 51 i prilagodiš je činjenici da pauza treba da bude 10 sec. Znači nema šta da mi zameriš što nisam ja to uradio a razlog je da neću da se mučim zbog tvog zadatka a i ti ćeš nešto naučiti usput. Ali čisto napomene radi mislim da bi ta vrednost trebala biti oko 49 ( ako se ne varam po mom brzom računu ali prekontroliši ) !

Stojane vidi ( ako imaš mogućnosti i vremena ) u tvom programu za izračunavanje pauza petlji koliko će trajati izvršenje ove petlje koju sam ja napisao , naravno bez testiranja tastera STOP čisto me zanima podatak . Nadam se da nema greške jer sam zadatak pisao na brzaka - neće studenti da plate !
Naravno kristal koji se koristi je podrazumevani od 4 MHz.

Toliko za ovaj zadatak !

Sada sa stefic_kg :

Ono što si napisao za tvoj zadatak nema smisla jer imaš reč gde piše PORTAB pa onda sve dalje gubi smisao. Lepo otiđi do asistenta i pitaj ga da ti precizira zadatak pa se javi. Nadam se da ću imati vremena i za tvoj zadatak ( moram ga naći jer si imam utisak dobar čovek ) !

Eto toliko , pozdrav !




[Ovu poruku je menjao Slavenko dana 16.06.2008. u 20:52 GMT+1]
[ Struja01 @ 16.06.2008. 14:35 ] @
Gospodine Slavenko, vidi se da ste iz Lopara... )
[ Slavenko @ 16.06.2008. 17:24 ] @
Regodiću jel to zato što sam meka srca ili ???


Za stefic_kg

Sve mi nešto govori da je cilj tvog zadatka sledeći : Da se napravi svetlosni efekat trčećeg svetla tj. efekat širenja i skupljanja sa LED diodama ali da se koriste sledeći izlazi i da LED diode budu baš ovako i poredane na izlazima kao :

RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RA0 RA1 RA2

Znači ono što si napisao PORTAB je greška ( verovatno tvoja kada si zapisivao ) i trebalo bi da bude PORTB čime se podrazumeva da se kompletan PORTB koristi kao izlazni jel samo u ovoj gore napisanoj konfiguraciji centralna dioda bi bila ona koja je prikačena na RB5 a nju si pomenuo u zadatku da mora da bude uvek uključena. Nadam se da shvataš poentu , raspored koji sam napisao za izlaze direktno možeš da zamisliš kao LED diode i kada kreneš da ti je centralna dioda vezana na RB5 onda svaka sledeća levo i desno od nje ima svoj par ( npr. pali se istovremeno RB4 i RB6 pa onda ostaju uključene pa onda RB3 i RB7 ... i sve tako do krajnjih LED RB0 i RA2 ) tako da se dobija efekat kao da se svetlost kreće od RB5 i širi levo i desno od nje u istom ritmu i rasporedu da bi izgledalo kao da se postigne efekat razvlačenja i na kraju u drugom ciklusu kada se gase jedna po jedna ( u paru sa leve i desne strane ) da se dobije efekat skupljanja. Takt koji si napisao, odnosno koji ti je dat uslovima zadatka a to je 1 sec. trebao bi da bude ritam uključivanja i isključivanja LED dioda. Ovako izabrana tj. zadata frekvencija nije baš dobra za postizanje tog efekta i trebala bi da se to dešava cca 0.3 sec. po mom mišljenju ali uslov zadatka je ono što mora da se ispoštuje.

Kada proveris sa asistentom mislim da će ti potvrditi ovo što sam napisao !


[ TRAJKO41 @ 16.06.2008. 17:49 ] @
Molim Vas treba sto pre da uradim jedan zadatak u asembleru koji se realizuje pomocu mikrokontrolera PIC16F84 a nisam bas nesto radio do sada u asembleru. Molim vas ako neko zna neka pomaze. Sto pre. Hvala unapred.

Zadatak glasi:


Pritiskom na tastere pomerati upaljenu Led diodu na izlazu. U zavisnosti od toga koji se taster pritisne pali se prva leva ili prva desna Led dioda do diode koja je upaljena. Dioda koja je bila upaljena gasi se. Pomeranje prve Led diode (PORTB,0) udesno pali poslednju Led diodu (PORTB,7). Pomeranje poslednje Led diode (PORTB,7) udesno pali prvu Led diodu (PORTB,0).. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.
PORTB Prikaz
PORTA.0 Pomeranje ulevo
PORTA.1 Pomeranje udesno


ajde ljudi svima ste uradili samo meni niko nece da pomogne. molim vas treba mi hitno
Slavenko brate ajde pomozi i meni ako mozes
[ Stojan Trifunovic @ 16.06.2008. 17:54 ] @
Ne, ne. PicLoops program nije moj, vec William J. Bouchera sa http://www.mnsi.net/~boucher/emporium.htm . Zavrsio ga je negde oko 2001, a onda ga je izbrisao sa svog sajta, tako da se vise ne moze naci. Zato sam ga okacio kod sebe.

Nazalost Slavenko ne idu nesto ovi "na brzaka" napisani programi. Imate i Vi par gresaka.

1. U trenutku dovodjenja napona napajanja mikrokontroleru preko TRISB (i TRISA) su svi pinovi ulazni. Za razliku od njega PORTB (i PORTA) utrenutku ukljucenja sadrzi nedefinisanu vrednost.
E sada, ukoliko se u PORTB registru na mestu bita 0 nadje logicka 1, prilikom izvrsavanja programa jedno kratko vreme (2 mikrosekunde) bi pin davao logicku 1. Za relej to uopste nije bitno, ali jeste ukoliko su spolja povezana npr logicka kola 74xx ili 40xx serije. Resenje ovoga je podesavanje vrednosti u PORT registrima pre podesavanja TRIS registara. Buduci da postavljac teme nije precizirao eksterni hardver, trebala bi se i ova opcija uzeti u obzir.

2. movwf .51 instrukcija trebala bi biti movlw .51 . Inace ce se u registar opste namene na adresi 0x33 staviti (nedefinisana) vrednost W registra, a sledecom instrukcijom bi se ista nedefinisana vrednost W registra stavila u BROJAC1.

3. Rezultat decfsz BROJAC1,0 je isti kao decfsz BROJAC1,W, odnosno rezultat ce se naci u W a ne u F (registru BROJAC1), tako da ce se program neprekidno vrteti u prvoj petlji. Ista je situacija i sa registrima BROJAC2 i BROJAC3. Preporucujem Vam da koristite na ovaj nacin (sa W i F) imenovanja bitova, bas da bi eliminisali pojavu ovakvih brzih greskica.

4. Po narednoj pauzi vrednost unutar registara BROJAC2 i BROJAC3 nije inicijalizovana. To moze prouzrokovati krace trajanje pauze (par desetih delova sekundi) ukoliko je pauza prekinuta sa vrednostima .1 u BROJAC2 i BROJAC1 registrima.


Sto je brzo, to je i kuso. Posaljite lepo Slavenku par kredita, i imacete siguran i testiran program.


Sa PicLoops programom nije moguce testirati prekidac unutar petlje, ali je moguce testirati program simulatorom MPLAB-a, Pic Simulator IDE, Proteusom ili preko jos par programcica. Buduci da je jedino MPLAB potpouno besplatan, evo kakve rezultate daje:

Sa vrednoscu BROJAC3 = .51 pauza je oko 16.73 sekundi. Ispravna vrednost trebala bi biti .31 za 10.172727 sekundi. Buduci da postavljac teme nije naglasio potrebno odstupanje, ovo bi mozda bilo dovoljno. Dodatno poboljsanje preciznosti vremena postiglo bi se inicijalizacijom vrednosti BROJAC2 i BROJAC1 registara uz BROJAC3.
[ Stojan Trifunovic @ 16.06.2008. 18:09 ] @
Uops, sada videh da ste trazili trajanje petlje bez testiranja prekidaca. Tacna vrednost pauze bez testa prekidaca sa BROJAC1 = .255, BROJAC2 = .255, BROJAC3 = .51 i 4MHz je 10.052449 sekundi.
[ Slavenko @ 16.06.2008. 19:38 ] @
Ovu poruku sada već pišem drugi put jer mi jedna koju napisa nekako odjednom nestade a nisam video Big Laleta u blizini pa mi nije baš najjasnije šta se desilo ali nema veze otprilike sam napisao nešto ovako :

Bravo, Stojane ovo ja zovem konstruktivan dijalog i ovako treba da se radi !


Dalje : nemojte mi persirati !

Program sa greškama koje sam već napisao neka ostane kao primer brzog pisanja koda o čemu sam već pisao a ovde ću da uradim ispravku :

Evo sada i mojih komentara :

1. Pošto se motor uključuje preko sklopke nećemo razmatrati ovu tačku jer u ovom slučaju nije od značaja ! Inače iz mog iskustva izlazi su većinom u stanju log. 0. Mikročipovi mikrokontroleri ako mene pitaš su nešto kao ona stara Ruska tehnika stvarno treba da budeš "stručnjak" da ga uništiš. Ovo što ovi mikrokontroleri mogu da izdrže to nema ni u jednoj njihovoj prezentaciji. Primera radi umesto na 5 V ja sam ga par puta priključio na cca 16 V i gledam šta neće - jedini problem je bio što ništa nije radilo na tom naponu ? Kad sam skontao da sam izbegao stabilizator 7805 pomislio sam da je od njega ostalo samo kućište. Posle se ispostavilo da ništa nije uništeno ostao je potpuno ispravan !

2. movwf .51 je greška koja je inače tipična za mene jer mora da mislim brzo a kucam još brže pa nisam obraćao pažnju. Dakle treba da stoji movlw .51 čime se u W registar upisuje 51. Još jedna od tipičnih grešaka je kada napišem POTRA ili POTRB !

3. BROJAC,0 mi je greška koju do sada nikada nisam napravio ali za sve postoji prvi put ,

treba da stoji BROJAC,1 ili BROJAC,f čime se trenutna vrednost BROJAC upisuje u BROJAC za sledeći ciklus !

4. Ovo si dobro primetio a nećeš verovati i ja sam danas isto to primetio kod koda koji je napisan na početku ove teme pa bi u tom slučaju pauza za drugo uključenje motora bila oko 50.33 sec. naravno za slučaj da je program radio što opet nije bio slučaj. Kod koda, koji sam ja napisao ta pauza bi u drugom krugu uključenja mogla biti drastično manja od 10 sec. u zavisnoti od trenutka aktiviranja tastera STOP ! Ne mogu da verujem da sam naseo na ovu foru ali moram priznati šta da se radi hoće to u rešenjima tipa na brzaka. To je dokaz onoga što smo već pisali za pisanje programa na brzaka !



Što se tiče PicLoops-a nema potrebe da kometarišem jer znam da ga imaš a ja ga nemam jer računam po nekoj mojoj formuli za koju mi treba manje vremena nego za PicLoops ali sam samo hteo da proveriš koliko sam blizu bio !

A sada ponovo kod koji je ispravljen :


Code:


    list p=16F84 
    #include <p16F84.inc> 

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


    cblock 0x0C    ; Definisanje bloka konstanti 

    BROJAC1        ; Brojač za prvu petlju
    BROJAC2        ; Brojač za drugu petlju
    BROJAC3        ; Brojač za treću petlju

    endc        ; Kraj bloka za definisanje konstanti



    bsf STATUS,RP0
    movlw b'00000011'
    movwf TRISA        ; Pinovi RA0 i RA1 ulazi za tastere a ostalo izlazni pinovi
    clrf TRISB       ; Svi pinovi PORTB izlazni
    bcf STATUS,RP0
 
    movlw 0x00       ; U momentu uključenja mikrokontrolera svi pinovi
    movwf PORTB       ; na PORTB su u stanju log. nule da se onemogući slučajno 
               ; uključenje mašine a pre pritiska tastera Start
    

Start   
    
    btfsc PORTA,0        ; Testira START taster, ako je pritisnut nastavlja se program 
    goto Start        ; ako nije onda ide na labelu Start za ponovno testiranje tastera START

    bsf PORTB,0       ; Nakon pritiska tastera START setuje se pin RB0 i uključuje mašinu 
    movlw .255        ; Mora da se upiše ova vrednost u varijable BROJAC1 i 2 jer za slučaj da se desi pritisak tastera
    movwf BROJAC1  ; u trenutku kada se program nalazi u petlji biće zapamćene trenutne vrednosti za BROJAC1 i 2 pa 
    movwf BROJAC2  ; pauza u sledećem uključenju može biti drastično kraća od 10 sec.
    movlw .51       ; Ubacuje vrednost 51 u BROJAČ3 koliko
    movwf BROJAC3       ; je otprilike potrebno da bi se imala pauza od 10 sec.

Petlja    
    btfss PORTA,1       ; Da li je pritisnut taster STOP ?
    goto Stop       ; Jeste, idi na labelu Stop isključi mašinu pa onda idi na početak programa
    decfsz BROJAC1,f
    goto Petlja
    decfsz BROJAC2,f
    goto Petlja
    decfsz BROJAC3,f
    goto Petlja    

Stop    bcf PORTB,0        ; Posle pauze od 10 sec. mašina se sama isključuje osim ako prije toga nije
               ; pritisnut taster STOP u petlji što će izvršenje programa direktno usmeriti
               ; na ovu labelu Stop i zaustaviti njen rad tj. isključiti je !
    
    goto Start       ; Ide na početak i ponovo čeka tenutak kada će se pritisnuti taster za START
              

    end            ; kraj programa



Nadam se da više nema grešaka mada sam opet proverio sistemom na brzaka !




[Ovu poruku je menjao Slavenko dana 17.06.2008. u 00:45 GMT+1]
[ sasha_kg @ 16.06.2008. 20:35 ] @
za Slavenka

Hvala na resenju zadatka
[ Slavenko @ 16.06.2008. 20:58 ] @
REŠENJE OVOG ZADATKA NIJE TAČNO ! ISPRAVLJENO JE ISPOD A OVO OSTAJE DA SE VIDI SISTEM "NA BRZAKA"

OK Sale ! Nadam se da mi nisi zamerio možda sam bio malo grub pa mi posle bude krivo ali veruj mi ove stvari mora da znaš zbog sebe, nemoj da vam bude opravdanje profesor ili asistent !



za TRAJKO41 :

Zadatak koji si postavio je :

Pritiskom na tastere pomerati upaljenu Led diodu na izlazu. U zavisnosti od toga koji se taster pritisne pali se prva leva ili prva desna Led dioda do diode koja je upaljena. Dioda koja je bila upaljena gasi se. Pomeranje prve Led diode (PORTB,0) udesno pali poslednju Led diodu (PORTB,7). Pomeranje poslednje Led diode (PORTB,7) udesno pali prvu Led diodu (PORTB,0).. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.
PORTB Prikaz
PORTA.0 Pomeranje ulevo
PORTA.1 Pomeranje udesno

Rešenje :

Prvo treba da ti kažem da ti asistent nije rekao koja LED dioda treba da bude uključena na početku da bi imalo smisla da se vrši pomeranje jer ako ni jedna nije, onda nema ni pomeranja. Pošto to nije eksplicitno rečeno onda sam ja izabrao da to bude LED koja je priključena na RB3 i koja se odmah po uključenju programa, pardon mikrokontrolera na napajanje uključuje da bi pomeranje moglo biti realizovano preko tastera koji su navedeni.
Nemoj da mi zameriš ako postoji neka greška verujem da će neko da se javi ako je primeti jer sam lepo rekao da nemam vremena ni za kakve provere a i ovako me boli glava od vaših zadataka iako su laki jer stvarno imam previše mojih obaveza koje danas nisam stigao završiti pa ću morati ostati noćas do kasno. Shvatićeš ovo jednog dana kada budeš odlučio da pišeš programe za mikrokontrolere. Samo još da naglasim da je u praksi testiranje tastera daleko složenije od ovih koje sam uradio tebi i itvojim kolegama u zadacima zato što se mora uzeti u obzir da taster pravi puno trzaja i pri uključenju kao i pri isključenju pa postoje neke programse rutine kojima se to eliminiše u zavisnosti od kvalitata upotrebljenog tastera. Pretpostavljam da u zadacima koje ste vi dobili one nisu neophodne jer se traži od vas da vide vaš način rešavanja konkretnih zadataka inače bi samo deo koda koji vrši testiranje tastera zbog nesavršenosti njegovih kontakata bilo duže nego svaki od ovih programa pojedinačno ako bi se pravilno napisao.

Rešenje za tvoj zadatak je :

Code:


        list p=16F84A 
    #include <p16F84A.inc> 
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


    LED equ 0x0C     ; Definisanje promenjive u kojoj se čuva podatak koja LED je uključena


    bsf STATUS,RP0
    movlw .3         ; Pinovi RA0 i RA1 su definisani kao ulazi a
    movwf TRISA     ; a ostali su konfigurisani kao izlazni
    clrf TRISB     ; Svi pinovi PORTB su konfigurisani kao izlazni
    bcf STATUS,RP0

    movlw b'00001000' ; Jedna dioda mora da bude uključena na početku programa da bi se 
                ; vršilo pomeranje ja sam izabrao da to bude LED koja je priključena na RB3
    movwf LED      ; Dakle po uključenju programa dija LED na pinu RB3

Početak
    btfss PORTA,0      ; Da li je uključen taster za pomeranje u LEVO ?
    goto Levo      ; Jeste, skoči na Labelu za pomeranje u levo !
    btfsc PORTA,1      ; Nije, a da li je uključen taster za pomeranje u DESNO ?
    goto Početak      ; Nije, idi ponovno na testiranje dok nešto ne bude stisnuto od ova dva tastera !
    
    rrf LED,f      ; Uključen RA1 i pomera se trenutni sadržaj LED varijable u desno pamti novo stanje pa se 
    movf LED,W      ; prebacuje sadržaj LED u W registar
    movwf PORTB      ; sada se sadržaj W prebacuje na PORTB kada se praktično vrši pomeranje u desno
    goto Početak      ; Posle pomeranja idi na početak da vidiš koji taster će sada biti aktiviran !

Levo 
    rlf LED,f      ; Pomera sadržaj varijable LED u levo za jedno mesto pamteći novo
    movf LED,W      ; prebacuje sadržaj LED u W registar
    movwf PORTB      ; prikazuje W sadržaj na PORTB i vrši pomeranje u levo gaseći prethodnu LED
    goto Početak      ; Vraća se na početak programa za novo testiranje tastera !
    

    end


Nadam se da nema grešaka , ako ima javite !

PS: Samo da još jednom naglasim : ovaj zadatak ne bi radio u praksi kao što sam i rekao zbog rutine koja je potrebna za testiranje tastera ali kao zadatak koji treba rešiti da bi se videlo u kom pravcu student razmišlja je dobar ! To znači da praktična primena ovog zadatka ne bi dala očekivane rezultate osim u slučaju korišćenja idealnog tastera ( koji ne postoji osim u teoriji ) !



[Ovu poruku je menjao Slavenko dana 17.06.2008. u 01:20 GMT+1]

[Ovu poruku je menjao Slavenko dana 17.06.2008. u 14:58 GMT+1]
[ TRAJKO41 @ 17.06.2008. 08:51 ] @
Za Slavenka.

Hvala puno, probacu pa cu da javim kako radi.Pozz
[ Slavenko @ 17.06.2008. 10:33 ] @
Trajko taj program neće raditi kako treba vać sam ti naglasio jer nema rutine za testiranje tastera. Informacije radi pošto se ovim stvarima očigledno niste bavili stvari stoje ovako :

Na samo jedan pritisak tastera on će proizvesti toliko prekida da ti nećeš moći ni videti koliko pomeranja je bilo za samo jedan pritisak. Primera radi iz moje prakse : na jedan pritisak i otpuštanje tastera on generiše najmanje (barem ) 4-5 impulsa ako je kvalitetniji ( a zavisi i kako si ga pritisnuo ) pa sve do par stotina impulsa. Ovo ti pričam zato što sam jednom namerno izbacio rutinu za testiranje tastera kod brojača koga sam pravio i blago rešeno ostao začuđen rezultatima.
Znači i prilikom pritiskanja tastera on generiše više impulsa a takođe radi to i prilikom otpuštanja. Koliko god ti bio brz u stiskanju i puštanju on će raditi kako radi jer nema savršene kontakte.


PS: Nemoj da se razočaraš , to ti je praksa a školski zadatak ima za cilj nešto drugo, da se vidi koliko si shvatio priču koja je pričana na predavanjima ! Rezultat ovog rešenja možeš da vidiš jedino u simulatoru !
[ arsoKG @ 17.06.2008. 10:59 ] @
moze li neko pomoci u vezi ovoga? treba u okviru vremena za kasnjenje definisati brojach/kao for petlja u c++??//

thnx anyway.

zadatak:

Realizovati oscilator učestanosti 10 Hz kog koga se odnos signal-pauza moze da menja. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.

PORTA.0 Izlaz oscilatora
PORTA,1 Invertovani izlaz oscilatora
PORTB.0 Povećanje trajanja impulsa
PORTB.1 Smanjenje trajanja impulsa

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

kasnjenje ;kašnjenje za
;pola sekunde
movlw B'00000011'
movwf brojac1
movlw B'11111111'
movwf brojac2
movlw B'11111111'
movwf brojac3
start1
decfsz brojac1
goto start2
goto kraj
start2
decfsz brojac2
goto start3
goto start1
start3
decfsz brojac3
goto start3
goto start2

kraj ;ovde je kraj
;brojenja
--------------------------------------------------
osnova za program
; primer 1
; Pritiskom na ulaz 0 porta pale se led diode 0,2,4,6 a gase 1,3,5,7 portb
; Pritiskom na ulaz 1 porta pale se led diode 1,3,5,7 a gase 0,2,4,6 portb

#include p16f84A.inc ; inicijalizaija procesora koji ce se koristiti
processor 16f84A
org 5 ; program pocinje od pozicije 5 u memoriji
; inicijalizacija
clrf PORTA ;
clrf PORTB ;
bsf STATUS,RP0 ; prebaciti se u banku 1 memorije
movlw 0x1f ; definisanje da je porta ulazni
movwf TRISA ; nazivi registara pisu se velikim slovom
movlw B'00000000' ; definisanje da je portb izlazni
movwf TRISB ; vratiti se iz banke 1 memorije
bcf STATUS,RP0

start ; labela za pocetak ispitivanja
;
movlw B'01010101' ; pale se led diode 0,2,4,6 a gase 1,3,5,7 portb
movwf PORTB ; u port b upisi 0x55
btfsc PORTA,0 ; ispitaj da li je pritisnut taster porta.0
goto akcija1 ; ako jeste skoci na akcija 1 ako nije preskoci na sledece ispitivanje
btfsc PORTA,1 ; ispitaj da li je pritisnut taster porta.1
goto akcija2 ; ako jeste skoci na akcija 2 ako nije vrati se na pocetak ispitivanja
; pale se led diode 0,2,4,6 a gase 1,3,5,7 portb
movlw B'01010101' ; u port b upisi 0x55
movwf PORTB ;
goto start ;vrati se na pocetak ispitivanja





akcija1 ; pale se led diode 0,2,4,6 a gase 1,3,5,7 portb
movlw B'01010101' ; u port b upisi 0x55
movwf PORTB ;
goto start ; vrati se na pocetak ispitivanja



akcija2 ; pale se led diode 1,3,5,7 a gase 0,2,4,6 portb
movlw 0xAA ; u port b upisi B'10101010'
movwf PORTB ;
goto start ; vrati se na pocetak ispitivanja

__config B'11111111110001' ; nema zastite koda, powerup dozvoljeno,
; wd iskljucen, xt oscilator

end ; kraj programa




pauza ; potprogram za pravljenje kasnjenja
movlw 0xff
movwf delay
petlja
decfsz delay,1 ; kasnjenje je oko delay * 2 mikrosekundi
goto petlja ; za oscilator od 4MHz
return
[ Stojan Trifunovic @ 17.06.2008. 12:00 ] @
Ne ide. Nikako da prorade ovi "brzinski" programi. Ipak ima previse sitnica na koje se treba obratiti paznja. Ni ovaj za Trajka nece raditi kako bi trebalo.

1. Na pocetku (pre labele Pocetak) je inicijalizovan samo LED registar, a ne i PORTB. Zato ce se na njemu odmah po ukljucenju javiti nedefinisano stanje, koje ce trajati sve do pritiska jednog od tastera.

2. Pre svake rotacije morao bi se obrisati Carry flag, kako ne bi dosao na mesto MSB ili LSB bita LED registra.

3. Nakon rotacije koja se obavlja nad LED registrom, mora se sadrzaj iz LED registra prebaciti u W, a onda iz njega u PORTB. Ovako se u PORTB postavlja jedan te isti (inicijalni b'00001000') sadrzaj.

4. Kada ukljucena LED dodje do mesta MSB ili LSB bita LED registra, pre rotacije se mora detektovati ovo stanje, kako se u LED registru ne bi naslo stanje b'00000000', a 'ukljuceni' bit presao u Carry flag.

Pored toga, zadatak i dalje nije dovoljno precizno postavljen zbog nepostojanja eksternog hardvera. Da li su na pinove RA0 i RA1 povezani pull-up ili pull-down otpornici (Slavenko je u zadatku pretpostavio da su u pitanju cesce korisceni pull-up) ili su pak pinovi povezani jedino za prekidace u kom slucaju program jednostavno nece raditi pouzdano, bez obzira sta vam tvrdila profesorka ili asistent. Pored toga u zadatku nije (sto je Slavenko lepo primetio) postavljena pocetna vrednost ukljucene LED. Eto kako se lako iz postavki ovakvih zadataka utvrditi strucnost predavaca.
U ovom slucaju, u zadatku bi pored softvera trebalo definisati i eksterni hardver upravo zbog prekidaca. A ukoliko se ne zeli testirati i 'trzanje prekidaca' (strucni izraz debouncing) potrebno je na RA0 i RA1 pinove dodati hardverski debouncing preko npr. dva otpornika i jednog kondenzatora. Mozda bi hardverski debouncing bio suvisan pri niskom taktu oscilatora (naravno, ni on nije definisan) od oko 2-3Hz. Vise o hardverskom debouncingu imate u odlicnim lekcijama za PIC seriju sa www.gooligum.com.au , tacnije u www.gooligum.com.au/tutorials/PIC_Intro_4.pdf .

Dve vezbe za PIC16F84 je stvarno malo. U tom slucaju ne bi ni trebali dobijati ovakve zadatke. Izgleda da vam fakultet pati i od slabe organizacije (bar iz arhitekture racunarskih sistema). Nazalost, nije jedini. Braca mi sutra polazu prijemni ispit za srednju skolu. Verovali ili ne, ne uspevam resiti preko 70% zadataka iz srpskog jezika.

A sada dosta vise pomoci gotovim zadacima. Potrudite se malo i sami. Probajte prilagoditi Slavenkov program prema gornjim preporukama, i postujte ga ovde kada nesto zaskripi. Pretpostavljam da ste vec skinuli MPLAB sa www.microchip.com i da ste uspeli podesiti program za PIC16F84 i da ste dosli do njegovog editora.
[ Slavenko @ 17.06.2008. 13:53 ] @
Ponovo se potvrđuje da brzina ne rešava problem. Dakle, Stojene u pravu si ali nisam siguran u svemu buni me jedan deo !
Pošto sam se sam uvukao u ovo mora sam i da ispravim greške a opet neću da ispravljam kod na mestu gde je napisan nego ovde iako ni sam ne znam kako da stignem završiti za mene posao koji još od juče nisam stigao a sinoć do kasno sam ostao raditi .

Evo na brzaka mojih komentara na Stojanove po tačkama kako je pisao :

1. Totalno u pravu , nisam upisao podatak na PORTB još sam kao kontrolisao par puta sinoć !

2. Može biti nemam vremena za razmišljanje !
3. Nisam te shvatio šta si ovde hteo reći jer se sadržaj prebacuje u W i iz njega na PORTB. Tu sam grešku sinoć primetio pa sam je ispravio ali danas je nema , tako da mi nisi jasan u ovom pogledu. Nemoj mi zameriti jer stvarno ne mogu previše razmišljati sada, bukvalno razmišljam paralelno kako da završim posao koji sam drugima obećao tako da sam ovde trenutno samo delimično.

4. Ovde si apsolutno u pravu !


Što se tiče izbegavanja varničenja kontakata tastera neće mu pomoći vezivanje kondenzatora ni na kojoj frekvenciji , taj pristup je uvek nepouzdan. Jedino softversko rešenje pomaže a sa njim može da se doda i kondenzator u rešenjima kojima je to neophodno.

Poenta : Nikada na brzaka još jednom se potvrdila. Možda ja nebi ni napravio grešku u programu pod uslovom da samo mislim o njemu ali praktično sam u ovome pristutan jako malo uslovljen mojim problemima koje mora da rešavam. Asistent je napravio dobru zvrčku sa uslovom a to si Stojane dobro primetio ! Informacije radi sada je 14 i 50 a ja još nisam doručkovao a glupiram se ovde :( .


I na kraju, za danas imam toliko vremena da pročitam eventualno novi komentar a tek sutra mogu da ga komentarišem pa nemojte zameriti !


Sledi ispravljen kod :

Code:


list p=16F84A 
    #include <p16F84A.inc> 
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC


    LED equ 0x0C     ; Definisanje promenjive u kojoj se čuva podatak koja LED je uključena


    bsf STATUS,RP0
    movlw .3         ; Pinovi RA0 i RA1 su definisani kao ulazi a
    movwf TRISA     ; a ostali su konfigurisani kao izlazni
    clrf TRISB     ; Svi pinovi PORTB su konfigurisani kao izlazni
    bcf STATUS,RP0

    movlw b'00001000' ; Jedna dioda mora da bude uključena na početku programa da bi se 
                ; vršilo pomeranje ja sam izabrao da to bude LED koja je priključena na RB3
    movwf LED      ; Dakle po uključenju programa dija LED na pinu RB3
    movf LED,W      ; Prebacuje sadržaj LED u W
    movwf PORTB      ; Tek sada se pali LED na RB3
                   

Početak
    btfss PORTA,0      ; Da li je uključen taster za pomeranje u LEVO ?
    goto Levo      ; Jeste, skoči na Labelu za pomeranje u levo !
    btfsc PORTA,1      ; Nije, a da li je uključen taster za pomeranje u DESNO ?
    goto Početak      ; Nije, idi ponovno na testiranje dok nešto ne bude stisnuto od ova dva tastera !
    
    
    rrf LED,f      ; Uključen RA1 i pomera se trenutni sadržaj LED varijable u desno pamti novo stanje pa se 
    btfsc STATUS,0
    goto Desni_prenos
    movf LED,W      ; prebacuje sadržaj LED u W registar
    movwf PORTB      ; sada se sadržaj W prebacuje na PORTB kada se praktično vrši pomeranje u desno
    goto Početak      ; Posle pomeranja idi na početak da vidiš koji taster će sada biti aktiviran !

Levo 
    
    rlf LED,f      ; Pomera sadržaj varijable LED u levo za jedno mesto pri tome gaseći prethodno stanje pamteći novo
    btfsc STATUS,0
    goto Levi_prenos
    movf LED,W      ; prebacuje sadržaj LED u W registar
    movwf PORTB      ; prikazuje W sadržaj na PORTB i vrši pomeranje u levo gaseći prethodnu LED
    goto Početak      ; Vraća se na početak programa za novo testiranje tastera !

Levi_prenos

    movlw .1
    movwf LED
    movf LED,W
    movwf PORTB
    bcf STATUS,0    
    goto Početak

Desni_prenos

    movlw .128
    movwf LED
    movf LED,W
    movwf PORTB
    bcf STATUS,0
        goto Početak

    end



PS: Stojane ako imaš vremena prekontroliši ovaj kod , nadam se da je sada OK !
[ Stojan Trifunovic @ 17.06.2008. 16:13 ] @
Za tacku 3. greska je moja. Na dial-upu sam i poruke primam preko mailing liste, tako da nisam ni mogao primetiti sinocnu ispravku programa.

Tacka 2 resena je u ovom programu bcf STATUS,0 instrukcijama. Ja obicno stavljam bcf STATUS,C neposredno pre instrukcija rotacije, ali ne smetaju ni ovde.

Ipak, i u ovom i u proslom programu potkrala se jedna mala greskica, a ona se tice (necete verovati) tipa mikrokontrolera. PIC16F84 se prestao proizvoditi (sto profesorka sigurno ne zna), a PIC16F84A mu je ekvivalentna zamena. Ipak, buduci da bi profesorka mogla zbog toga reci da program ne valja (verujte mi na rec, imao sam slucajeve gde sam na ocigledno nebulozna pitanja samo klimao glavom, iz straha da ne budem oboren) Trajko bi trebao ovo ispraviti.

Slavenku se pak ovakva greskica sigurno potkrala usled profesionalne deformacije. On je potpuno svestan da je danas veoma tesko naci PIC16F84.


Slavenko, preporucio bih Vam da grrr. Preporucio bih ti da i oznake bitova pises u binarnom formatu. Meni je bar daleko razumljivje citati movlw b'00000011' pa movwf TRISA umesto movlw .3 pa movwf TRISA. Isto vazi i za prekoracenja (b'00000001' umesto .1 i b'10000000' umesto .128) i za STATUS,C umesto STATUS,0. Za ovako jednostavne programe to i nije od nekog znacaja, ali sigurno si i sam bio u situaciji da vise vremena utrosis na debagovanje programa nego na njegovo ponovno pisanje iz pocetka.

Ipak, hardverski debouncing radi, iako se u praksi skoro UOPSTE ne primenjuje. Zbog cega? Pa jeftinije je i pouzdanije realizovati ga softverski, a u nekim slucajevima (multipleks matrice tastera) nije ni moguc.

Nizak takt oscilatora nisam naveo kao hardverski debouncing, vec kao teoretsku mogucnost softverskog debouncinga (za slucaj da je tako mali takt dovoljan za ista - obicno nije). Sudeci po testovima sa http://www.ganssle.com/debouncing.pdf tesko da bi tasteri 'titrali' i nakon oko 200mS, a prst bi za to vreme sigurno i dalje pritiskao taster. U istim testovima navedeno je i par primera hardverskih debouncinga, ali princip sa slike 2 (Figure 2: An RC debouncer) je po principu potpuno isti kao sa www.gooligum.com.au/tutorials/PIC_Intro_4.pdf zbog visoke impedanse ulaznih pinova mikrokontrolera. Ovo je ipak pitanje za neku drugu temu.


Da rezimiram. U programu promenite
Code:
   list p16F84A
   #include <p16F84A.inc>

u
Code:
   list p16F84
   #include <p16F84.inc>

i program ce raditi bez greske (ako uspete nabaviti PIC16F84).

Za slucaj da Vas profesorka pita, napomenite da su na elektricnoj semi postavljeni pull-up otpornici, tako da kada su tasteri pritisnuti salju na pinove logicku 0. Ukoliko Vas pita zasto pull up a ne pull down, izmislite bilo sta (elektrostaticke smetnje, bolja stabilnost prilikom losih izvora napajanja, sunceve pege, bioenergija, mali zeleni...). Ionako ni sama ne zna odgovor. A ukoliko bas insistira, napomenite joj da SVI danasnji mokrokontroleri koriste upravo integrisane pull-up otpornike (naravno, zbog gore navedenih razloga).

Ukoliko zelite da impresionirate profesorku, pitajte je da li mozete umesto PIC16F84 koristiti PIC16F84A jer ovaj prvi ne mozete nabaviti, i zatrazite joj da vam objasni razliku izmedju njih.

[Ovu poruku je menjao Stojan Trifunovic dana 17.06.2008. u 21:23 GMT+1]
[ Slavenko @ 17.06.2008. 20:41 ] @
Kao neću se javljati danas ali nisam mogao izdržati pa evo javljam se !

Hehe Stojane, znam da nema više 84-ke bez A, i ja kada sam radio ove programe obično kopiram prve tri linije jer su manje više standardne za sve programe tako da je bilo 84A ali sam izbrisao A zato što se tražilo eksplicitno rad na 84.
E sada nećeš verovati u prethodnom programu postoje višak dve naredbe , izgleda da to nisi primetio a malo si me i prevario na brzaka za to. Program će raditi normalno , probao sam ga na simulatoru naravno ograđujući se od treperenja kontakta tastera.

Za ovaj primer naravno mogu se iskoristiti kondenzatori paralelisani na ulazu da bi smanjili efekat titranja kontakata čisto da bi videli efekat koji je napravljen programom. Ako i protrči neki put više nego što je trebalo nije od važnosti za ovakav tip zadatka, na kraju krajeva radi se o LED diodama e ne mašini koja bi eventualno mogla biti uključena u trenutku kada joj nije vreme.

U svakom slučaju, lepo smo krenuli a mogli bi i da nastavimo meni se sviđa ! Ima još zadataka koliko sam primetio pa ćemo videti u narednim danima kako će biti sa slobodnim vremenom što se mene tiče. Za studente koji su dobili ove zadatke opet napominjem da nisu teški i samo ih treba dobro sagledati, naravno ne na brzaka jer se onda potkradaju greške što ste mogli i primetiti kod mene.
Kao što ste primetili niko se nije ljutio na komentare da nešto ne radi nego su preduzete mere da se to popravi da bi radilo a tako treba da se radi ako mene pitate. Voleo bih da pošto imamo još nerešenih zadataka neko pokuša da ih reši a da se ostali malo aktivnije uključe u komentare i predloge. Što se mene tiče čim malo dobijem vremena idemo dalje sa rešavanjem.

Toliko od mene ovaj put a sada idem da nastavim sa poslom koji sam započeo !
Pozdrav !
[ Stojan Trifunovic @ 17.06.2008. 20:55 ] @
Arso, mozete li malo detaljnije opisati zadatak? Ima nas ovde koji ne razumeju C++.

Na koji način bi trebalo da se menja učestanost?
1. Promenom dužine samo signala,
2. Promenom dužine samo pauze,
3. Promenom oba parametra,
4. U kojim granicama (koja je donja i gornja granična frekvencija npr. 5Hz i 15Hz ili 3Hz i 30Hz),
5. Sa kojom rezolucijom (npr. 1Hz ili 0,5Hz),
6. Kolika su dozvoljena odstupanja od tačne frekvencije (npr. +-0,1Hz ili +- 0,01Hz).


Par saveta za kragujevačke studente:

Ukoliko je moguće za zadatke izaberete da prekidači budu na portu B, a ne na portu A. Razlog su integrisani pull up otpornici unutar PIC16F84 mikrokontrolera koji eto postoje samo na portu B. To je već klasika.

Postavite program unutar code /code tagova sa leve strane. Tako će biti pravilno formatiran.

Arsa je za sada jedini student koji je eto bar probao sam da napravi program. Ugledajte se na njega.
[ Stojan Trifunovic @ 17.06.2008. 22:07 ] @
Eto. Džabe sam pohvalio Arsu!

Njegov rad je očigledno kopiran program nekog drugog studenta, a koji je trebao da radi sledeće:

; Pritiskom na ulaz 0 porta pale se led diode 0,2,4,6 a gase 1,3,5,7 portb
; Pritiskom na ulaz 1 porta pale se led diode 1,3,5,7 a gase 0,2,4,6 portb

Arsin zadatak je klasičan PWM a ne promena frekvencije kako sam pogrešno zaključio u prošlom mailu, ali ovakvo prikazivanje "sopstvenog" rada stvarno vise nema smisla.

Što je najgore, i taj prepisan program je najblaže rečeno očajan.
[ stefic_kg @ 18.06.2008. 09:32 ] @
Evo mene opet! :-)

U vezi zadatka koji nije bio jasno definisan, a ciji tekst je glasio ovako:

Realizovati svetlosni efekat tako da se led diode PORTAB, PORTA,0 i PORTA,1, PORTA,2 se pale po jedna sa leve i desne strane počev od PORTB,5 (koja se pali sama) redom svake sekunde. Kada se sve upale prvo se gase poslednje upaljene led diode Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.

Nakon konsultacije sa asistentom, zadatak treba da izgleda ovako:

A4 A3 \ A2 A1 A0 B7 B6 B5 B4 B3 B2 B1 B0

Znaci, led diode se pale svake sekunde na levo i na desno od B5 istovremeno po jedna dok ne dodje do kraja (tj, do B0 i A2).
Onda se insto ovako ali u suprotnom smeru gase led diode. ( od B0 i A2 ka B5).
Svo vreme, B5 treperi.

Za Slavenka: Bio si u pravu.

Nije nam toliko bitno trenutno da li je u potpunosti tacan zadatak, treba nam neka osnova, a za greske videcemo sa asistentom, pa ako ne budemo mogli da resimo,
javicemo se mozda ponovo da nam nesto objasnite ako bude trebalo.

Kad budes imao vremena pogledaj zadatak pa javi.

Pozz

[Ovu poruku je menjao stefic_kg dana 18.06.2008. u 15:54 GMT+1]
[ arsoKG @ 18.06.2008. 10:19 ] @
:)))/ braco:P mi smo na faksu radili 2 glupa primera i objasnio nam je 5,6 naredbi a trazi da odradimo ovo + nemamo vremena zbog ostalih obaveza. Predmet se ne zove mikrokontroler nego se radi u okviru dr.predmeta>pre je to mozda bilo 2semestra sada je sve zajedno.

jednostavno ne znamo sintaksu asemblera i to je to. imamo 100 zadataka od prethodnih generacija//nesto treba izmeniti i radice>>/zato sam ono poslao,valjda bi vam bilo lakse da samo onde nesto izmenite nego da sve pisete ponovo???


//da objasnim sto nije jasno

ovo za led 1 3 5 7 >samo treba upisati b='1111111' i posle 10 Hz b='000000'
i sve tako naizmenicno //znaci nema veze sa portovima A B// to je kao nulta operacija

treba da se definise 'vreme kasnjenja' od koliko...5ms=10Hz? kao FOR petlja u c++
// ali u okviru toga dela za kasnjenje ce biti neki brojac koji ce se povecavati i smanjivati preko porta A i B.

portovi a b sluze za menjanje bas te frekvencije(brojaca) od 10Hz >pritisnes A >frekvencija paljenja se povecava za recimo +10Hz>pritisnes A> +10 ,pritisnes B smanji se za -10Hz//..etc.

kao program

while(1)//beskonacna petlja
{
b='oooooooo'
FOR(i=0; i<=n;i++)
{

prodje vreme od 10Hz....;

//vreme 10Hz se menja preko brojaca n! odnosno onih ulaza A B
sto je n vece vece je vreme i obrnuto
//

b='1111111' - komplementirati izlaz!

}
}

kukvalno ovo treba napisati u asembleru
>a ti preko A i B menjas vrednost n>//koje je u pocektu bilo takvo da proizvodi frekvenciju 10Hz//

kontate li sada? bzvz prozivate ljude,ni meni nije jasno da znate asembler a ne znate c++ //zato mi nekome mozemo odraditi c++ neko nama ovaj shit i svi zadovoljni//zato i sluzi forum.

aj pozz//











--0-1188563178-1213780736=:3229
Content-Type: text/html; charset=iso-8859-2
Content-Transfer-Encoding: quoted-printable

--- On Tue, 6/17/08, Stojan Trifunovic &lt;[email protected]&gt; wrote:From: Stojan Trifunovic &lt;[email protected]&gt;Subject: Re: Potrebna mi je pomoc oko zadatka [elitesecurity.pracenje.teme]To: [email protected]: Tuesday, June 17, 2008, 9:55 PMArso, mozete li malo detaljnije opisati zadatak? Ima nas ovde koji ne razumejuC++.Na koji na�in bi trebalo da se menja u�estanost? 1. Promenom du�ine samo signala,2. Promenom du�ine samo pauze,3. Promenom oba parametra,4. U kojim granicama (koja je donja i gornja grani�na frekvencija npr. 5Hz i15Hz ili 3Hz i 30Hz),5. Sa kojom rezolucijom (npr. 1Hz ili 0,5Hz),6. Kolika su dozvoljena odstupanja od ta�ne frekvencije
(npr. +-0,1Hz ili +-0,01Hz).Par saveta za kragujeva�ke studente:Ukoliko je mogu�e za zadatke izaberete da prekida�i budu na portu B, a ne naportu A. Razlog su integrisani pull up otpornici unutar PIC16F84mikrokontrolera koji eto postoje samo na portu B. To je ve� klasika.Postavite program unutar code /code tagova sa leve strane. Tako �e bitipravilno formatiran.Arsa je za sada jedini student koji je eto bar probao sam da napravi program.Ugledajte se na njega.--http://www.elitesecurity.org/p1978529Prijave/odjave: http://www.elitesecurity.org/pracenje#326390Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!esauth:326390:3ec203834c6f24070762b4193997e7eb
[ djasha @ 18.06.2008. 11:29 ] @
Ljudi jel mogu da vas zamolim da mi uradite sledeci zadatak!!!
Hvala unapred!!! za sve informacije obratite mi se na mail [email protected]

ZADATAK:

Napraviti demonstraciju RS leča
PORTA,0 R ulaz
PORTA.1 S ulaz
PORTB.8 Izlaz

ZADATAK:

Napraviti demonstraciju logičkih funkcija I, ILI, NI, NILI, ISKLJUČIVO ILI,
PORTA,0 Prvi ulaz
PORTA.1 Drugi ulaz
PORTB.0 Izlaz za funkciju I
PORTB.1 Izlaz za funkciju ILI
PORTB.2 Izlaz za funkciju NI
PORTB.3 Izlaz za funkciju NILI
PORTB.4 Izlaz za funkciju Isključivo ILI

Hvala jos jednom!!!
[ TRAJKO41 @ 18.06.2008. 11:42 ] @
Slavenko onaj zad sto si mi uradio nece bas dobro da radi.
Asistent je nesto prepravio i rekao mi je da fali neka gornja ivica da se uradi, ne znam tacno sta treba, i nekad se upale po dve lampice odjednom sto ne bi trebalo da se desava. Evo ga kod koji je prepravljen, pa ako mozes ti dodaj tu ivicu ako znas.

#include p16f84.inc ;inicijalizacija procesora koji ce se koristiti
processor 16f84

; inicijalizacija
LED equ 0x0C ; Definisanje promenjive u kojoj se čuva podatak koja LED je uključena
org 5

bsf STATUS,RP0
movlw .3 ; Pinovi RA0 i RA1 su definisani kao ulazi a
movwf TRISA ; a ostali su konfigurisani kao izlazni
clrf TRISB ; Svi pinovi PORTB su konfigurisani kao izlazni

bcf STATUS,RP0

movlw B'00001000' ;Jedna dioda mora da bude uključena na početku programa da bi se
; vršilo pomeranje ja sam izabrao da to bude LED koja je priključena na RB3

movwf LED ; Dakle po uključenju programa dija LED na pinu RB3
movf LED,W
movwf PORTB

start
btfsc PORTA,0 ; Da li je uključen taster za pomeranje u LEVO ?
goto Levo ; Jeste, skoči na Labelu za pomeranje u levo !
btfss PORTA,1 ; Nije, a da li je uključen taster za pomeranje u DESNO ?

goto start ;Ponovno na testiranje dok nešto ne bude stisnuto od ova dva tastera !

rrf LED,f ; Uključen RA1 i pomera se trenutni sadržaj LED varijable u desno pamti novo stanje opet u

movf LED,W
movwf PORTB ; LED varijabli i sve to prikazuje na izlazu PORTB u smislu kretanja uključene diode u desno

goto start ; Posle pomeranja idi na početak da vidiš koji taster će sada biti aktiviran !

Levo
rlf LED,f ; Pomera sadržaj varijable LED u levo za jedno mesto pri tome gaseći prethodno stanje i
movf LED,W
movwf PORTB ; prikazuje njen sadržaj na PORTB

goto start ; Vraća se na početak programa za novo testiranje tastera !


end ; kraj programa


vidi ako mozes pomozi.pozdrav
[ Slavenko @ 18.06.2008. 14:13 ] @
Trajko evo ovako :

Zadatak koji sam ti uradio sam ponovo probao u "mplab" simulatoru a to "znači" da kada to tamo radi dobro, da radi i u praksi ! Nemam vremena i živaca da sada povezujem praktično kod mene na razvojnoj ploči da bih video šta se to tamo kod vas dešava i da li je to moguće ali ću dati moj komentar.

Znači ako radi na mplab simulatoru onda budi siguran da to stvrano i radi barem u mom slučaju je do sada tako bilo a na kraju krajeva mplab je sa mikročipovog sajta valjda oni znaju kako im rade njihovi mikrokontroleri !

Koliko je tvoj asistent izmenio program koji sam napisao ću sada da komentarišem :

Pravilo lepog ponašanje zove se bonton a pravilo koje je usvojeno za sintaksu i semantiku kod svakog programskog jezika i pisanja programa "treba" ali "ne mora" da se koristi. U prevodu možeš da kažeš starijoj osobi "ti" ali nisi kulturan i ne poštuješ opšteprihvaćene norme ponašanja zvane bonton, ili još jednostavnije možeš da kažeš "ti" ili "vi" e nešto slično je ovde urađeno sa prepravkom koda koji sam ti napisao!

Znači, ako sam ja u programu napisao labelu pod nazivom Početak sa ( č- a njemu smeta č iako ga kompajler prihvata ) a on prepravio u start ( "S" sa malim slovom ) je nešto što neću da kometarišem jer je neviđeno glupo komentarisati. Ne znam samo kako ima vremena raditi takve stvari !
Znači pravilo pisanja labela kaže : pisati labele tako što će prvo slovo u imenu labele biti velikim slovom a ostala malim iz razloga njihovih razlikovanja od imena varijabli, konstanti i ostalog čime program postaje pregledniji i lakše se uočavaju tražene stvari ! Na dalje je umesto goto Početak što je bilo u kodu koji sam ja napisao menjao u goto start - jer je labelu Početak zamenio sa start pa je onda svugde zbog toga morao da menja Početak u start, pretpostavljam da ovoliko shvataš !

Izmenjen je kompletno ovaj deo koda ,obrati pažnju na naredbe btfss i btfsc koje je zamenio kao i ime labele Početak u start:

Code:

start
btfsc PORTA,0 ; Da li je uključen taster za pomeranje u LEVO ?
goto Levo ; Jeste, skoči na Labelu za pomeranje u levo !
btfss PORTA,1 ; Nije, a da li je uključen taster za pomeranje u DESNO ?
goto start



a bilo je :

Code:

Početak
    btfss PORTA,0      ; Da li je uključen taster za pomeranje u LEVO ?
    goto Levo      ; Jeste, skoči na Labelu za pomeranje u levo !
    btfsc PORTA,1      ; Nije, a da li je uključen taster za pomeranje u DESNO ?
    goto Početak      ; Nije, idi ponovno na testiranje dok nešto ne bude stisnuto od ova dva tastera !


Kako je on prepravio kod onda stvari dobijaju drugo značenje. On nije naglasio da li je taster u pull-down ili pull-up kombinaciji a pošto nije naglasio onda je pretpostavka da zadatak treba da se reši sa bilo kojom kombinacijom jer je svrha da se vidi kako baratate sa naredbama i kako shvatate stvari jer i jedna i druga se koriste a svejedno koja !

Očigledno, taster koji je on koristio kod vas u laboratoriji nije vezan prema rešenju koje sam ja uradio nego suprotno. Ako je hteo da ga proba onda je ili morao da veže onako kako sam ja uradio rešenje ( jer nije rekao kako ) ili je morao uslove da precizira u samom zadatku prethodno tj. da ih naglasi još kad vam je zadavao zadatak.
Gora verzija ovoga bi bila da su tasteri vezani u kombinaciji za koju sam ja radio program a da je on prepravljajući prvi deo koda koji sam napisao obrnuo uslove za tastere tj. da je levi taster za desno pomeranje i obrnuto jer tako mi izgleda.
Takođe nije ni rekao jasno da neka i koja LED mora da bude uključena na početku, jer jedna mora da bude da bi pomeranje moglo da se uradi. Ja sam ti to prilikom izrade rešenja ovog programa naglasio i rekao sam koja LED će se uključiti jer ništa nije naglašeno povodom toga u samom zadatku a trebalo je biti.

Naglasio sam ti takođe da ovaj program neće raditi u praksi i rekao zbog čega da ne bih ponavljao ponovo - vrati se pa pogledaj unazad. Vi mi takođe niste rekli da će ti zadaci da budu provereni praktično zbog čega bih ja ubacio rutine za testiranje tastera i iskomplikovao za vas rešenja jer ne znate ni elementarne stvari a tek rutina za pouzdano testiranje tastera bi bila iskreno rečeno špansko selo ( nemoj da se ljutiš ) za vas.


Kako sam ja razmišljao ?

Razmišljao sam na način da sam ja vaš asistent a moje razmišljenje je bilo sledeće :

Da sam vam ja zadao takve zadatke ja bih vam svakako naglasio da li će zadaci biti praktično provereni jer je to nešto što "mora" da se kaže zbog uslova koji se dešavaju u praksi ( u ovom slučaju tastera tj. varničenja njegovih kontakata ) pa se onda "MORA" napraviti rutina ili dodatni deo koda kojima se testiraju tasteri pa onda sve ima smisla ili sam zadatke zadao na način da proverim koliko teoretksi znate da koristite asemblerske naredbe i uopšte manipulišete sa njima kao i način pisanja koda u smislu pravila koja postoje kao i slaganje koda sa najmanjim mogućim brojem naredbi kao i poznavanje samog mikrokontrolera i njegovih registara.

Zašto se ponekad uključi još jedna LED ne znam ali znam da to nema u rešenju zadatka koji sam ti napisao jer opet kažem proverio sam u simulatoru.


Da bih eventualno mogao da ti dam odgovor na to morao bih da vidim kako je on vezao tastere, koliko ima ukrštanja vaza ili kablova na samoj pločici gde je mikrokontroler, njegovo napajanje i kako je obezbeđeno ali ovako zaista ne mogu ti više pomoću jer to ne mogu da vidim iz Niša.

Takođe nemam pojma šta je tvoj asistent mislio pod pojmom "gornja ivica" jer za taj pojam nikada nisam čuo ili si ti nešto loše razumeo.
Takođe org 5 direktiva koju je ubacio može ali i ne mora da bude !

Kada si pročitao ovo što sam ti napisao pretpostavljam da ti tek sada ništa nije jasno jer je ovo zaista previše logike za nekoga ko tek počinje , tačnije treba da počne pisati programe za mikrokontrolere.
Danas je ispalo tako da sam završio moj posao i malo sam slobodan pa sam tu na sajtu ali zamolio bih te da pitaš asistenta šta je to "gornja ivica" da i ja nešto naučim a usput da ti pomognem za to ako sam slobodan.

Znači nemoj da mi zameriš ali ove prepravke su nebuloze i to ti može reći svako ko iole zna nešto o mikrokontrolerima ne mora da bude nikakav srtučnjak. U odnose koji vladaju kod vas na fakultetu na relaciji : profesor - asistent - student neću da ulazim.

Sada možeš da vidiš koliko je za ovaj posao potrebno jasno i precizno reći šta je uslov zadatka i koje su početne stavke od kojih se mora krenuti, možeš onda tek misliti kako je za malo složenije zahteve da ne kažem složene !

Tebi za ovo javljanje mogu toliko da kažem !



Ovaj deo poruke je napisan dan posle, pa sada mogu da ti dam odgovor na pitanje zašto se ponekad pali još jedna LED, pošto juče nisam primetio šta si postovao a mislim na deo gde je stvarno postojala greška u prvoj verziji. Odgovor je: Zato što nisi pogledao ispravku zadatka koju sam uradio nego si otišao sa prvom verzijom koja je imala grešku. Znači vrati se i videćeš gde smo ga rešavali i par tema ispod je korigovano rešenje a u prvobitnom stoji upozorenje da zadatak ima grešku ( samo tebe više nije interesovalo pa se nisi vraćao da pogledaš ima li izmena ). Ali nemoj da mi pominješ "gornju ivicu" !


[Ovu poruku je menjao Slavenko dana 19.06.2008. u 22:20 GMT+1]
[ Slavenko @ 18.06.2008. 14:42 ] @
za djasha :

Ti imaš "tipično" najasno šta treba uraditi u prvom zadatku a evo i zašto :

Kada se postavlja zadatak onda moraju da se preciziraju uslovi da bi se znalo šta treba da se radi kao što sam rekao više puta. Tebi je zadato da uradiš program koji će simulirati rad RS flip flopa !
Koliko se ja sećam JK flip flop je nastao od RS flip flopa iz razloga što je problem RS flip-flopa bio taj što ima nedozvoljenu kombinaciju na ulazima RS a to je kombinacija 00. Sve je lepo kada su druge tri kombinacije ali šta će se desiti kada se na ulazima leča pojavi 00 ?
Odgovor na ovo pitanje ne može da ti da ni proizvođač samog RS flip-flopa jer stanje na izlazima može da ostane isto ili može da se promeni. U radu sa mikrokontrolerima ne može ili ne sme da postoji nedefinisano stanje nego jasno mora da bude rečeno i precizirano sve. Znači asistent je morao da ti kaže u zadatku šta treba da se isprogramira u asembleru za slučaj da je stanje koje se dovodi na ulaze poprimi kombinaciju 00. Da li da ostane ili da se menja što je jedina moguća kombinacija ?

Zbog toga je urađen JK flip-flop čija su sva stanja definisana. Praktično, ti bi mogao da iskoristiš rešenje koje sam već uradio tvom kolegi koji je imao isti zadatak samo realizaciju za JK flip-flop iz druge teme ovde na ovom sajtu i izmenjaš nazive labela da ne bude da je prepisano a da kažeš da je zadatak urađen tako da pri nedozvoljenom i nedefinisanom stanju na ulazima, izlaz ostaje u stanju u kom je bio jer taj program koji sam napisao tako radi.

Drugi zadatak koji si postavio je stvarno lagan i samo mora da se zna koja je funkcija logičkih kola a to je najosnovnija svar u digitalnoj elektronici pa bi mogao sam da pokušaš a evo ja ću ti pomoći koliko to moje vreme bude dozvoljavalo.

Pošto sam obećao tvom kolegi steficu uraditi zadatak to ću i ispuniti, nadam se do večeras a sada mora malo i ja da odmorim jer već 5-6 sati se bakćem sa vašim problemima !

PS: Evo sada sam video da je asisten i tvom kolegi za ovaj zadatak rekao da mu treba "gornja ivica" , još kad bi neko bio upućen da kaže šta je to pošto ja za taj termin nisam u životu čuo !!!

Pozdrav !

[Ovu poruku je menjao Slavenko dana 18.06.2008. u 16:18 GMT+1]
[ m.dimitrijevic @ 18.06.2008. 16:56 ] @
Cao, ljudi!!!

Je'l ima neko raspolozen da pomogne i meni oko programa u assembleru....Takodje se radi o programiranju mikrokontrolera, a program glasi ovako:

"Napraviti program za izračunavanje faktorijela brojeva od 0 do 5. Broj se unosi u binarnom obliku inkrementiranjem ili dekrementiranjem. Nije moguće pojavljivanje broja većeg od 5 ni manjeg od 0. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.
PORTB Prikaz binarnog broja
PORTA.0 Inkrementiranje broja
PORTA.1 dekrementiranje broja
PORTA.2 Prikaz zadatog broja
PORTA.4 Reset zadatog broja"


Mozete me kontaktirati na: [email protected] za neophodne informacije.

Hvala unapred!
[ Struja01 @ 18.06.2008. 17:18 ] @
Koliko ce ih jos doci samo, jadan Slavenko :))))
[ Stojan Trifunovic @ 18.06.2008. 18:46 ] @
Dimitrijeviću i ostali, nece Vam pomoći NIKO sve dok ne precizirate sledeće:

1. Koji izvor takta koristi mikrokontroler?

2. Koja je frekvencija tog takta?

3. Da li prekidači koriste pull up ili pull down otpornike?

4. Da li prekidači imaju hardverski rešen debouncing?

5. Ukoliko nemaju, mora li se softverski debouncing ubaciti u program?

6. Na kojim pinovima bi trebalo da se prikazuje rezultat?

7. Na kojim pinovima za prikaz rezultata je potrebno prikazati koje bitove (gde je MSB, gde ostali, a gde LSB)?

8. Na kojim pinovima bi trebalo da se prikazuje zadati broj od 0 do 5?

9. Na kojim pinovima za prikaz zadatog broja je potrebno prikazati koje bitove (gde je MSB, gde ostali, a gde LSB)?

10. Koji binarni broj se treba javiti na pinovima rezultata prilikom dovodjenja napona napajanja na mikrokontroler?

11. Koji binarni broj se treba javiti na pinovima zadatog broja (0 do 5) prilikom dovodjenja napona napajanja na mikrokontroler?

12. Koji binarni zadati broj se treba javiti na pinovima zadatog broja nakon pritiskanja tastera za reset?

13. Koji binarni broj rezultata se treba javiti na pinovima rezultata nakon pritiskanja tastera za reset?

14. Gde Vam je započet program?
[ Stojan Trifunovic @ 18.06.2008. 18:49 ] @
Trajko, da ste utrošili manje od 5 minuta na čitanje postova od vaseg prethodnog javljanja PRE nego što ste napali Slavenka da program ne valja, i sami bi shvatili koliko grešite. Izgleda da samo svoje vreme visoko cenite.

Ovo što je asistent dodao (org 5) već drugi put vidim u kragujevackim programima! Izgleda da je Fakultet u Kragujevcu pored reset (org 0x00) i interapt (org 0x04) vektora patentirao i neke nove (org 5). Bio bi lepo da obaveste Microchip o ovome.

U POTPUNO ISPRAVNOM PROGRAMU ZA TRAJKA koji je Slavenko malo iznad napisao nedostaje jos jedino "org 0x00" direktiva. Potrudite se, pa otkrijte sami gde bi trebalo da stoji. Oprez, nije svejedno!

A ukoliko Vam asistent prepravi "org 0x00" u "org 5" onda je Vi namerno prepravite u "org .365". Ukoliko Vas pak upita zbog čega bas .365, odgovorite da ste pogrešili i da treba da stoji .366 zbog prestupne godine. Vase obrazlozenje ce biti bolje od njegovog.
[ djasha @ 18.06.2008. 19:01 ] @
Hvala u svakom slucaju. Takav zadatak mi je dao profesor. Popricacu sa njim pa ce da se cujemo oko zadatka. Hvala jios jednom. POZDRAV
[ Slavenko @ 18.06.2008. 20:23 ] @
za stefic_kg :

Zadatak koji si poslao nakon konstultacija sa asistentom glasi :
Citat:

Nakon konsultacije sa asistentom, zadatak treba da izgleda ovako:

A4 A3 \ A2 A1 A0 B7 B6 B5 B4 B3 B2 B1 B0

Znaci, led diode se pale svake sekunde na levo i na desno od B5 istovremeno po jedna dok ne dodje do kraja (tj, do B0 i A2).
Onda se insto ovako ali u suprotnom smeru gase led diode. ( od B0 i A2 ka B5).
Svo vreme, B5 treperi.


Sada ponovo moj komentar : Pročitajte ono što je Stojan napisao jer sam i ja mislio da vam napišem nešto slično. Ni ovaj zadatak nije preciziran do kraja, na žalost, i morao sam uvesti pretpostavku. Nije definisano da li u startu programa treba da bude LED na RB5 uključena ili isključena niti kojom frekvencijom treba da treperi. Informacije tebi ja sam odabrao da bude uključena na samom startu da bi se kao efekat video malo bolje a za frekvenciju sam uzeo 1Hz koja je data kao uslov za ostale led diode i LED na RB5 se uključuje i isključuje zajedno sa svim ostalim LED u njigovom ritmu. Sam efekat trčećeg svetla neće biti prisutan jer je nakon konsulatacija asistent rekao da RB5 mora stalno da se uključuje i isključuje kao i frekvencija od 1Hz koja je prevelika da bi se postigao taj efekat. Naravno ja sam ispoštovao volju tvog asistenta u uslovima koje je on precizirao.

Kod koji obavlja posao dat u tvom zadatku a pod pretpostavkom koju sam uveo zbog nepreciznosti je :

Code:



    list p=16F84 
    #include <p16F84.inc> 

    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

    cblock 0x0C    ; Definisanje bloka konstanti koje se smeštaju od naznačene adrese

    BROJAC1        ; Brojač za prvu petlju
    BROJAC2        ; Brojač za drugu petlju
    BROJAC3        ; Brojač za treću petlju

    endc        ; Kraj bloka za definisanje konstanti

    bsf STATUS,RP0
    clrf TRISA    ; Svi pinovi PORTA izlazi
    clrf TRISB    ; Svi pinovi PORTB izlazi
    bcf STATUS,RP0

    clrf PORTA    ; Svi izlazi na pocetku
    clrf PORTB    ; su u stanju logicke nule da bi efekat pravilno krenuo

    bsf PORTB,5    ; Ukljucuje LED na RB5 na pocetku programa

Pocetak    call Pauza    ; Pravi trazenu pauzu od 1 sec i na dalje je zovemo samo pauza

    movlw b'01010000'
    movwf PORTB     ; Ukljucuje LED na RB6,RB4 a iskljucuje LED na RB5
    
    call Pauza     ; Pauza 

    movlw b'11111000'
    movwf PORTB     ; Ukljucuje LED na RB7,RB5 i RB3 pri tome ostaju ukljucene RB6 i RB4 a
    

    call Pauza

    movlw b'00000001'
    movwf PORTA       ; Ukljucuje LED na RA0
    movlw b'11011100'  
    movwf PORTB       ; Ukljucuje RB2 I pri tom prethodna stanja ostaju a iskljucuje RB5
    
    call Pauza

    movlw b'00000011'  
    movwf PORTA       ; Ukljucuje LED RA1 i pri tome ostaje prethodno stanje PORTA
    movlw b'11111110'  ; ukljucuje LED na RB1 i pamti prethodno stanje i ukljucuje LED na RB5
    movwf PORTB

    call Pauza

    movlw b'00000111'  
    movwf PORTA       ; Ukljucuje RA2 i pamti prethodna stanja PORTA
    movlw b'11011111'  ; Ukljucuje RB0 i pamti prethodna stanja a iskljucuje RB5
    movwf PORTB        ; Ukljucuje RB0 i pamti prethodna stanja a iskljucuje RB5
    call Pauza

    movlw b'00000011'
    movwf PORTA        ; Pocinje iskljucivanje bocnih LED unazad, tj. iskljucuje RA2
    movlw b'11111110'  
    movwf PORTB       ; Iskljucuje bocnu LED na RB0 a ukljucuje RB5
    
    call Pauza

    movlw b'00000001'
    movwf PORTA       ; Sada iskljucuje i LED na RA1
    movlw b'11011100'
    movwf PORTB       ; Iskljucuje RB5, RB1 pamti RB0 prethodno 
    
    call Pauza

    clrf PORTA       ; Iskljucuje sve na PORTA
    movlw b'11111000'  
    movwf PORTB       ; Iskljucuje RB2 pamti prethodno, ukljucuje RB5

    call Pauza

    movlw b'01010000'
    movwf PORTB       ; Iskljucuje RB5,RB3,RB7 pamti sve prethodno
    
    call Pauza

    movlw b'00100000   
    movwf PORTB       ; Sve je iskljuceno osim RB5

    goto Pocetak

Pauza
        movlw .5       ; Upisuje se 5 da bi se dobilo trajanje pauze od 1 sec. 
    movwf BROJAC3       ; tačnije 0.98 sec sa kristalom od 4 MHz
    
Petlja    decfsz BROJAC1,1
    goto Petlja
    decfsz BROJAC2,1
    goto Petlja
    decfsz BROJAC3,1
    goto Petlja
    return
    

    end        ; Kraj programa 



I ovaj program sam probao u simulatoru i radi onako kako je postavljeno uslovom zadatka koliko sam primetio. Steficu, molim te nemoj samo i ti da se vratiš i kažeš ne valja i treba da se ubaci "gornja ivica" jer ću da poludim , da dođem tamo u KG i da vas sve oivičim "gornjom, i Ivicom i Maricom" !
Direktivu org 0x00 nisam stavljao ni u jednom programu jer se nije tražilo niti se u vašim programima koriste interapti. Kad mi u program ubaci direktivu org 5 poludim jer nema blage veze sa izvršavanjem programa a pogotovo ono kada mi je promenjena labela Početak u start pa ispalo da je neko promenio i korigovao program ili kada su obrnuti uslovi testiranja tastera pa ispada da je levo - desno a desno - levo i još imate hrabrosti doći i reći da ne valjda i da ne radi. Treba da shvatiš da su to nebuloze koje nemaju veze ni sa čim a to ćeš shvatiti ako nekad počneš da učiš ove stvari. Meni je lično zasmetao pristup tvojih kolega koji su konstatovali da nešto ne valjda i postovali moje rešenje. Čisto da znaš da sam samo tvoj zadatak rešavao oko 3 sata možda i malo više da bih bio siguran da nije napravljena greška uključujući simulaciju i pisanje ovde. Da li bi iko od vas uradio ovo meni ili nekom od nas ovde koji pomažemo ? Iskreno, mislim da ne bi !

Trajko je prepisao prvobitno rešenje i nije se više vraćao na sajt da proveri da li ima neka korekcija pa me juče sludio i nisam ni primetio ostatak koda koji je imao grešku još od prvog rešenja, nego samo one "ispravke". Lepo san naglasio velikim crvenim slovima da tu postoji greška i nisam hteo da ga brišem kao primer šta bude kada se radi brzo i na brzaka a ispravku sam uradio posle toga i ona je simulirana u simulatoru i naravno radi. Sva sreća pa je Stojan bio dovoljno pribran i primetio da on nije pogledao korigovano rešenje.

Takođe mislim da je ovo jedini sajt na svijetu koji je rješavao vaše probleme na ovaj način a toga više neće biti barem što se mene tiče !

Toliko od mene i ja ovde stajem sa rešavanjem vaših zadataka. Tebi sam uradio zato što sam ti obećao a ja obećanje ispunjavam !

Od sada obavezno pitajte asistenta da vam precizira uslove one koje je naveo Stojan da bi vam neko pokušao pomoći ako to bude hteo s obzirom na nedefinisanost zadataka i na fenomen zvani "gornja ivica" !

Od sutra sam zauzet duže vreme ( par meseci ) i možda se pojavim samo da dam neki komentar. Zadatke ćete morati sami raditi jer moraš priznati baš ste preterali !

Puno te pozdravljam i želim ti sve najbolje. Po mom nekom mišljenju jedino od tebe će nešto da bude jer barem shvataš šta je problem pa uzmi malo učiti mikrokontrolere a i uporan si koliko sam primetio jer si se jedino ti suprostavio onome što smo pisali a vezano za fakultet.

Srećno !


PS: Evo me ponovo da ne otvaram novi poruku ! Možda bi ste ( ako nije glupo zato što smo rešavali zadatke mi a ne vi ) mogli uključiti vašeg asistenta ili profesora u ovu temu da daju svoje mišljenje o rešenjima koje sam ponudio a pogotovo bih voleo da saznam značenje termina "gornja ivica" !




[Ovu poruku je menjao Slavenko dana 19.06.2008. u 11:17 GMT+1]
[ Slavenko @ 19.06.2008. 10:18 ] @
Trajko, vrati se gore gde sam ti se obratio odmah posle tvog javljanja da zadatak ne radi i pročitaj ono što sam napisao debelim plavim slovima.
Kada to uradiš otiđi pa pogledaj kompletno sve što smo ti pisali a to znači da pogledaš i onaj deo odgovora koji ne napisan i posle korekcije greške pa to koriguj.

[Ovu poruku je menjao Slavenko dana 19.06.2008. u 11:31 GMT+1]
[ bojanps @ 19.06.2008. 10:22 ] @
Zdravo ljudi!!!!

potrebna mi je pomoc u resavanju ovog zadatka u asembleru

Napraviti program za kvadriranje brojeva od 1 do 15. broj se unosi u binarnom obliku inkrementiranjem ili dekrementiranjem. Nije moguće pojavljivanje broja većeg od 15 ni manjeg od 1. Zadatak realizovati pomoću mikrokontrolera PIC16F84 na asembleru.
PORTB Prikaz binarnog broja
PORTA.0 Inkrementiranje broja
PORTA.1 dekrementiranje broja
PORTA.2 Prikaz rezultata

Odgovore na postavljena pitanja dobicete u sto kracem roku.

Mozete da me kontaktirate na [email protected]

Hvala jos jednom!!!!!!
[ stefic_kg @ 19.06.2008. 10:45 ] @
Hvala za resenje, i izvini ako sam bio i ja dosadan.

U pravu si za dosta stvari koje si rekao, ali za ono da li bi pomogao da mogu i znam, naravno da bih, barem ja a za ostalu vecinu bas i ne verujem.

Jesmo preterali, ali nisam mislio da ce ovako biti. Neki ljudi stvarno nemaju obzira i samo postave zadatak i skoro pa da zahtevaju odmah odgovore (resenja).

Jos nesto sto je neko na slicnom forumu napisamo: "Ponekad je potrebno vise znanja da vi se postavilo pitanje, nego da bi se dao odgovor."
(mislim da imam malo znanja vezano za ovu temu, da bih hesto vise komentarisao u vezi zadataka, ali pomalo napredujem...)
Nisam znao da treba i te stvari da definisem u zadatku, posto nam je asistent dao zadatak bas onakav kakav sam prvi put napisao, bez nikakvih preciziranih napomena.

Mislim i da nije uredu da ti ili neko na forumu resava greske u zadatku, jer moraju i oni malo sami da se potrude, barem da rese te male greskice ako ih uopste ima.

Ako im nesto nije jasno valjda mogu da pitaju, ali ne da postave tipa: "ovo ne radi, nadjite mi gresku! "

I imam jedan predlog, da ovaj podforum moze da se stavi kao top, jer ce ovi vec reseni zadaci pomoci mnogim pocetnicima u ucenju.

Pozz , i hvala jos jednom Slavenko. Mnogo si definitivno svima pomogao.

[Ovu poruku je menjao stefic_kg dana 19.06.2008. u 19:26 GMT+1]

[Ovu poruku je menjao stefic_kg dana 19.06.2008. u 19:27 GMT+1]
[ Slavenko @ 19.06.2008. 11:11 ] @
Stefic_kg, dobro sam ja tebe pročitao, zato sam ti i obećao da ću ti uraditi, poprilično si zreo čovek i samo tako nastavi.
Naravno za slučaj da bude neki problem vrati se i reci šta se dešava pa ćemo to da korigujemo, toliko vremena imam kada pauziram sa svojim obavezama i rado ću ti to uraditi mada mislim da neće trebati nikakve naknadne korekcije.

Pozdrav !

[ stefic_kg @ 27.06.2008. 13:18 ] @
Slavenko, kad budes imao vremena pogledaj jedan zadatak, tj algoritam za taj zadatak da li sam dobro uradio.

ovde sam postavio zadatak i algoritam (kao sliku), da ne bi ovde ponovo sve to postavljao evo linka:
http://www.elitesecurity.org/t72345-4#1987604

Pozz

[ Alexsis @ 16.05.2010. 15:33 ] @
Moze li neko da uradi sledeci zadatak za p16f84?

Napisati program za osvežavanje dve pozicije na maketi.
Na displeju se prikazuju dve konstnte const1 i const2 koje se definišu u programu.
Frekvencija oscilatora mikrokontrolera je 3.2768 MHz.
Osvežavanje vršiti 200 puta u sekundi.
b) U drugom delu vežbe dodati da se diode na PORTA pale i gase na 0.5 s.

Mislim da zadatak nije tezak i da nekom ko zna treba 5min da ga uradi ali ja posto se nisam mnogo majao sa ovim asemblerom treba ce mi jedno 2 dana tako da ako je neko voljan... :)

[Ovu poruku je menjao Alexsis dana 16.05.2010. u 21:21 GMT+1]
[ Sepa011 @ 16.05.2010. 19:28 ] @
Paaaa, maji se vise sa knjigama a manje skitanjem.
[ Alexsis @ 16.05.2010. 20:16 ] @
Ma majem se ja sa knjigama i vise nego sto treba ali ne iz ove oblasti tako da me ove stvari ubijaju. Pa ako mozes pomozi plz... :)
[ Stojan Trifunovic @ 17.05.2010. 07:45 ] @
Osnovno pravilo (procitajte pravila, ukoliko vec niste) ovog foruma je
da se bar malo potrudite, probate uraditi zadatak, pa tek kada Vam
nesto zapne, zatrazite konkretnu pomoc. Internet je pun
dovoljno dobrih uputstava, ukoliko ovakve osnove vec niste savladali u
skoli.

Pretpostavimo da sam ja vodoinstalater. Naravno da je za mene opravka
slavine 5 minuta. Programiranje je jos gore od takve vrste zanata, jer
su u njega ubacene godine i godine ucenja i usavrsavanja, mnogo
komplikovanijeg od "zamene slavine".

Dobar vodoinstalater (automehanicar, zidar...) ceni se po tome koliko
brzo moze zameniti slavinu, medjutim, ukoliko programer brzo napise
program, onda to "lako", "pa to bi mogao svako uraditi" i "nije se ni
pomerio sa stolice". Ukoliko jeste 5 minuta, molim, potrudite se pa ga
sami uradite za to vreme. Pretpostavljam da cete otkriti da je zamena
slavine kudikamo laksa. A onda razmislite koliko bi Vam vodoinstalater
naplatio uslugu.

Buduci da se iz samog Vaseg pitanja odmah vidi koliko slabo poznajete
materiju (osvezavanje dve pozicije na maketi) preporucujem Vam da
procitate bar neku kvalitetniju knjigu iz oblasti programiranja u
asembleru. Imate ih na internetu dovoljno, cak i na srpskom jeziku. Na
skripte (i na to da ce Vam ovde neko uraditi kompletan zadatak)
zaboravite.
[ Sepa011 @ 17.05.2010. 10:17 ] @
Stojane, nisi trebao na skolarca da toliko habas tastaturu. Cuvaj je za pisanje kvalitetnog softvera.