May 062013
 

Ovaj program pali svih 8 LED sekvencijalno jednu po jednu praveći tzv. trčeći “light show”. Upotrebom konstante ‘pauza’ lako i brzo možemo da menjamo vreme izmedju dve promene, tj. da odredimo brzinu “trčanja” LE dioda.

Tutor12.bas

Vidimo da smo prvo isključili sve LED naredbom PORTB=0, a tek zatim postavili ceo B port kao izlazni. Na prvi pogled ovo bi moglo da deluje nelogično, ali obzirom da je po uključenju stanje B porta unapred nepoznato tj. proizvoljno, a sam port postavljen kao ulazni, ako bismo prvo postavili B port kao izlazni desilo bi se da bi neka od LED zasvetlela. Doduše, u našem slučaju to bi trajalo svega nekoliko µs što mi ne bismo primetili i nije toliko ni bitno, ali u slučaju da umesto LE diodama upravljamo nekim uredjajima kod kojih je to kratkotrajno uključenje nepoželjno, došlo bi do problema. Zato je dobra praksa da se pre prebacivanja porta u izlazni režim postavi početno stanje porta.

U tehničkim podacima u tabeli “TABLE 3-8” možete da vidite stanja svih registara nakon reseta; predzadnja kolona pokazuje stanja nakon POR (Power-On Reset, reset nakon uključenja napajanja) i BOR (Brown-Out Reset, reset nakon pada napona ispod dozvoljene granice), a zadnja pokazuje stanja nakon svih ostalih reseta. Na osnovu toga možete da vidite da li po uključenju imate potrebe da postavite odredjeno početno stanje za neki registar.

Za razliku od PBP, PDS ne poseduje DO … LOOP petlju.

Od petlji postoje:
For … Next
While … Wend
i
Repeat … Until

Vidimo i da smo izbacili GOTO naredbu i ubacili dve nove, While i Wend, koje čine celinu, a puna sintaksa glasi:

While uslov 

  naredba...  

Wend

Ova naredba se koristi za ponavljanje bloka naredbi koje se nalaze izmedju While i Wend

Za prevremeni izlaz iz petlje može da se upotrebi naredba Break.

Takodje vidimo i da smo sve naredbe izmedju While i Wend pomerili udesno što nije obavezno, ali je dobra programerska praksa kako bi se jasno video blok naredbi tj. jedna petlja. Ta praksa naročito može da bude korisna ako imate ugnježdene petlje, tj. petlju unutar petlje pa lako možete da vidite da li ste sve petlje “zatvorili” jer ako niste, kompajler će da javi grešku, a ako ste sve pisali ravno, imaćete problem da brzo utvrdite gde ste pogrešili.

Primeri upotrebe:

    i = 1  
    While i > 10
      SEROUT 0,N2400,[“No:”,#i,13,10] 
      i = i + 1  
    Wend 
 
 
    i = 1  
    While i <= 10  
      SEROUT 0,N2400,[“No:”,#i,13,10] 
      i = i + 1  
   Wend 
 
 
    i = 1  
    While  i <= 10
      SEROUT 0,N2400,[“No:”,#i,13,10] 
      i = i + 1  
      IF PORTB.0 = 0 THEN Break
    Wend 

 Veličina iskompajliranog programa: 119 Word-a