Citazione:
Originalmente inviato da Cessna 172SP Dite che funziona così........o come al solito non ho capito niente??? |
Facile che funzioni, ma se devi imparare impara bene!
Per i ritardi non si usa quasi mai (a meno di ritardi veramente molto piccoli) mettere in loop il processore e fargli 'perdere tempo', ma si usano i timer, che danno anche tanti altri vantaggi.
Se non ti serve (come primo esercizio) precisione setti il prescaler del Timer0 a 4 e avrai un overflow del timer ogni 1,024 millisecondi.
Aspetti che il bit T0IF vada a 1, lo azzeri e quando torna a 1 sai che è passato 1,024 ms e il tuo ciclo diventa più o meno così:
Loop:
- testa T0IF fino a quando lo trova 1
- azzera T0IF
- decrementa il contatore di ritardo e controlla se è 0
se 0: ripristina il valore del contatore
accende ( o spegne) il led
salta a Loop
se >0: salta a loop
questo ti da ritardi di 256 ms al massimo, sufficienti per vedere il lampeggio del led. Per aumentare il ritardo puoi usare due contatori per il ritardo.
Per accendere o spegnere il led puoi semplicemente fare questo:
movlw 1 (nel tuo caso 1 perchè LED è sul bit 0)
xorwf PORTB,f
Buon divertimento!
Michele