oferta

sábado, 27 de marzo de 2010

Led parpadeante


DIODO LED PARPADEANTE EN EL PUERTO B (PIN 6= RBO)

 

El led se prendera y apagara  y no lo podremos notar porque es tan rapido la ejecucion del programa que el pic ejecuta un millon de instrucciones en 1 segundo, entonces necesitamos que el PIC entre el apagado y encendido haga una pausa o retardo para poder visualizar el encendido y apagado del led, para eso haremos otro pequeño programita que retarde el encendido y apagado del led. Lo llamaremos RETARDO para lo cual usaremos 2 registros; y los llamaremos reg1 y reg2 respectivamente (puede ser cualquier nombre).Con esta rutina de RETARDO,  el pic16f84 pierde tiempo haciendo un conteo descendente con 2 registros, cada registro de 8 bits es desde  0 hasta 255 =11111111=0xff, entonces con 2 registros aumentamos el tiempo de retardo :
*************************************************************************

LIST P=16F84A              ; indicamos el PIC que utlizaremos;
;DECLARACION REGISTROS A USAR
STATUS EQU 0x03        ; Registros de la memoria RAM
PORTB   EQU 0x06        ;con  su direccion hexadecimal
TRISB     EQU 0x86
reg1         EQU 0X0C      ;registro usado para el retardo
reg2         EQU 0X0D      ;registro usado para el retardo

org         0x00                  ;inicio del programa


; CONFIGURAMOS PUERTO B COMO SALIDA
BSF STATUS,5                ;vamos al banco1
CLRF TRISB                    ;puerto b es salida(colocamos '00000000')
BCF STATUS,5               ;regresamos banco0

;PROGRAMA PRINCIPAL
inicio  BSF PORTB,0         ;enviamos un "1"(5 voltios) al pin6, prende el led
          call RETARDO         ;se dirige a subrutina RETARDO
          BCF PORTB,0         ;enviamos un "0" (0 voltios) al pin6, apaga el led
         call RETARDO          ;se dirige a subrutina RETARDO
         GOTO inicio

RETARDO
MOVLW 0x90                  ;cargamos (w) con el hexadecimal 90
MOVWF reg1                   ;mover lo que hay en W al registro1
MOVLW 0x90                  ;cargamos (w) con hexadecimal 90
MOVWF reg2                   ;mover lo que hay en W al registro2
uno DECFSZ reg1,1          ;Decrementa registro1 y el resultado guardalo en el mismo
      GOTO uno
dos DECFSZ reg2,1          ;decrementa registro2 y el resultado guardalo en el mismo
      GOTO dos
      RETURN                    ;retorna de donde lo llamaron
     END
********************************************************************

Si quisieramos que el parpadeo sea mas lento tenemos que hacer un conteo descendente de mayor cantidad en este caso tendriamosque cambiar 0x90 por 0xFF en reg1 y reg2.

No hay comentarios:

Publicar un comentario