TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: raphery en 29 de Noviembre de 2018, 21:26:48

Título: semaforo de 16f887 a 16f877a
Publicado por: raphery en 29 de Noviembre de 2018, 21:26:48
Tengo una duda sobre la instrucción BANKSEL y ANSEL, ya que me marca un error, no se si esa instrucción se pueda ocupar en el pic 16f877a ya que este programa estaba en 16f887.


INICIO
        CLRF CONTADOR1
        CLRF CONTADOR2
        CLRF CONTADOR3

        BANKSEL PORTA        ;
        CLRF     PORTA        ;


        BANKSEL ANSEL        ;
        CLRF    ANSEL        ; DIGITAL I/O


        BANKSEL TRISA        ;
        MOVLW    b'11111111'    ;  PORT A ENTRAD
        MOVWF    TRISA        ;

        BANKSEL PORTC
        CLRF    PORTC         ; Puerta C como salida


        BANKSEL TRISC        ;
        MOVLW    b'00000000'    ;
        MOVWF    TRISC        ;  CLRF    TRISC


        BANKSEL PORTD
        CLRF    PORTD        ; Puerta D como salida


        BANKSEL TRISD        ;  Configuro el Puerto D como salida
        MOVLW    b'00000000'    ;
        MOVWF    TRISD        ;

 

 

;PARTE PRINCIPAL DEL PROGRAMA ------------------------
ONOFF
    BANKSEL PORTA
    BTFSC PORTA,5    ;PREGUNTO POR BOTON PREGUNTO SI RA5 ==0  ES CERO
    GOTO ONOFF        ; FALSO NO ES CERO RA3==1

SWITCH
    BANKSEL PORTA
    BTFSS PORTA,3 ;  RA3==1  PREGUNTO POR ON/OFF
    GOTO MODO_NOCHE  ; FALSO   RA3==0
    GOTO MODO_DIA    ;  VERDAD  RA3==1

 
Título: Re:semaforo de 16f887 a 16f877a
Publicado por: KILLERJC en 29 de Noviembre de 2018, 22:57:19
Si se puede usar.

Es del compilador esa instruccion, luego lo reemplaza por lo que corresponde segun el micro que sea.
Título: Re:semaforo de 16f887 a 16f877a
Publicado por: raphery en 01 de Diciembre de 2018, 19:31:00
Me aparece este error:
Error[113]   C:\USERS\RAPHER\DOWNLOADS\PROYECTO\SEMAFORO.ASM 27 : Symbol not previously defined (ANSEL)

me fijé en los registros que tiene el pic16f877 y no está el ANSEL
Título: Re:semaforo de 16f887 a 16f877a
Publicado por: Neutrino en 02 de Diciembre de 2018, 02:49:55
Hola raphery, la instrucción BANKSEL sí la puedes usar, como ya te comentó KILLERJC es una instrucción del compilador. Pero, ANSEL no es una instrucción como tal, es un registro que se suele usar en algunos pics para seleccionar los pines que van a ser análogos o digitales pero no en el pic que estás usando. Si vas a la página 130 de tu datasheet vas a ver que, en lugar de usar el registro ANSEL tu pic usa el registro ADCON1 para tal proposito.

Saludos.
Título: Re:semaforo de 16f887 a 16f877a
Publicado por: KILLERJC en 02 de Diciembre de 2018, 12:42:27
Ahora que vemos el error se puede determinar correctamente cual es el problema.

Neutrino ya te dio la solucion...

Pero para tambien los demas registros ( especialmente los de los modulos como el Timer/WDT/ADC/etc ) deberias fijarte si corresponden los bits que asignabas antes... Debido a que como ves puede que en distintos PICs esto varie.. En realidad en este caso agarraste el momento temporal que Microchip pasa de usar los registros del ADC para definir los pines analogicos a unos registros ya identificados como ANSEL, que es lo que mantiene ahora al menos por lo que vi de los ultimos PICs.