Discussione: Programmare pic12c508
Visualizza messaggio singolo
Vecchio 16 gennaio 09, 20:05   #10 (permalink)  Top
Cessna 172SP
User
 
L'avatar di Cessna 172SP
 
Data registr.: 03-11-2008
Residenza: Sestri Levante-Genova
Messaggi: 74
Citazione:
Originalmente inviato da MSchiepp Visualizza messaggio
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
Grazie..ora trasformo la tua spiegazione in Assembler..o almeno ci provo..
__________________
Federico Violato
Cessna 172SP non è collegato   Rispondi citando