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]