TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado 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
-
Si se puede usar.
Es del compilador esa instruccion, luego lo reemplaza por lo que corresponde segun el micro que sea.
-
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
-
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.
-
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.