Buenos días!! Me ha surgido una nueva duda. Si quiero seleccionar un determinado banco como puedo hacerlo en c? Es decir, si quiero hacer: BANKSEL PR4 cual seria el equivalente en c? Gracias de nuevo
La memoria es continua, estuve leyendo y dice que solo una instruccion en ASM hace uso de los 12 bits para el direccionamiento que es MOVFF, mientras que las demas hacen uso de 8 bits + 4 dado por el registro BSR.
El BSR se carga con la instruccion en ASM que es MOVLB. El BSR separa la RAM en 16 secciones/bancos de 256 bytes cada uno. Segun la direccion que tengan estos el compilador va a cargar esos 4 bits al BSR.
Pero no se por que te preocuparias de cambiar de banco en C, cuando este deberia hacerlo por si mismo, es decir si esta ocupando un lugar en la memoria que es 0x2A0 , C deberia cargar o cargaria ese 2 en el BSR, esto es para un acceso directo.
Su ASM deberia ser un
MOVLB 0x2
aca instruccion con la direccion A0
Y si fuera indirecto que es lo mas seguro que haga es cargar los 12 bits de la direccion a un FSRx y leer/escribir su INDFx. y se mantiene en el banco 15
LFSR 0,0x2A0
Aca instruccion de lectura/escritura/lo que sea de INDF0
Y probar en C no costaria nada, pero como digo no tiene sentido.
Los SFR ( Registros de funciones especiales) estan ubicados en el banco 15 inclusive el BSR. Por eso existe una instruccion en ASM para cargar el BSR (al menos por eso la nombre ).
Probaste BSR = 0x2;
o algo asi ?.
Muchas gracias a los tres. ya tengo los tres puntos que mencionaba en c la forma de KILLERJC para poner instrucciones en ensamblador funciona. La de elgarbe no compila, no reconoce las expresiones. Gracias por las explicaciones
Por que creo que la opcion que te dio el es para CCS