Software projekti

Autor: Tomislav Ratić

E-mail: tomara@uns.ns.ac.yu

 

SOFTVERSKA KAŠNJENJA

Softverska kašnjenja su jedan od najčešće upotrebljavanih mehanizama u asemblerskom programiranju. Jedan od najjednostavnijih načina da sotverski usporimo mikrokontroler je naredba NOP. Ova naredba traje jedan ciklus tj. 1 ms ako je takt oscilatora mikrokontrolera 12MHz (jer jedan ciklus čini 12 taktova oscilatora). Ako je potrebno ostvariti kašnjenje od nekoliko mikrosekundi, potrebno je samo sukcesivno poslagati odgovarajući broj NOP naredbi.Sledeće naredbe generišu pravougaoni signal frekvencije 250kHz, faktora ispune 25% na pinu 0 porta P1:

Lab1: clr P1.0 ;Traje 1 ciklus
          setb P1.0 ;Traje 1 ciklus
          sjmp Lab1 ;Traje 2 ciklusa

Ako je potrebno da faktor ispune bude 50% (a frequencija nije bitna), korišćenjem NOP naredbi, dobija se signal od 166.7 kHz, faktora ispune 50%:

Lab1: clr P1.0 ;Traje 1 ciklus
          nop ;Traje 1 ciklus
          nop ;Traje 1 ciklus
          setb P1.0 ;Traje 1 ciklus
          sjmp Lab1 ;Traje 2 ciklusa

Kada je potrebno ostvariti veća kašnjenja, upotreba NOP naredbi postaje nepraktična i često nemoguća.
Recimo da je potrebno ostvariti pravougaoni signal od 100 Hz, faktora ispune 50%, na portu P1.0. Sada je potrebno kasnjenje 2 puta po 5 ms. Prevedeno u mirosekunde, to iznosi 2 puta po 5000 ms. Očigledno je da je ovde upotreba NOP naredbi nemoguća. Zbog toga se koristi sledeći način.
Sledeći potprogram traje oko 5000 ms:

DELAY: mov r6,#50d ;Traje 1 ciklus
LOOP2: mov r7,#50d ;Traje 1 ciklus
LOOP1: djnz r7,LOOP1 ;Traje 2 ciklusa
          djnz r6,LOOP2 ;Traje 2 ciklusa
          ret

Naime, vreme potrebno za izvršenje potprograma je 1 + (1 + 2*r7 + 2) * r6 plus vreme potrebno za poziv i izlazak iz potprograma. Ako je r6 > 10 i r7 > 10, trajanje je približno 2*r6*r7 (u mikrosekundama).
Koristeci potprogram ‘DELAY’, željeni signal se ostvaruje sledećim programom:

Lab1: clr P1.0 ;Traje 1 ciklus
          call DELAY
          setb P1.0 ;Traje 1 ciklus
          call DELAY
          sjmp Lab1 ;Traje 2 ciklusa

Ukupno trajanje naredbi clr, setb i sjmp od 4 us, kao i vreme potrebno za izvršenje potprograma, može se zanemariti u odnosu na 5000 ms.
Ako je potrebno kašnjenje reda jedne sekunde, postupak je identičan, samo je u potprogram ‘DELAY’ potrebno dodati još jednu ili više LOOP petlji.

DELAY: mov r5,#50d
LOOP3: mov r6,#100d
LOOP2: mov r7,#100d
LOOP1: djnz r7,LOOP1
          djnz r6,LOOP2
          djnz r5,LOOP3
          ret

Ukupno trajanje potprograma sada je približno 2*50*100*100 ms, tj. 1 sekunda.

Sve naredbe korišćene u primerima se odnose na asembler firme ‘2500AD SOFTWARE, INC’


Pročitajte više o ovoj temi
Mali saveti za početnike iz asemblera za Intel 8051
Smart LCD, šta i kako? 
LOOK-UP tabele
Softverska kašnjenja
Serijska komunikacija
Mapiranje

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji