13 . MODOS DE DIRECCIONAMIENTO DE DATOS Existen varios modos de direccionamiento para acceder a cualquiera de las posiciones de datos: Direccionamiento directo Direccionamiento indirecto Direccionamiento indexado Direccionamiento inmediato Direccionamiento de bit
Direccionamiento directo: La posición de memoria con la que se trabaja viene directamente definida en el código de la instrucción.
mowf TMR0
14 . MODOS DE DIRECCIONAMIENTO DE DATOS Direccionamiento indirecto: La posición de memoria con la que se trabaja viene definida por el contenido del registro FSR (Posición 04h, 84h), es decir, el registro FSR actúa como puntero de la posición de memoria con la que se pretende operar.
movwf INDF
Direccionamiento indexado: Se utiliza el PC, concretamente el PCL para direccionar.
addwf PCL,F
Direccionamiento inmediato: El valor del dato inmediato lo contiene el código de operación y se carga en el registro. iorlw K Direccionamiento de BIT: La dirección del dato es un bit. Bcf STATUS,RP0
15 . MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.)
7 bits para direccionar la RAM (9 bits)*
Dir. Indirecto 7 bits (8 bits)* Dir. Directo: 7 bits . Con los bits STATUS (RP1 y RP0) se obtiene el banco (X bits)* en otros PIC de la GAMA
16 . MODOS DE DIRECCIONAMIENTO DE LA MEMORIA DE DATOS (Cont.) Tanto para el direccionamiento directo como el indirecto la dirección completa (7 bits) no se puede obtener del código de la operación (5 bits) o del registro FSR (7 bits). Para direccionamiento directo, la dirección a operar se obtiene completando la dirección incluida en el código de la instrucción (posición en el banco) con los bits RP1:RP0 del registro STATUS (selección de banco). Para direccionamiento indirecto, la dirección se obtiene completando el contenido del registro FSR (posición en el banco) con el bit IRP del registro STATUS y el bit de mayor peso del FSR (selección del banco). [El PIC16F84 no utiliza el bit IRP -solo 2 bancos-].
17 . MODOS DE DIRECCIONAMIENTO INDIRECTO: INDF y FSR
EL DIRECCIONANMIENTO INDIRECTO UTILIZA EL INDF, NO ES UN REGISTRO FÍSICO. DIRECCIONANDO INDF SE DIRECCIONA REALMENTE EL REGISTRO CUYA DIRECCIÓN CONSTA EN EL REGISTRO FSR. El direccionamiento indirecto es muy útil para el procesamiento de posiciones consecutivas de memoria o para el direccionamiento de datos en subrutinas. REGISTRO POSICIÓN 05h CONTIENE 10h REGISTRO POSICIÓN 06h CONTIENE 0Ah CARGA DE 05h EN EL REGISTRO FSR LECTURA DE INDF DA UN VALOR DE 10h INCREMENTAR EL CONTENIDO DE FSR (FRS=06h) LECTURA DE INDF DA UN VALOR DE 0Ah
18 INDF y EECON2 son utilizados por otros registros . REGISTROS ESPECIALES
19 CARRY (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte.
DC (digit carry) (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits.
Z (zero) (bit 2): Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero.
PD (Power – Down bit) (bit3): se pone a "0" después de ejecutar la instrucción SLEEP*, se pone a "1" después de ejecutar la instrucción CLRWDT o después de un power-up.
TO (Timer Up) (bit4): se pone a "0" cuando se acaba el tiempo del WATCHDOG, Se pone a "1" después de ejecutar las instrucciones, CLRWDT o SLEEP o después de un power-up.
RP0 y RP1 (selección de banco) (bit 5 y 6): Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la selección del banco se hace mediante RP0 (BIT 5), si está a "0" nos encontramos en el banco 0, y si está a "1" nos encontramos en el banco 1.
IRP (bit 7): En este PIC no se usa para nada. . REGISTROS ESPECIALES: STATUS REGISTER (Address 03h,83h)
20 . REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
(Gp:) RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0/INT0 (Gp:) RA4/TOCK1
RA3
RA2
RA1
RA0
Puerto A: 5 bits Puerto B: 8 bits Definición IN-OUT por TRIS f Nivel IN-OUT por PORT f BSF STATUS,RP0 BANCO 1 Para trabajar con TRIS f BCF STATUS,RP0 BANCO 0 Para trabajar con PORT f
21 . REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
Definición IN-OUT por TRIS f Salida: 0 Entrada: 1 Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W
22 Puertos de entrada/salida Definición IN-OUT por TRIS f Salida: 0 Entrada: 1 BSF Status, RP0 ;Banco 1 CLRF TRISA ;Puerto A OUT MOVLW b'11111111' ;Puerto B IN MOVWF TRISB BCF Status, RP0 ;Banco 0 MOVLW b'xxxxxxxx' MOVWF TRISf (Gp:) Nivel IN-OUT por PORT f Guardar el contenido del Puerto en W (Gp:) ;SI PUERTO f ES DE SALIDA
MOVLW b'01010101' ;Guarda en W el valor MOVWF PORTB ;Lo envía a la salida
; SI PUERTO f ES DE ENTRADA
MOVF PORTB,W ;Guarda los datos en W
BSF TRISf,x BCF TRISf,x
23 . REGISTROS ESPECIALES: PUERTOS ENTRADA/SALIDA
PORT B: resistencias de PULL-UP conectadas
Se habilitan o Deshabilitan todas a la vez por registro: OPTION_REG
BSF OPTION_REG,RBPU BCF OPTION_REG,RBPU
Si el puerto se define como SALIDA, las resistencias NO ACTUAN
PORT A: El pin RA4/TOCKI es un COLECTOR ABIERTO – Si se utiliza de SALIDA: Resistencia EXTERNA de Pull-up – Como ENTRADA: puede ser utilizada como Trigger-Schmitt (Gp:) Vcc
24 . SEGÚN FUNCIONALIDAD DATA SHEET
25 . SEGÚN FUNCIONALIDAD
26 . SEGÚN FUNCIONALIDAD
Página anterior | Volver al principio del trabajo | Página siguiente |