Discussione: Programmare pic12c508
Visualizza messaggio singolo
Vecchio 16 gennaio 09, 19:23   #8 (permalink)  Top
MSchiepp
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da Cessna 172SP Visualizza messaggio
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
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando