TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Ricardo1950 en 26 de Julio de 2018, 15:09:28
-
hla he generado un código lo he compilado con MPLAB ide 8,00 y lo he simulado también , con el mismo programa . lo he pasado al chip con ic prog , segun parece todo bien , pero no funciona , he revisado el harward, es muy basico . Aparentemente está bien. agradecería le echasen un vistazo al código para ver si hay errores. gracias.
;programa abrir, cerrar porton, encender y apagar farola
STATUS EQU 03H
TRISA EQU 05H
TRISB EQU 06H
PORTA EQU 05H
PORTB EQU 06H
CUENTA1 EQU 0CH
CUENTA2 EQU 0DH
F EQU 1
W EQU 0
ORG 00H
BSF STATUS,5 ; SELEC.BCO 1
BSF PORTA,0 ;CONFIG. A,0 COMO ENTRADA
BSF PORTA,1 ;CONFIG. A,1 COMO ENTRADA
BCF PORTB,0 ;CONFIG. B,0 COMO SALIDA
BCF PORTB,1 ;CONFIG. B,1 COMO SALIDA
BCF STATUS,5 ;SELEC. BCO , 0
CLRF CUENTA1
CLRF CUENTA2
FAROLA BTFSS PORTB,0 ; COMP. FOROLA ENC. O APAG.
GOTO ENCENDIDO
GOTO APAGADO
ENCENDIDO BTFCS PORTA,0 ; COMP. SI HAY PULSO ENC. NO HAY, VA A PORTON
GOTO PORTON
BSF PORTB,0 ; ENCIENDE FAROLA
CALL DELAYF
PORTON BTFSS PORTB,1 ;COMP .PORTON ABIERTO, O CERRADO
GOTO ABRIR
GOTO CERRAR
ABRIR BTFSS PORTA,1 ;COMP. SI HAY PULSO APERTURA. NO HAY VA A FAROLA
GOTO FAROLA
BSF PORTB,1 ; ABRE PORTON
CALL DELAYP
GOTO FAROLA
DELAYF MOVLW 0FFH ;CARGA W CON 255 DECIMAL
MOVWF CUENTA1 ; SE CARGA EN CUENTA1
ACA1 DECFSZ CUENTA1,F ;DECREMENTA C.1 SI ES CERO SALTA INST.
GOTO ACA1
ESPERA BTFSS PORTA,0 ; ESPERA QUE SUELTE EL INTERRUPTOR
GOTO ESPERA
RETURN
DELAYP MOVLW 0FFH ;CARGA W CON 255 DECIMAL
MOVLWF CUENTA2 ;SE CARGA EN CUENTA2
ACA2 DECFSZ CUENTA2,F ; DECREMENTA CUENTA2, SI ES CERO SALTA
GOTO ACA2
ESPERA2 BTFSS PORTA,1 ; ESPERA QUE SE SUELTE INTERRUPTOR
GOTO ESPERA 2
RETURN
END
-
FAROLA BTFSS PORTB,0 ; COMP. FOROLA ENC. O APAG.
GOTO ENCENDIDO
GOTO APAGADO
PORTON BTFSS PORTB,1 ;COMP .PORTON ABIERTO, O CERRADO
GOTO ABRIR
GOTO CERRAR
No hay ningun "APAGADO" ni "CERRAR" o tal ves lo borraste sin querer. Lo raro es que compile así de esa forma
Tambien le faltan los FUSES a ese programa... te recomiendo que pases al MPLAB X, con forma grafica te genera los FUSES de forma sencilla, para cualquier micro.
PD:
Podes incluir el p16f84a.inc que tiene definido los registros, F y W, ademas tiene definidos los FUSES ( o bits de confirguracion )
Solo necesitarias declarar CUENTA1 y CUENTA2
-
Que tal Ricardo, como dice Killer. Porque no cambias al MPLAB X esta mejor, ya que tiene muchas ventanas de ayuda. El incluir el .INC te facilitara mas la programacion ya que no tienes que andar asignado los valores a los registros del micro. Solo los llamas. Tambien te sugiero cambies de micro, este es muy viejito y caro, al mismo precio puedes encontrar muchos con mejores prestaciones.
Saludos