Sari la conținut
ELFORUM - Forumul electronistilor

Help asm - program pentru PIC.


Vizitator nelukyns

Postări Recomandate

Vizitator nelukyns

Dar Intreruperile is prea complicate pentru mine...am citit despre ele dar oricum nu inteleg cum executa ele in paralel...am mai bagat azi in program acele 5 sec de pauza in care cuvintul stop apapare si dispare...dar in aceste 5 sec totul restul e inactiv...eu vreau sa inteleg asta - acele 5 sec sa isi faca treaba in liniste...dar totodata al doiela sensor sa fie activ...si alte chestii asemanatoare...

Link spre comentariu
  • Răspunsuri 16
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • puiu

    6

  • francezu

    2

  • srdjan

    1

Top autori în acest subiect

Atunci altfel :

faci o bucla compusa din pauze suficient de scurte incat sa poti sesiza evolutia senzorului; in acea bucla interoghezi si intrarea la care este conectat senzorul. Repeti intreaga bucla de un numar suficient de ori incat sa ai o durata de pauza dorita. De exemplu

 

        cblock	d1	d2	endc;;   movlw  d'100'   movwf  counter         ;preseteaza contorul care da numarul de executii ale buclei (pauza totala va fi : counter X d50= 100 X 50ms = 5000 ms )Loop   call      d50          ;asteapta 50 ms   btfsc    PORTX,x       ;daca senzorul 2 este activat  ( inlocuiesti PORTX,x cu ceea ce folosesti in cazul tau)   call      S_activ      ;atunci executa rutina corespunzatoare senzorului activat                               ;altfel, continua bucla   decfsz  counter,f      ;decrementeaza contorul                          ; daca counter >0   goto     Loop          ;repeta bucla                          ;altfel, iesire din bucla- au trecut cele 5 secunde;continuare program;;S_activ   ;aici executi codul in cazul in care senzorul 2 a fost activat   return;;d50                   ;rutina de intarziere- 50 ms - clock=4Mhz			;49993 cycles	movlw	0x0E	movwf	d1	movlw	0x28	movwf	d2Delay_0	decfsz	d1, f	goto	$+2	decfsz	d2, f	goto	Delay_0			;3 cycles	goto	$+1	nop			;4 cycles (including call)	return;end
In realizate , pentru ca bucla mai contine si alte instructiuni decat apelul catre rutina de intarziere( 50ms ), pauza totala va fi putin mai mare de 5s, cam cu 300-500 us.

Intradevar , cum spuneau si colegii, intreruperile dau rezultate mai bune, dar pentru ceva nepretentios, poate fi folosita cu succes si metoda descrisa mai sus.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări