curso pic16f87x 2

Upload: proteus7

Post on 31-May-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Curso PIC16F87X 2

    1/10

    ORGANIZACINDE LA MEMORIA

    Esta familia de microcontrolado-res, al igual que el PIC16F84,dispone den de tres bloques dememoria. La Memoria dePrograma y la Memoria de DatosRAM que tienen los buses sepa-rados para poder permitir el

    acceso simultneo a estos dosbloques y la Memoria de datosEEPROM.

    Organizacin de laMemoria de programaLos dispositivos de PIC 16F87X

    tienen un contador de programa de

    13 bits capaz de direccionar 8Kxl4

    posiciones de memoria. Los

    dispositivos de PIC16F877/876

    tienen 8K x 14 posiciones de

    memoria de programa tipo

    FLASH y el PIC 16F873/874

    tienen 4Kx 14. Acceder a una

    posicin de memoria no

    implementada, provoca la lectura

    o escritura de la posicin de

    memoria envolvente.

    El vector de Reset est en la

    posicin de memoria 0000h y elvector de Interrupcin est en laposicin de memoria 0004h.

    Organizacin de laMemoria de datosLa memoria de los datos se divide

    en los cuatro Bancos que contiene

    los Registros de Propsito

    Generales y los Registros de la

    Funciones Especiales (FSR). Los

    bits RP1 (STATUS ) y RP0

    (STATUS ) seleccionan cada

    uno de estos Bancos, de acuerdo a

    la Tabla1.

    En cada Banco hay 7Fh posi-ciones de memoria (128 bytes).Las posiciones ms bajas estn,reservadas para los Registros deFunciones Especiales. Por enci-ma de los Registros de Funciones

    CURSO DE MICROCONTROLADORESPIC16F87X (...Y II)

    CURSO DE MICROCONTROLADORESPIC16F87X (...Y II)

    NUESTRO

    SCURSOS

    44RESISTOR

    RP1 RP0 Banco0 0 Banco 00 1 Banco 11 0 Banco 21 1 Banco 3

    Tabla 1.- Seleccin de los

    Bancos de memoria RAM con

    RP0 y RP1

  • 8/14/2019 Curso PIC16F87X 2

    2/10

    Especiales se encuentran losRegistros de Propsito General,que se utilizan como posicionesde memoria RAM esttica.Todos estn estructurados enBancos. Algunos Registros deFunciones Especiales estn refle- jados en varios Bancos parareducir el cdigo y tener un acce-so ms rpido. Se puede ver elmapa de la memoria de datos y

    los registros especiales en lasFiguras 3 y 4. Si analizamosestas figuras podemos ver comoefectivamente despus de cadagrupo de registros especiales decada Banco estn las posicionesde memoria que pueden ser usa-das para el almacenamiento dedatos.

    En el caso de losPIC16F876/7, los Bancos 0 a 3

    tienen disponibles 80 bytes dememoria para datos (Registrosde Propsito General) que sonindependientes los unos de losotros. Los Bancos 2 y 3 tienen 16bytes adicionales, que son tam-bin independientes. Sin embar-go, los 16 bytes superiores dememoria en cada Banco tienenuna raiz comn. Accediendo acualquiera de los 16 bytes en

    cualquier Banco, automtica-mente nos da acceso a los mis-mos en el Banco 0 (70h a 7Fh).Esta forma de acceder puede sermuy ventajosa en algunos casos.Para los PIC16F876/7, la memo-ria disponible para datos en totales de 96+80+16+80+16+80 =368 bytes.

    Para el caso de losPIC16F873/4, como puede verse

    en la Figura 4 en la que se presentala definicin de los Bancos, tienendisponibles 96 bytes en el Banco 0,que son conjuntamente accedidos atravs del Banco 2. El Banco 1tiene igualmente 96 bytes, que tam-bin son accesibles desde a travsdel Banco 3, lo que hace un totalde 96+96= 192 bytes.

    (Nota.- La memoria EEPROMde Datos se describe en el aparta-

    do 3 de estos apuntes sobre lashojas de caractersticas.)

    REGISTROS DEPROPSITO GENERAL

    Se puede acceder a cualquierregistro utilizando el direcciona-miento directo o indirecto, eneste ltimo caso a travs delregistro FSR.

    NUESTRO

    SCURSO

    S

    45RESISTOR

    Figura 1.- Mapa de Memoria y

    STACK del PIC16F876/877

    Las Figuras 1 y 2 muestran el mapa de memoria y Stack de los PIC16F876/7 y PIC16F873/4

    Figura 2.- Mapa de Memoria y

    SACK del PIC16F873/874

  • 8/14/2019 Curso PIC16F87X 2

    3/10

    46RESISTOR

  • 8/14/2019 Curso PIC16F87X 2

    4/10

    47RESISTOR

  • 8/14/2019 Curso PIC16F87X 2

    5/10

    REGISTROS DE FUNCIONESESPECIALES

    Los Registros de FuncionesEspeciales (SFR) son registrosusados por la CPU y los mdulosperifricos para hacer trabajar eldispositivo como nosotros quere-mos. Estos registros estn reali-

    zados como RAM esttica. Unlistado de estos registros concada uno de sus bits es el que semuestra en la Tabla 2.

    Los Registros de FuncinEspeciales podemos clasificarlosen dos tipos, los correspondien-tes a la CPU y los que controlan

    los perifricos. Los registros queafectan directamente a la CPU sedescriben seguidamente condetalle. Aquellos registros rela-cionados con el funcionamientode los perifricos se describen enel apartado correspondiente alperifrico.

  • 8/14/2019 Curso PIC16F87X 2

    6/10

  • 8/14/2019 Curso PIC16F87X 2

    7/10

    REGISTRO DE STATUS (Direcciones 03h, 83h,103h, 183h)

    bit 7: IRP: Seleccin de Bancos para el direccionamientoindirecto1 = Bancos 2 y 3 (1 00h- 1 FFh)0= Bancos 0 y 1 (00h-FFh)

    bit 6-5: RP1:RP0: Seleccin del Banco para el direcciona-miento directo11 = Banco 3 (1 80h- 1 FFh)10 =Banco 2(100h-17Fh)01 =Banco 1 (80h-FFh)00 = Banco 0 (00h-7Fh)Cada Banco es de 128 bytesbit 4:#TO: Flag de Timer Out1= Despus de conectar VDD o ejecutar CLRWDT o SLEEP0= Al desbordarse el temporizador de WDTbit 3:#PD:Flag de Power Down

    1= Despus de conectar VDD o al ejecutar la instruccin CLRWDT

    0 = Al ejecutar la instruccin SLEEPbit 2: Z: Flag de Cero1= El resultado de la ltima operacin aritmtica o lgica

    es Cero0= El resultado de la ltima operacin aritmtica o lgicaes distinto cerobit 1: DC: Flag de acarreo en el 4 bit de menos peso1 = Acarreo en la suma0 = No acarreo en la sumaEn la resta es al contrariobit 0:C: Flag de acarreo en el octavo bit1 = Se ha producido un acarreo en la suma y no en la resta0= Se ha producido un acarreo en la resta y no en la sumaEste bit tambin se utiliza en las instrucciones de rotacin

    " " " " "

    R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-xIRP RP1 RP0 #T0 #PD Z DC CBit 7 Bit 0

    Seguidamente pasamos a describir cada uno de los bits de los Registros Especiales FSR.

    NUESTRO

    SCURSOS

    50RESISTOR

  • 8/14/2019 Curso PIC16F87X 2

    8/10

    NUESTRO

    SCURSO

    S

    51RESISTOR

    REGISTRO OPTION u OPTION_REG (Direccin 81h,181h)

    bit 7:#RBPU: Resistencia de Pull-up en, el PORTB

    1=Resistencia de Pull-up desactivada0= Resistencia de Pull-up activadabit6 1:INTEDG:, Flanco, de control de interrupciones1:Interrupcin por flanco ascendente en el pin RB0/INT,0:Interrupcin por flanco: descendente en el pin RB0/INTbit 5:T0SC. Seleccin del tipo de Reloj para TMRO1 = Los pulsos se introducen a travs del, pin RA4/TOCK10 = Los Pulsos de reloj internos- Fosc/4bit 4:T0SE: Tipo de flanco para TMR01 = Incremento de TMR0 en cada flanco, descendente porel pin RA4/TOCKI0 = Incremento de TMR0 en cada flanco ascendente por elpin RA4/TOCKIbit 3:PSA: Asignacin del Preescaler

    1 = El preescaler se le asigna al WDT

    0 = El preescaler se le asigna al TMR0bit 2-0:PS2:PS0: Rango de actuacin del preescaler

    R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1RBPU INTED T0CS T0SE PSA PS2 PS1 PS0Bit 7 Bit 0

    El Registro de OPTION_REG es un registro que puede ser ledo o escrito y que contiene varios bits decontrol para configurar la asignacin del preescaler al TMR0 o al WDT, la interrupcin externa, el TMR0 ylas resistencias de pull-up del PORTB.

    Nota.- Asignar el preescaler como 1: 1 al registro TMR0, asigna el preescaler al Watchdog.

    PS2 PS1 PS00 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1

    Divisor de TMR01:21:41:8

    1:161:321:641:1281:256

    Divisor de WDT1:11:21:41:81:161:321:64

    1:128

    REGISTRO INTCON (Direccin 0Bh, 8Bh, l0Bh, 18Bh)

    bit 7:GIE: bit de habilitacin global de Interrupciones1= Habilita el permiso de interrupciones0= Inhabilita todas las interrupcionesbit 6:PEIE: bit de habilitacin de interrupciones de losperifricos que no se controla con el registro INTCON1= Habilita el permiso de interrupciones de los perifri-

    cos0= Inhabilita las interrupciones de los perifricosbit 5:T0IE: bit de habilitacin de la interrupcin por des-bordamiento del TMR01= Habilita la interrupcin0= Inhabilita la interrupcinbit 4:INTE: bit de habilitacin de la interrupcin externapor el pin RB0/INT1= Habilita la interrupcin0= Inhabilita la interrupcinbit 3:RBIE: bit de habilitacin de interrupcin por cambio

    de nivel en el PORTB1= Habilita la interrupcin0= Inhabilita la interrupcinbit 2:T0IF: flag de indicacin de desbordamiento deTMR01= El TMR0 se ha desbordado. Se borra por software

    0= El TMR0 no se ha desbordadobit 1:INTF: flag de estado de la interrupcin externa INT1= La interrupcin externa se ha producido. Se borrapor software0= La interrupcin externa no se ha producidobit 0:RBIF: flag de indicacin de interrupcin por cambiode nivel en PORTB1= Se ha producido un cambio de nivel en los pinesRB7:RB4. Se borra por software.0= No se ha producido un cambio de nivel en los pinesRB7:RB4

    " " "

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-xGIE PEIE T0IE INTE RBIE T0IF INTF RBIFBit 7 Bit 0

    El registro INTCON es un registro de lectura y escritura que contiene los bit de habilitacin de interrupcio-nes por desbordamiento de TMR0 por cambio de nivel en el PORTB e interrupciones externas por la lneaRBO/INT.

  • 8/14/2019 Curso PIC16F87X 2

    9/10

    REGISTRO PIE1 (Direccin 8Ch)

    bit 7:PSPIE: bit de habilitacin de inte-rrupcin por lectura / escritura en el

    Puerto Paralelo Esclavo. Para losmodelos de 40 pines.1 = Habilita la interrupcin porlectura/escritura en el PSP0= inhabilita la interrupcin por lectu-ra/escritura en el PSPbit 6:ADIF: bit de habilitacin de inte-rrupcin por finalizacin de la conver-sin A/Dl = Habilita la interrupcin del converti-dor A/D0 = Inhabilita la interrupcin del con-vertidor A/Dbit 5:RCIE: bit de habilitacin de inte-rrupcin en recepcin por el USAR,cuando se llena el buffer,

    1 = Habilita interrupcin por recepcinen el USAR

    0 = Inhabilita interrupcin por recep-cin en el USARbit 4:TXIE: bit de interrupcin al trans-mitir por el USAR, cuando se vaca elbuffer.1 = Habilita la interrupcin de transmi-sin por el USAR0 = Inhabilita la interrupcin de trans-misin por el USARbit 3:SSPIE: bit de habilitacin de inte-rrupcin por el Puerto Serie Sncrono(SSP)1= Habilita la interrupcin del SSP0= Inhabilita la interrupcin del SSPbit 2:CCP1IE: bit de habilitacin de inte-rrupcin del mdulo CCPI cuando se

    produce una captura o una comparacin.1= Habilita la interrupcin del CCPI

    0=. Inhabilita la interrupcin del CCPIbit 1:TMR2IE: bit de habilitacin de inte-rrupcin por desbordamiento de TMR2queest emparejado con el registro PR2(92h)1= Habilita la interrupcin por desborda-miento de TMR2 emparejado a PR20= Inhabilita la interrupcin de TMR2emparejado a PR2bit 0:TMR1IE: bit de habilitacin de inte-rrupcin por desbordamiento del TMRI1= Habilita la interrupcin por desborda-miento de TMR10= Inhabilita la interrupcin por desbor-damiento de TMR1

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0PSPIE(1) ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IEBit 7 Bit 0

    Este registro contiene los bits individuales de habilitacin de interrupciones de los perifricos.

    Nota.El bit PEIE (INTCON ) debe esta a uno para habilitar las interrupciones decualquiera de los perifricos.

    REGISTRO PIE2 (Direccin 8Dh)

    bit 7:No implementado: se lee como 0bit 6: Reservado, Mantiene este bits a cerobit 5:No implementado: se lee como 0bit 4:EEIE: Habilita la interrupcin por escritura en laEEPROM de datos1= Habilita la interrupcin por escritura de la EEPROM dedatos0 =Deshabilita la interrupcin por escritura en la EEPROMde datos

    bit 3:BCLIE: Habilita la interrupcin por colisin en el busSSP cuando dos o ms maestros tratan de transferir almismo tiempo.1 = Habilita la interrupcin por colisin de bus SSP0 = Deshabilita la interrupcin por colisin en el bus SSP.bit 2-1No implementados, se leen como 0bit 0:CCP2IE: Habilita la interrupcin del modulo CCP21 = habilita la interrupcin de CCP20 = inhabilita la interrupcin de CCP2

    U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0---0 --- EEIE BCLIE -- -- CCP2IEBit 7 Bit 0

    El registro de PIE2 contiene los bit individuales que habilita las interrupciones del perifrico CCP2,. la inte-rrupcin por colisin del SSP y la ininterrupcin de escritura en la EEPROM.

    Nota 1.- PSPIE para los dispositivos de 28 pines, siempre mantiene este bit a cero

    NUESTRO

    SCURSOS

    52RESISTOR

  • 8/14/2019 Curso PIC16F87X 2

    10/10

    NUESTRO

    SCURSO

    S

    53RESISTOR

    REGISTRO PIR1 (Direccin 0Ch)

    bit 7:PSPIF: Flag de Lectura/Escritura porel Puerto Paralelo esclavo1= Concedido el permiso de interrupcinpara la puerta paralela esclava al realizaruna operacin de Lectrura/Escritura. Enlos modelos de 40 pines.0= No est permitida la interrupcinbit 6:ADIF: Flag de final de conversin delconvertidor A/D1= El convertidor A/D ha finalizado laconversin0= El convertidor A/D no ha finalizado laconversinbit 5:RCIF: Flag de recepcin por el USAR1= El buffer de datos recibidos por elUSAR est lleno0= El buffer de datos recibidos por elUSAR no est llenobit 4:TXIF: Flag de transmisin el USAR1= El buffer de datos a transmitir no estlleno0= El buffer de daos a transmitir estllenobit 3: SSPIF: Flag de interrupcin delPuerto Serie Sncrono (SSP)

    1= La condicin del SSP ha ocurrido,debe ponerse a cero por software antesde volver del programa de atencin a lainterrupcin. Las condiciones que sopor-ta este bit sonSPIHa tenido lugar una Transmisin /RecepcinI2C SlaveHa tenido lugar una Transmisin /RecepcinI2C MasterHa tenido lugar una Transmisin /RecepcinLa condicin de salida iniciada se com-plet por el mdulo de SSP.La condicin de parada inicio se comple-t por el mdulo de SSP.La condicin de reinicializacin se com-pleto por el mdulo SSPUna condicin de la salida se ha realizadomientras el mdulo de SSP estaba enestado de espera (sistema de Multimaster).0 = no ha ocurrido ninguna condicin deinterrupcin del mdulo SSP

    bit 2:CCP1IF: Flag de interrupcin deCCPI

    Modo Captura1= Ocurri una captura de TMR1 (debeponerse a cero por software)0= No ocurri ninguna captura de TMR1Modo Comparacin1= Se ha realizado una comparacin deTMR1 Con el registro emparejado /debeponerse a cero por Software)0= No se ha realizado comparacinModo PWMEste modo no se utilizabit 1:TMR2IF: Flag de interrupcin deTMR2 emparejado con PR21= TMR2 emparejado con PR2ocurri(debe ponerse a cero por software)0= No ha ocurrido el emparejamiento deTMR2 con PR2bit 0: TMR1IF: Flag de desbordamientode TMRI1 =el registro se desbordo (debe ponersea cero por software)0 = el registre de TMRI no se desbordo

    " " " " " " " "

    R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-xPSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR21F TMR1IFBit 7 Bit 0

    El registro de PIRI contiene los flags individuales que indican las interrupciones provocadas por los perifricos.

    REGISTRO PIR2 (Direccin 0Dh)

    bit 7:No implementado: se lee como 0bit 6:Reservado: Mantiene este bit siempre a cerobit 5:No implementado: se lee como 0bit 4:EEIF: Flag que indica si se ha producido escritura en alEEPROM1 = Se ha completado la escritura en la EEPROM (Se pone a ceropor software)0 = No se ha finalizado la escritura o no se ha comenzadobit 3:BCLIF: Flag que indica la colisin en el bus1 = Se ha producido una colisin en el bus SSP, cuando se confi-gura en el modo I2C Master.0 = No se ha producido colisin en el bus

    bit 2-1:No implementados: se leen como 0bit 0: CCP21F: Flag de ininterrupcin de CCP2Modo Captura1 = Ha ocurrido una captura del registro TMR1 (debe ponerse acero por software)0= No se ha producido capturaModo Comparacin1 = Se ha producido una comparacin de TMR1 con su pareja(debe ponerse a cero por software).0 = No se ha producido comparacinModo PWMNo se utiliza

    " " " " " " " "

    U-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-x---(1) --- EEIF BCLIF --- --- CCP2IFBit 7 Bit 0

    El registro de PIR2 contiene los flags que indican la interrupcin del CCP2, de la colisin del bus SSP y la inte-rrupcin de la escritura en la EEPROM

    REGISTRO PCON (Direccin 8Eh)

    bit 7-2:No implementado: se lee como 0bit 1:#POR: bit de estado Power-on Reset1 = No se ha producido un Power-on Reset0= Se ha producido un Power-on Reset (debe reestablecersepor software)

    bit 0:#BOR: bit de estado de Borwn-out Reset1 = No se ha producido ningn Brown-out Reset0= Se ha producido un Brown-out Reset (debe reestablecersepor software)

    Nota 1.- PSPIF est reservado para los dispositivos de 28 pines; se mantiene siempre a cero.

    U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0---0 --- --- --- --- #POR #BORBit 7 Bit 0

    El registro PCON (Power Control) Control de Alimentacin, contiene los flags que permiten diferenciar entre unPower-on Reset (POP), un Brown-out Reset (BOR), un Reset por Watchdog (WDT) y un Reset externo por MCLR.