Autor Tema: semaforo de 16f887 a 16f877a  (Leído 3712 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado raphery

  • PIC10
  • *
  • Mensajes: 2
semaforo de 16f887 a 16f877a
« 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

 

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:semaforo de 16f887 a 16f877a
« Respuesta #1 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.

Desconectado raphery

  • PIC10
  • *
  • Mensajes: 2
Re:semaforo de 16f887 a 16f877a
« Respuesta #2 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

Desconectado Neutrino

  • PIC10
  • *
  • Mensajes: 29
Re:semaforo de 16f887 a 16f877a
« Respuesta #3 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:semaforo de 16f887 a 16f877a
« Respuesta #4 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.


 

anything