TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: gpgerman en 10 de Febrero de 2005, 10:12:00
-
Hola a todos.
La duda que tengo es que al abrir un fichero de cabecera, p.ej. P16F84.inc, se observa como se asigna cada etiqueta a la direccion de memoria correspondiente al registro deseado, hasta aqui todo esta claro.
Mi duda es que cuando se asignan etiquetas a los bits que componen cada registro, no se especifica a que registro hacen referencia, por esto no entiendo como puede diferenciar el micro a que registro corresponde cada bit.
¿Que diferencia habria para el micro entre RP0 y T0IE si los definimos como hace el fabricante en el siguiente fragmento?
;----- STATUS Bits -------------------------------
IRP EQU H"0007"
RP1 EQU H"0006"
RP0 EQU H"0005"
............
C EQU H"0000"
;----- INTCON Bits -------------------------------
GIE EQU H"0007"
EEIE EQU H"0006"
T0IE EQU H"0005"
.............
RBIF EQU H"0000"
Por otro lado, suponiendo que el micro no lo diferencia y que con uno podriamos hacer lo mismo que con el otro, es decir que puedes actuar sobre RP0 con TOIE y viceversa. La pregunta seria y como sabe el micro que te refieres a PR0 y no al registro PORTA que tambien es H"0005".
;----- Register Files------------------------------
INDF EQU H"0000"
....................
PORTA EQU H"0005"
PORTB EQU H"0006"
Saludos.
-
Como bien dices,el compilador no sabe discernir si se hace referencia a un bit que corresponde a un registro u otro.Por esto,las instrucciones orientadas a bit llevan como operando el registro contenedor del bit sobre el que se actúa y también dicho bit:
BSF INTCON,GIE
BTFSC STATUS,Z
BCF STATUS,4
etc....
-
Como dice Modulay el compilador no tiene forma de saber si creaste un registro o asignaste un bite ya que llevan el mismo numero pero cuando accedes a a leer o a asignar a un registro un valor determinado eres tu el que deve de tener cuidado en saber a que se refiere cada asignacion. por ejemplo:
T0IE EQU H"0005" ; aqui se esta asignando a T0IE el numero 0X05 pero se refiere
............................; al bite numero 6 del registro INTCON que esta en el banco 1
............................; y tiene la direccion 0X0B.
PORTA EQU H"0005" ; aqui se refiere a una direccion de registro que aunque
................................; lleven el mismo numero no se refieren a lo mismo pero eso
................................; tu lo tienes que controlar ya que para escribir o leer en el
................................;registro H"0005" puedes tambien hacerlo sobre el T0IE pero
................................; el compilador te estaria dando error si usaste esta
................................; etiqueta en el mismo programa asignandole un bite
................................( BCF INTCON,T0IE) .
Asi que espero haberte aclarado un poco las cosas y si persdiste el problema comentalo. Hasta pronto