IMC!


Contenuti


Foto

 







Curiosando...
Novita  Novità Link  Link Blog  Blog English  Español 
02 - Routine di ritardo

 | 

Questo articolo illustra un circuito completo, ma solo una routine utile per implementare rapidamente dei ritardi durate l'esecuzione del programma. L'idea di base � quella di tenere occupato il PIC con una serie di operazioni, come NOP o GOTO, in numero sufficiente a ottenere il ritardo voluto. La variabile K1 permette di variare il ritardo tra 10ms e 256ms a passi di 10ms. Tuttavia, modificando K2 e K3 opportunamente, � possibile ottenere altri intervalli di ritardo.
Esistono sicuramente soluzioni pi� efficienti e eleganti per creare ritardi, come l'utilizzo dei timer interni al PIC, ma questa routine � particolarmente semplice e rapida da utilizzare in fase di programmazione. Nei codici successivi questo programma sar� sempre utilizzato sottoforma di funzione, alla quale viene passato K1 come valore nel registro W.



; -------------------
; RITARDO
; -------------------
; --------------------------------------------------------------
; Questa funzione implementa una semplice routine di ritardo
; che varia da 10ms fino a 2560ms. Il valore � impostato tramite
; K1 con passi di 10ms.
; --------------------------------------------------------------

; ----------------------------
; Direttive per l'assemblatore
; ----------------------------
  LIST p=16F877
  RADIX dec
  INCLUDE "p16F877.inc"
  __CONFIG _HS_OSC & _PWRTE_ON & _WDT_OFF & _CP_OFF & _LVP_OFF & _BODEN_OFF
  ORG 0x0000

; ---------
; Variabili
; ---------
K1 EQU 1
X1 EQU 0x20
K2 EQU 116
X2 EQU 0x21
K3 EQU 61
X3 EQU 0x22

; -------------------
;        Main
; -------------------
    MOVLW K1
    MOVWF X1
LOOP1:
    MOVLW K2
    MOVWF X2
LOOP2:
    MOVLW K3
    MOVWF X3
LOOP3:
    GOTO SALTO1
SALTO1:
    GOTO SALTO2
SALTO2:

    DECFSZ X3,F
    GOTO LOOP3
    DECFSZ X2,F
    GOTO LOOP2
    DECFSZ X1,F
    GOTO LOOP1

STOP: GOTO STOP
  END

 


 | 






Fatal error: Call to undefined function sqlite_open() in /membri/giacobbe85/include/commenti.inc.php on line 324