Hola a todos, hace ya unos cuantos años que no programo en PIC, pero por circustancias de la vida me he vuelto a meter en este mundillo, la verdad es que tengo las cosas un poco olvidadas. Estoy intentando hacer un programa yo creo que sencillo con un PIC 16F88 usando el oscilador interno. He realizado este PIC por el tema de que no tengo que añadirle un cristal de cuarzo ya que el temporizador no me hace falta que sea muy preciso, y porque es con el que he trabajado siempre
El programa que necesito hacer es el siguiente:
Necesito que active un salida del PORTB,0 , cuando una entrada de PORTA,0 se ponga a 1, mientras esa entrada esté activada que la salida se quede activada. Este paso es muy sencillo y lo tengo perfectamente realizado.
Cuando se desactive la entrada de PORTA, la salida de PORTB,0 se tiene que desactivar, y se tiene que activar otra salidar PORTB,1 durante 10-12 segundos (mas o menos) cuando pase ese tiempo se tienen que desactivar todas las salidas de PORTB. Si antes de que acabe el tiempo se activa por algun motivo la entrada de PORTA,0 el programa tendria que volver a empezar y el temporizador tambien.
Esto es lo que tengo yo realizado por si alguien me puede echar una mano.
LIST P=16F88
#INCLUDE "P16F88.INC"
__CONFIG _CONFIG1,(2f10) ;palabra de configuracion
#DEFINE atras PORTA,0 ; Interuptor Marcha atras
#DEFINE rear PORTB,0 ; activar camara trasera
#DEFINE front PORTB,1 ; activar camara delantera
;---------------- DECLARACION DE VARIABLES ------------
; Variables locales
CBLOCK 0x20
ENDC
;----------- CONFIGUARION INICIAL ------------------------
ORG 0 ; direccion de comienzo del programa, si no le pones nada comienza en la cero
goto programa
;------------------------------------CONFIGURACION INICIAL--- ------------------------------------------------------
programa
bsf STATUS,RP0 ;ir a bank1 para configurar
clrf ANSEL ;desactivar entradas analogicas
movlw b'11111111' ;cargamos todo a 1 para que el PORTA sea entrada
movwf TRISA ;PORTA entrada
clrf TRISB ;PORTB salida
bsf OSCCON,IRCF2;oscilador interno, pone a 1 el bit 15 para que sea salida
bsf OSCCON,IRCF1;Fosc = 4MHz, pone a 1 el bit 16 para que sea salida
movlw b'01000' ;Ponemos este numero para configurar el TMR0 a 1:2
movwf OPTION_REG ;Movemos el numero de W al OPTION REG
bcf STATUS,RP0 ;volver a bank0
goto inicio
;_________________PROGRAMA PRINCIPAL_________________________
inicio
clrf PORTB ;Borramos PORTB para que no quede ninguna salida activada y se ponga en marcha al iniciar
clrf TMR0 ;Borramos el TMR0
bucle
movlw b'00000000'
movwf PORTB
btfss atras ;quedarse aqui mientras no se haya metido la marcha atras
goto bucle
goto trasera
trasera
bsf rear ;activamos la cámara trasera
btfsc atras ;quedarse aqui la marcha atras este metida
goto trasera
goto delantera