curso pic16f87x 4

Upload: proteus7

Post on 31-May-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 Curso PIC16F87X 4

    1/8

    LOS REGISTROS PCLy PCLATH

    El contador del programa(PC) est formado por 13 bit quesirven para direccionar lamemoria de cdigo, estos bits seencuentran en dos registrosespecficos. El byte bajo viene delregistro de PCL que puede serledo y escrito. Los bits superiores(PC). Estn alojados en elregistro PCH , sobre el que no sepuede leer ni escribir, pero sepuede acceder a l indirectamentea travs del registro PCLATH.

    Las instrucciones de saltoCALL y GOTO sloproporcionan 11 bits de ladireccin a saltar. Esto limita elsalto dentro de cada Banco de 2K.Cuando se desea salir del Bancoactual hay que programar

    correctamente los bits PCLATH que seleccionan el Banco.Es labor del programadormodificar el valor de dichos bitsen las instrucciones CALL yGOTO.

    La familia de los PIC 16F87Xdispone de una pila de 8 nivelesde profundidad para un tamaode PC de 13 bits. Esta pila estransparente al programador, esdecir, funciona automticamentey no dispone de instruccionespara guardar o sacar de ellainformacin.

    Con la Instruccin CALL ycon las interrupciones el valor dePC se salva en el nivel superior.Con las instrucciones RETURN,RETLW y RETFIE el valor con-tenido en el valor superior de lapila se carga en el PC.

    La pila funciona como un buf-fer circular. Esto significa quedespus de que se han guardado 8valores en ella, el noveno borra elvalor que se guard en primerlugar, el dcimo borra el que seguardo en segundo lugar, etc.

    Paginacin de la Memoriade Programa

    Los dispositivos de la familiaPIC 16F87X son capaces dedireccionar un bloque de hasta8K de memoria continua. Lasinstrucciones CALL y GOTOproporcionan solo 11 bits de ladireccin de memoria, lo quepermite un salto de bifurcacindentro de una pgina de 2K de lamemoria de programa.

    Al hacer un CALL o una ins-truccin GOTO, dos 2 bit supe-riores de la direccin son pro-porcionados por el PCLATH. Al hacer un CALL o unGOTO, el usuario debe asegu-rarse de que la pgina se hanseleccionados con los bit corres-pondientes a la pgina que sedesea llamar. Hay que tener pre-caucin en los retornos de subru-tinas y retornos de ininterrup-cin para no salirse con el valoralmacenado en la PILA.

    Por consiguiente, manipula-cin del PCLATH no se

    requieren los bits para las ins-trucciones del retorno. Este es elcaso del ejemplo Inter.asm, en elque el programa principal, queconsiste en encender y apagar unLED, conectado a travs de una

    CURSO DEMICROCONTROLADORESPIC16F87X (...y IV)

    CURSO DEMICROCONTROLADORESPIC16F87X (...y IV)

    Fernando Remiro DomnguezProfesor de Sistemas Electrnicos

    IES. Juan de la Ciervawww.terra.es/personal/fremiro

    Figura 1.- Estructura del Contador de Programa

    PCLATH

    PCLATH

    PC

    12

    PCH PCL

    8 7 0

    8

    5

    Instrucciones con

    destino en el PCL

    ALUMICROCONTROLADORES

    56RESISTOR

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 56

  • 8/14/2019 Curso PIC16F87X 4

    2/8

    ;***********************************************************************************

    ; Programa INTER.asm Fecha : 24- Enero-2003

    ; Este programa genera una intermitencia en un lED conectado a la lnea RB0. El programa principal

    ; est en la pagina 0 de memoria de programa y la subrutina en la pgina 1 de programa

    ; Revisin 0.0 Programa para PIC16F87X

    ; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS; Perro Guardin :deshabilitado Tipo de Reloj : XT

    ; Proteccin del cdigo : OFF

    ;**********************************************************************************

    List p=16F876 ;Tipo de procesador

    include "P16F876.INC" ;Definiciones de registros internos

    ;__config _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _XT_OSC & _WDT_OFF

    ; org 0x00 ;Vector de Reset

    ; goto INICIO

    CONTA1 EQU 0x20

    CONTA2 EQU 0x21

    PCLATH_TEMP EQU 0x22

    org 0x05 ;Salva el vector de interrupcin

    INICIO clrf PORTB ;Borra los latch de salida

    bsf STATUS,RP0 ;Selecciona banco 1movlw b'00000110'

    movwf ADCON1 ;Puerta A E/S digitales

    clrf TRISB ;Puerta B se configura como salida

    bcf STATUS,RP0 ;Selecciona banco 0

    BUCLE bsf PORTB,0

    movf PCLATH,W ;Salvamos valor de PCLARH en un registro temporal

    movwf PCLATH_TEMP

    bsf PCLATH,3 ;Selecciona la Pgina 1

    bcf PCLATH,4

    call TEMPO

    bcf PORTB,0

    movf PCLATH,W

    movwf PCLATH_TEMP

    bsf PCLATH,3 ;Selecciona la Pgina 1

    bcf PCLATH,4

    call TEMPOgoto BUCLE

    ORG 0x0800 ;Direccin de Inicio de la Pgina 1

    TEMPO clrf CONTA1 ;Borra el contenido de counter1

    clrf CONTA2 ;Borra el contenido de counter2

    BUCLE_1 decfsz CONTA1,f ;resta 1 al contenido de CONTA1.si CONTA1 llega a

    ;cero: salta la instruccin GOTO BUCLE1

    ;Si counter1 no llega a cero: ejecuta la siguiente instruccin

    goto BUCLE_1 ;Cierra el primer bucle de retardo

    decfsz CONTA2,f ;Lo mismo que el caso anterior, pero esta vez aplicado a CONTA2

    goto BUCLE_1 ;Cierra el segundo bucle de retardo

    movf PCLATH_TEMP,W ;Repone el valor de PCLATH antes de la subrutina

    movwf PCLATH

    return ;Retorno de subrutina

    ORG 0x1F00

    bcf PCLATH,4

    bcf PCLATH,3 ;Selecciona la pgina 0

    goto INICIO

    end ;Fin del programa fuente

    Programa Inter1.asm

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 57

  • 8/14/2019 Curso PIC16F87X 4

    3/8

    MICROCONTROLADORES

    resistencia de 330 W a la lneaRB0, cada cierto tiempo, el pro-grama principal se ejecuta en lapgina cero y la subrutina detemporizacin se encuentra en la

    pgina 1 de memoria de progra-ma.

    EL STACKLa familia de los PIC 16F87X

    dispone de una pila de 8 nivelesde profundidad para un tamaode PC de 13 bits. Esta pila estransparente al programador, esdecir, funciona automticamentey no dispone de instruccionespara guardar o sacar de ellainformacin.

    Con la Instruccin CALL ycon las interrupciones el valor dePC se salva en el nivel superior.Con las instrucciones RETURN,RETLW y RETFIE el valor con-tenido en el valor superior de lapila se carga en el PC.

    La pila funciona como un buf-fer circular. Esto significa quedespus de que se han guardado8 valores en ella, el noveno borrael valor que se guard en primerlugar. El dcimo borra el que seguardo en segundo lugar, etc.

    Paginacin de la Memoriade Programa

    Los dispositivos de la familiaPIC 16F87X son capaces dedireccionar un bloque de hasta8K de memoria continua. Las

    instrucciones CALL y GOTOproporcionan solo 11 bits de ladireccin de memoria, lo quepermite un salto de bifurcacindentro de una pgina de 2K de la

    memoria de programa.Al hacer un CALL o una ins-

    truccin GOTO, dos 2 bit supe-riores de la direccin son propor-cionados por el PCLATH .Al hacer un CALL o un GOTO,el usuario debe asegurarse deque la pgina se han selecciona-dos con los bit correspondientesa la pgina que se desea llamar.Hay que tener precaucin en losretornos de subrutinas y retornosde ininterrupcin para no salirsecon el valor almacenado en laPILA.

    Por consiguiente, manipula-cin del PCLATH no serequieren los bits para las ins-trucciones del retorno. Este es elcaso del ejemplo Inter.asm, en elque el programa principal, queconsiste en encender y apagar unLED, conectado a travs de unaresistencia de 330 a la lneaRB0, cada cierto tiempo, el pro-grama principal se ejecuta en lapgina cero y la subrutina detemporizacin se encuentra enla pgina 1 de memoria deprograma.

    El programa est diseadopara aquellos que utilicen el boo-tloader con el circuito que pre-sentamos en el nmero anterior

    o un programador con el IC-PROG, tal y como est es validopara los primeros y si se quitanlos ";", se puede cargarse direc-tamente utilizando cualquiera de

    los dems programadores, estaslneas de programa se han mar-cado en azul. En rojo se han mar-cado las lneas de programa utili-zadas para salvar el valor deregistro PCLATH en un registrotemporal, antes de manipularPCLATH , cargando en elbit 4 y 3 del mismo, respectiva-mente los valores 0 y 1, queseleccionan la pgina 1 dememoria de programa.

    Por ltimo, en la subrutinaque empieza en la pgina 1, en ladireccin 8000h, se ha marcadoen verde las instrucciones quereponen el valor que tena elPCLATH antes de saltar a lasubrutina.

    Direccionamiento indirecto,los registros INDF y FSR

    El registro INDF no es unregistro fsico, que ocupa ladireccin 0 en todos losBancos, este registro se utilizacuando queremos realizar undireccionamiento indirecto.Cuando se hace referencia alregistro, se accede realmente a ladireccin de un Banco de registroespecificada con los 7 bits demenor peso del registro FSR. Elbit de ms peso del FSR junto al

    Figura 2.-Forma de seleccionar el Banco y la direccin de la RAM en los direccionamientos directo eindirecto.

    58RESISTOR

    Memoriade datos

    Banco 0 Banco 1 Banco2 Banco3

    00h 80h 100h 180h

    7Fh FFh 17Fh1FFh

    Direccionamiento Indirecto

    Registro FSR

    Direccionamiento Directo

    RP1:RP0 6 0

    Seleccin de Banco

    Cdigo de operacin instruccin

    Direccin dentro del Banco Seleccin de Banco Direccin dentro del Banco

    IRP

    00 01 10 11

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 58

  • 8/14/2019 Curso PIC16F87X 4

    4/8

    bit IRP de registro de STATUS seencarga de seleccionar el Banco aacceder, mientras que los 7 bits demenos peso apuntan a la posicin.

    LOS PUERTOS DE E/S YRECURSOS ESPECIALES DELPROCESADOR

    Alguno de los pines de lospuertos de E/S estn multiplexa-dos con una o unas funcionesalternativas para la utilizacin delos perifricos internos. En gene-ral, cuando un perifrico se habi-lita el pin correspondiente nopuede utilizarse como pin de E/S.

    Los microcontroladoresPIC16F87X que estn encapsula-dos en 28 pines, disponen de trespuertos (PORTA, B y C) mien-tras que los microcontroladoresde 40 pines disponen de cincopuertos (PORA, B, C, D y E).

    PORTA y el registro TRISAEste puerto dispone de 6

    pines bidireccionales denomina-dos RA0 - RA5 cuyo sentidoest controlado por el registroTRISA, cuando se pone a 1 el bitcorrespondiente del registroTRISA, la lnea correspondientedel PORTA se comporta comouna entrada, mientras que si sepone a 0 se comporta comosalida.

    Al leer el registro del PORTAse est leyendo el estado de lospines, que es, el que se hallaescrito en el biestable de datos,La funcin de escritura implicala operacin de lectura, modifi-cacin y escritura. Es decir, le leeel pin, se modifica su valor y porltimo se escribe en el biestableel dato. Todos los pines delPORTA entregan niveles TTL.

    El pin RA4 est multiplexadocon el mdulo de reloj TIMER0,por lo tanto el pin RA4/TOCKIacta como E/S digital y como

    entrada de reloj para elTIMER0.

    Los pines RA0/AN0,RA1/AN1, RA2/AN2, adems deE/S digital tambin puedenactuar como los canales 0, 1 y 2del convertidor A/D.

    El pin RA3/AN3/VREF+tiene multiplexadas tres funcio-nes: E/S digital, entrad del canal 3

    del convertidor A/D y entrada dela tensin de referencia para losperifricos que la necesitan.

    El pin RA5/AN4/SS# tienemultiplexada tres funciones: E/Sdigital, entrada del canal 4 delconvertidor A/D y seleccin delmodo esclavo cuando trabaja conla comunicacin serie sncrona.Cuando se produce un Reset al

    MICROCONTROLA

    DORES

    59RESISTOR

    Figura 3.-Diagrama de conexin de los pines RA0-RA3 y RA5 quemultiplexan la funcin de E/S digital con la del canal de entrada deuna seal analgica para el Conversor A/D

    Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor enPOR,BOR el resto

    de Reset

    05 h PORTA -- -- RA5 RA4 RA3 RA2 RA1 RA0 --0x 0000 --0u 0000

    85 h TRISA -- -- Registro de direccionamiento del PORTA --11 1111 --11 1111

    97 h ADDCON1 ADFM -- -- -- PCFG3 PCFG2 PCFG1 PCFG0 --0- 0000 --0- 0000

    RELACIN DE REGISTROS RELACIONADOS CON EL PORTA

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 59

  • 8/14/2019 Curso PIC16F87X 4

    5/8

    conectar la tensin de alimenta-cin (POR: Power-on Reset)todos los pines del PORTA que-dan configurados corno canalesde entrada para el convertidorA/D y son ledas como 0.

    Para seleccionar el modo defuncionamiento como E/S digita-les o analgicas para el converti-dor A/D hay que configurar elregistro ADCON1 que se expli-car con detalle ms adelante. Si

    se quiere configurar el PORTAcomo E/S digitales bastar conescribir en los 4 bit menos signi-ficativos del registro ADCON1el valor 011x.

    El registro TRISA que confi-

    gura los pines deL PORTA, debeconfigurarse como entrada cuan-do se utilizan las entradasanalgicas.

    Ejemplo de inicializacin delPORTA

    EL PORTB y el registro TRISBEl PortB es est formado por

    8 lneas bidireccionales controla-das por el registro de direcciona-miento TRISB, poniendo un "1"en un bit del registro TRISB se

    direcciona la lnea correspon-diente como entrada, mientrasque los bit que se ponen a "0" enel registro de direccionamientoTRISB, se configuran comosalida.

    Los PIC16F87X pueden serprogramados en modo bajo vol-taje o alto voltaje, en el primerode los casos se puede programarcon VDD=5V. El modo alto vol-taje es el modo que utiliza elPIC16F84, en este caso se intro-duce por el pin MCLR#Vpp unatensin entre 12 y 14V. En elmodo de programacin de bajovoltaje se pone el pinMCLR#Vpp 5V y por los pinesRB3/PGM se pone a nivel alto.Como la programacin en cual-quiera de los casos se realiza sin-cronamnte en serie, por el pinRB6/PGC se introducen losimpulsos de reloj y porRB7/PGD los bit de datos serie.

    Las lneas RB7-RB4 puedenprogramarse para generar unainterrupcin cuando una de ellascambia de estado. Se deben con-figurarse como entradas y elvalor que se introduce por ellasse compara con el anterior de talforma que si no coinciden segenere una interrupcin, siempreque esta est autorizada. Detodas forma el bit RBIF, que esel bit 0 del registro INTCON, sepondr a 1.

    El pin RB0/INT tambinpuede programarse como peti-cin de interrupcin externa, sise autoriza con el correspondien-te bit de permiso de ininterrup-cin, que corresponde con el bit(4) INTE del registro INTCON ycon el bit INTEDG del registroOPTION_REG se programa elflanco de disparo.

    Los pines del PORTB tienenuna resistencia de pull-up a posi-

    tivo de alimentacin programa-ble, esta se conecta cuando el bit7 del OPTION REG, es decirRBPU# tiene un cero. La resis-tencia de pull-up realmente es untransistor CMOS tipo P, tal y

    MICROCONTROLADORES

    60RESISTOR

    bcf STATUS,RP0

    bcf STATUS,RP1 ;Selecciona el Banco 0 de memoria

    clrf PORTA ;inicializa el PORTB, borrando

    ;todas las basculas de datos

    bsf STATUS,RP0 ;Selecciona el Banco 1 de memoria

    movlw b00000110 ;Configura el PORTA como

    movwf ADCON1 ;E/S digitales

    movlw b00001111 ;Direcciona las lneas de RA0-RA3

    movwf TRISA ;como salida RA4-RAS como entrada

    Figura 4.- Diagrama interno de las lneas RB7-RB4 del PORTB

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 60

  • 8/14/2019 Curso PIC16F87X 4

    6/8

    como puede verse en la Figura 4,que se conecta siempre que lalnea est configurada como sali-da. Cuando se produce un Resetpor conexin de alimentacin(POP) se desconectan todas lasresistencias de pull-up.

    EL PORTC y el Registro TRISCEl PORTC est formado por 8

    lneas bidireccionales controladaspor el registro de direccionamien-to TRISC, Poniendo un 1 en unbit del registro TRISC se direc-ciona la lnea correspondientecomo entrada. Mientras que losbit que se ponen a 0 en el registrode direccionamiento TRISC, seconfiguran como salida.

    Las lneas del PORTC estnmultiplexadas con varias funcio-nes de los perifricos. En laTabla 1, se muestra los pines delPORTC y las distintas funcionesmultiplexadas que tienen.

    El PORTD y el registro TRISDEste puerto solo existe en los

    microcontroladores de la familia16F87X de 40 pines. El PORTDest formado por 8 lneasbidireccionales denominadasRD0/PSP0-RD7/PSP7 controla-das por el registro de direcciona-miento TRISD. Poniendo un 1en un bit del registro TRISD sedirecciona le lnea correspon-diente como entrada. Mientrasque los bit que se ponen a 0 en elregistro de direccionamientoTRISD, se configuran como sali-da. En este puerto todas lasentradas disponen de un TriggerSchmitt.

    Adems los pines de E/S digi-tales de este puerto, pueden mul-tiplexarse como una puerta para-lela de 8 lneas (PSP), que sirvepara permitir la comunicacin enparalelo con otros elementos delsistema.

    Para que trabaje como puertode comunicacin esclavo, hayque poner a 1 el bit PSPMODE,que se encuentra en el registroTRISE.

    El PORTE y el registro TRISEEste puerto solo existe en los

    microcontroladores de la familia16F87X de 40 pines. Est forma-do por 3 pines multifuncinR E 0 / R D # / A N 5 ,R E 1 / W R # / A N 6 , yRE2/CS#/AN7, que se configu-ran individualmente como entra-da o salida a travs de los tres bitde menor peso del registroTRISE (TRISE ).

    Las E/S del PORTE se con-vierten en entradas de control(RD#, WR# y CS#)para el puertoPSP cuando el bit PSPMODE quecorresponde con el bit 4 del regis-tro TRISE. Los pines de E/S digi-tal del PORTD estn multiplexa-

    Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en

    POR,BOR el resto

    de Reset

    06 h 106 h PORTB RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 xxxx xxxx uuuu uuuu

    86 h 186 h TRISB Registro de direccionamiento del PORTB 1111 1111 1111 1111

    81 h 181 h OPTION_REG RBPU# INTEDG T0SC T0SC PSA PS2 PS1 PS0 1111 1111 1111 1111Leyenda

    x = desconocido, u = inalterado. Las celdas sombreadas no son usadas por el PORTB

    RELACIN DE REGISTROS RELACIONADOS CON EL PORTB

    Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en

    POR,BOR el resto

    de Reset

    07 h PORTC RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx uuuu uuuu

    87 h TRISC Registro de direccionamiento del PORTC 1111 1111 1111 1111

    Leyenda: x = desconocido, u = inalterado

    RELACIN DE REGISTROS RELACIONADOS CON EL PORTC

    Nombre bit Funcin

    RC0/T1OSO/TICK1 bit 0 E/S digital. Salida Timer 1. Entrada de impulsos para el Timer1

    RC1/T1OSI/CCP2 bit 1 E/S digital, entrada al oscilador del Timer1. Entrada del mdulo deCaptura 2. Salida del Comparador 2; Salida del PWM2

    RC2/CCP1 bit 2 E/S digital. Entrada Captura 1; Salida Comparador 1; Salida PWM 1

    RC3/SCK/SCL bit 3 E/S digital. Seal de reloj en modo SPI. Seal de reloj en modo I2C

    RC4/SDI/SDA bit 4 E/S digital. Entrada de datos en modo SPI. Lnea de datos en modo I2C

    RC5/SDO bit 5 E/S digital. Salida de datos en modo SPI

    RC6/TX/CK bit 6 E/S digital. Lnea de transmisin en USART. Seal de reloj sncrona en

    transmisin serie.

    RC7/RX/DT bit 7 E/S digital. Lnea de transmisin en USART. Lnea de datos en transmisin serie

    sncrona.

    Tabla 1

    INF

    ORMTICA

    61RESISTOR

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 61

  • 8/14/2019 Curso PIC16F87X 4

    7/8

    das con las entradas digitales.Cuando se seleccionan las entra-das analgicas los bit de controldel TRISE deben ponerse a 0.

    Nota.- Despus de un Power-on-Reset, estos pines quedanconfigurados como entradas ana-lgicas. Las funciones multiple-

    xadas de los bit del PORTD sonlas siguientes:

    Para aclarar el concepto delmanejo de los puertos vamos a

    Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en

    POR,BOR el resto

    de Reset

    08 h PORTD RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0 xxxx xxxx uuuu uuuu

    88 h TRISC Registro de direccionamiento del PORTC 1111 1111 1111 1111

    89 h TRISE IBF OBF IBOV PSPMODE -- Registro de 0000 111 0000 -111

    direccionamiento

    del PORTELeyenda: x = desconocido, u = inalterado; Las celdas sombreadas no son usadas por el PORTD

    RELACIN DE REGISTROS RELACIONADOS CON EL PORTD

    Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en

    POR,BOR el resto

    de Reset

    09 h PORTE --- --- --- --- --- RE2 RE1 RE0 ---- -xxx ---- -uuu

    89 h TRISE IBF OBF IBOV PSPMODE --- Registro de

    direccionamiento

    del PORTE

    97 h ADCON1 ADFM --- --- --- PCFG3 PCFG1 PCFG0 --0- 0000 --0- 0000

    Leyenda: x = desconocido, u = inalterado; - = no implementado se lee como 0. Las celdas sombreadas no son usadas por el PORTE

    RELACIN DE REGISTROS RELACIONADOS CON EL PORTE

    Nombre Bit Funcin

    RE0/#RD/AN5 Bit 0 E/S digital. Seal de lectura en el modo de puerta paralelo esclava. Canal 5 del

    Conversor A/D

    RE1/WR#/AN6 Bit 1 E/S digital. Seal de escritura PSP. Canal 6 del Conversor A/D

    RE2/CS#/AN7 Bit 2 E/S digital. Seal de Chip Select en el modo PSP. Canal 7 del Conversor A/D

    Descripcin del registro TRISE

    " " "R-0x R-0 R/W-0 R/W-0 U-1 R/W-1 R/W-1 R/W-1

    IBF OBF IBOV PSPMODE --- Bit2 Birt1 Bit0

    Bit 7 Bit 0

    bit 7: IBF: Flag de buffer de entrada lleno1 = Una palabra se ha recibido y esta esperando a ser le da por la CPU0 = No se ha recibido ninguna palabra

    bit 6: OBF: Flag de buffer salida lleno1 = El buffer de salida todava tiene la palabra previamente escrita0 = El buffer de salida ha sido le do

    bit 5 IBOV: La entrada de desbordamiento de buffer de entrada detecta bit ( en modomicroprocesador).1 = Se ha producido una escritura antes de que la palabra de entrada se haya le do (debe ponerse a ceropor software).0 = No ha ocurrido desbordamiento

    bit 4: PSPMODE: bit de seleccin de modo de Puerto Paralelo Esclavo1 =Seleccionado el modo puerto paralelo esclavo0 = Seleccionado el modo de E/S digital de propsito general

    bit 3 :No implementado se lee como "0"bit 2 :Bit2:bit de seleccin del modo de direccionamiento del pin RE2/CS#/AN71 = Entrada0 = Salida

    bit 1: Bit1: bit de seleccin del modo de direccionamiento del pin RE1 /WR#/AN61= Entrada0 = Salida

    bit 0: Bit0: bit de seleccin del modo de direccionamiento del pin RE0/RD#/AN51 = Entrada0 = Salida

    MICROCONTROLADORES

    62RESISTOR

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 62

  • 8/14/2019 Curso PIC16F87X 4

    8/8

    realizar un sencillo ejercicio queconsiste en la lectura de unosinterruptores conectados alPORTA y la representacin dedicho valor binario en hexadeci-mal sobre un display de 7 seg-mentos conectado en el PORTB.

    El circuito de aplicacin es elque se muestra en la Figura 5. Elprograma est diseado paraaquellos que utilicen el bootloa-der con el circuito que presenta-mos en el nmero anterior o unprogramador con el IC-PROG,

    tal y como est es valido paralos primeros y si se quitan los ";",se puede cargarse directamenteutilizando cualquiera de losdems programadores, estaslneas las hemos marcado enazul.

    ;**********************************************************************************; Programa Display.asm Fecha : 27- Enero-2003; Este programa lee el estado de cuatro interruptores conectados al PORTA ; y representa sobre un display conectado al PORTB, el valor hexadecimal correspondiente; Revisin 0.0 Programa para PIC16F87X; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS; Perro Guardin :deshabilitado Tipo de Reloj : XT; Proteccin del cdigo : OFF;**********************************************************************************

    List p=16F876 ;Tipo de procesadorinclude "P16F876.INC" ;Definiciones de registros internos;__config _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_ON & _CPD_OFF & _LVP_OFF & _XT_OSC & _WDT_OFF; org 0x00 ;Vector de Reset; goto Inicio

    org 0x05INICIO clrf PORTB ;Borra los latch de salida

    bsf STATUS,RP0 ;Selecciona banco 1clrf TRISB ;Puerta B se configura como salidamovlw b'00000110' ;Configura PORTA como E/S Digitalesmovwf ADCON1movlw b'00001111' ;Configura RA3:RA0 como entradasmovwf TRISAbcf STATUS,RP0 ;Selecciona banco 0

    BUCLE movf PORTA,Wandlw b'00001111' ;Lee el cdigo de RA0-RA3call Tabla ;Convierte a 7 segmentosmovwf PORTB ;Visualiza sobre el displaygoto BUCLE

    ;**********************************************************************************Tabla: addwf PCL,F ;Desplazamiento sobre la tabla

    retlw b'00111111' ;Dgito 0retlw b'00000110' ;Dgito 1

    retlw b'01011011' ;Dgito 2retlw b'01001111' ;Dgito 3retlw b'01100110' ;Dgito 4retlw b'01101101' ;Dgito 5retlw b'01111101' ;Dgito 6retlw b'00000111' ;Dgito 7retlw b'01111111' ;Dgito 8retlw b'01100111' ;Dgito 9retlw b'01110111' ;Dgito Aretlw b'01111100' ;Dgito bretlw b'00111001' ;Dgito Cretlw b'01011110' ;Dgito dretlw b'01111001' ;Dgito Eretlw b'01110001' ;Dgito F

    ;**********************************************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto INICIOend

    Vcc= 5V

    MCLR

    RA0

    RA1RA2

    RA3

    RA4

    RA5

    RA0

    RA1

    RA2

    RA3

    Vss

    OSC1

    OSC2/CKOUT

    RC0RC1RC2RC3

    RB7

    RB6

    RB5

    RB4RB3RB2RB1RB0

    VDD

    VSS

    RC7RC6RC5RC4

    Reset

    R110K

    R2 100

    R310K

    R410K

    R510K

    R610K

    R7 300

    R8 300

    R9 300

    R10 300

    R11 300

    R12 300

    a

    b

    c

    d

    e

    a

    b

    c

    d

    e

    f

    g

    f

    g

    R13 300

    Vcc=5V

    C1 27 pF

    C2 27 pF

    XT 4Mhz

    Figura 5.- Circuito de aplicacin del programaDisplay.asm utilizando el PIC 16F876.

    Curso microcontroladoresPAGS 21/1/04 10:14 Pgina 63