Ho guardato il sorgente riportato sul tuo schema a blocchi; in effetti non è un esempio di chiarezza ed efficacia
se vuoi imparare a programmare i microcontrollori non usarlo come esempio!!!
Provo a darti qualche risposta.
1) La variabile shift in effetti non serve (e non è lunica cosa inutile
). Le variabili ed i registri sono tutti a otto bit (0-255)
2) movf n,f in effetti serve solo a settare il bit Z se il contenuto della variabile è 0; il flag rimane nello stato in cui si trova fino a quando viene eseguita un istruzione che lo modifica; non tutte le istruzioni modificano i flag dello status register (es. la movwf non ne modifica alcuno). Il numero di cicli sembra essere 34 x 10 (dmcount).
3) La routine di Delay ritarda di 200 cicli: 25 x 4 (prescaler) ripetuta due volte (la variabile count viene inizializzata a 1 e poi decrementata una sola volta). A 3.8 Mhz 200 cicli corrispondono a 210 uS, più i ritardi dovuti alle istruzioni di test (esiste un bit di overflow del timer 0 T0IF molto più semplice da usare)
4) In effetti la variabile count non serve: è sufficiente impostare il timer a 205 per avere 50 cicli di timer che con il prescaler a 4 fa sempre 200!
Da notare anche che il 16F84 è un micro ormai obsoleto; in alternativa il 16F628 ha anche un timer a 16 bit che in questi casi è molto utile!!
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. |