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