Monografias.com > Computación > General
Descargar Imprimir Comentar Ver trabajos relacionados

Laboratorio de microcontroladores




Enviado por cagase



    Codificador decimal
    binario

    1. Justificación
    2. Descripción del
      problema
    3. Organización de la
      memoria del pic16c(f)84
    4. Memoria de
      programa
    5. Memoria de datos del
      pic16c(f)84
    6. Descripción de la
      solución
    7. Diagrama de flujo del
      algoritmo
    8. Conclusiones

    JUSTIFICACIÓN

    Los microcontroladores son circuitos
    integrados que poseen todas las características de un computador
    completo. Puede ser programado para que cumpla una tarea
    determinada a muy bajo costo. Un ejemplo
    de ellos es el famoso PIC16F84 de la familia
    PIC16F8X.

    El PIC16F8X es un grupo en la
    familia
    PIC16CXX de bajo costo, alto rendimiento, CMOS de 8 bit entre
    otras cosas. Este grupo de PIC consta de los siguientes
    dispositivos: PIC16F83, PIC16F84, PIC16CR83 y el PIC16CR84. Todos
    los microcontroladores emplean una avanzada arquitectura
    RISC.

    Las extensas áreas de aplicación de estos
    microcontroladores exigen un gigantesco trabajo de diseño
    y fabricación. Aprender a manejar y aplicar
    microcontroladores sólo se consigue desarrollando
    tácticamente diseños reales, tal como es nuestro
    caso un codificador decimal binario.

    Este laboratorio
    nos permite desarrollar la programación del pic 16f84 bajo lenguaje
    assembler con sus respectivas instrucciones, lo cual es de gran
    importancia en el mundo de la programación debido a su
    aplicabilidad en distintos campos y sobre todo en el
    industrial.

    OBJETIVOS

    Aplicar los conceptos fundamentales aprendidos en la
    asignatura microprocesadores.

    Diseñar el algoritmo que
    permita convertir un número decimal a binario utilizando
    el pic 16f84.

    Comprender el funcionamiento de los simuladores
    SIMUPIC y MPLAB.

    DESCRIPCIÓN
    DEL PROBLEMA

    Con el desarrollo de
    la tecnología, se introduce en la
    programación la aplicación de los pic, los cuales
    funcionan como un computador, que se programa para que
    cumpla una función
    específica.

    El microcontrolador PIC16C(F)84, Es un microcontrolador
    de 18 pines, de 8 bits con tecnología CMOS. La
    razón porque se ha elegido este tipo de microcontrolador
    se debe al tipo de memoria de
    programa que posee. En el caso del PIC 16F84 se trata de una
    memoria EEPROM de 1K palabras de 14 bits cada una. El PIC 16F84
    tiene la misma capacidad de memoria de instrucciones, pero de
    tipo flash. Ambos
    disponen de 64 bytes de EEPROM como memoria de datos auxiliar y
    opcional.
    La memoria
    EEPROM y la Flash son eléctricamente gravables, lo que
    permite escribir y borrar el programa bajo prueba manteniendo el
    microcontrolador en el mismo zócalo y usando el mismo
    dispositivo para grabar y borrar. Esta característica
    supone una gran ventaja con la mayoría de los
    microcontroladores, que tienen como memoria de programa
    reescribible una tipo EPROM. Estas se graban
    eléctricamente, pero para borrarlas hay que someterlas
    durante cierto tiempo a rayos
    ultravioleta, lo que implica sacar del zócalo el circuito
    integrado y colocarlo en un borrador de EPROM. El hecho de
    utilizar una memoria flash es porque tiene mayores posibilidades
    de aumentar su capacidad con relación a la EEPROM.
    También por su mayor velocidad y
    menor consumo. La
    memoria EEPROM es capaz de soportar 1.000.000 de ciclos de
    escritura /
    borrado, frente a los 1.000 de la Flash.

    HOJA CARACTERÍSTICA DE LOS
    PIC16C(F)84:

    MEMORIA DE PROGRAMA: 1K x 14, EEPROM (16C84) Y Flash
    (16F84)
    MEMORIA DE DATOS RAM: 36 Byte
    (16C84) y 68 Byte (16F84)
    MEMORIA DE DATOS EEPROM: 64 Byte para ambos modelos
    PILA (STACK): De 8 niveles
    INTERRUPCIONES: 4 tipos diferentes
    SET DE INSTRUCCIONES: 35
    ENCAPSULADO: 18 PINES
    FRECUENCIA DE TRABAJO: 10 Mhz máxima
    TEMPORIZADORES: TMR0 y WDT
    LINEAS DE E/S DIGITALES: 13 (5 Puerto A y 8 Puerto B)
    CORRIENTE MÁXIMA ABSORBIDA: 80 mA Puerto A y 150 mA Puerto
    B
    CORRIENTE MÁXIMA SUMINISTRADA: 50 mA Puerto A y 100 mA
    Puerto B
    CORRIENTE MÁXIMA ABSORBIDA POR LINEA: 25 mA
    CORRIENTE MÁXIMA SUMINISTRADA POR LINEA: 20 mA
    VOLTAJE DE ALIMENTACIÓN (Vdd): De 2 a 6V DC
    VOLTAJE DE GRABACIÓN (Vpp): De 12 a 14V DC

    DIAGRAMA DE PINES DEL PIC16C(F)84:

    Vdd: Pin por el cual se aplica la tensión
    positiva de Alimentación
    Vss: Pin utilizado para la conexión de tierra
    OSC1 / CLKIN: Pin por el cual se aplica la entrada del circuito
    oscilador externo que proporciona la frecuencia de trabajo al
    Microcontrolador
    OSC2 / CLKOUT: Pin auxiliar o de salida del circuito
    oscilador.
    MCLR# / Vpp: Este pin se activa con un cero (0) lógico,
    cada vez que se necesite reinicializar o Resetear al
    Microcontrolador.
    Este Pin también se usa durante la grabación de la
    memoria de programa para introducir por ella la tensión,
    Vpp (voltaje pico a pico de grabación), que esta
    comprendida entre 12 y 14V DC.
    RA0 – RA4: Son los 5 Pines de E/S digitales correspondientes al
    Puerto A.
    El Pin RA4 es de colector abierto lo que significa que cuando es
    utilizado como salida hay que colocarle una resistencia a Vcc
    (5V DC).

    El pin 3 además de ser el bit mas significativo
    del Puerto A, Multiplexa otra función expresada por TOCKI.
    En este caso sirve para recibir una frecuencia externa para
    alimentar al temporizador interno TMR0.
    RB0 – RB7: Estos 8 pines corresponden a los 8 bits de E/S
    digitales del Puerto B.
    El Bit RB0 Multiplexa otra función, que es la de servir
    como entrada a una petición externa de
    interrupción, por eso se le denomina RB0/INT.

    ORGANIZACIÓN DE LA MEMORIA DEL
    PIC16C(F)84

    En este Microcontrolador hay dos bloques de Memorias,
    estos son la memoria de Programa y la Memoria de Datos. Cada
    bloque tiene su propio bus, por lo cual el acceso
    para cada bloque puede ocurrir durante el mismo ciclo del
    oscilador. La Memoria de datos (RAM) se divide en registros de
    propósito general (GPR) y registros de Funciones
    especiales (SFR). Los registros SFR tienen como operación
    principal controlar el núcleo del microcontrolador y
    módulos periféricos y los de Propósito
    General (GPR) son registros que el programador declara a su
    conveniencia para utilizarlos en alguna parte de un programa.
    La Memoria de Programa es de 1K x 14 bits de tipo EEPROM para el
    PIC16C84 y de tipo Flash para el PIC16F84. Además el
    PIC16C84 tiene 36 Bytes disponibles en la memoria de datos RAM en
    la zona de los registros de propósito general y el
    PIC16F84 tiene 68 Bytes.

    MEMORIA DE
    PROGRAMA

    Los microcontroladores PIC16C84 y PIC16F84, admiten un
    mapa de memoria de programa capaz de contener 8.192 instrucciones
    de 14 bits cada una. Este mapa se divide en páginas de
    2.048 posiciones. Para direccionar 8 K posiciones se necesitan 13
    bits, que es la longitud del Contador de Programa de estos dos
    microcontroladores (PC). Sin embargo, el PIC16C84 sólo
    tiene implementadas 1K posiciones, por lo que ignora los 3 bits
    de más peso del PC. Esto es debido a: 1K=1024 Byte= 2 .
    Por lo tanto solo se tienen 10 líneas de dirección para accesar a una palabra de
    memoria.

    La dirección 0000H esta reservada para el vector
    de Reset y la 0004H para el vector de interrupción.
    Además posee una pila de 8 niveles que permiten el
    anidamiento de subrutinas.
    Es importante destacar que cada Microcontrolador posee una
    memoria de Programa especifica.

    MEMORIA DE DATOS
    DEL PIC16C(F)84

    Esta memoria dispone de dos zonas diferentes las cuales
    son:
    Area de RAM estática o
    SRAM: Es aquella donde residen los registros de funciones
    especificas (SFR) y los registros de propósito general
    (GPR). El primero tiene 24 posiciones de 1 byte cada una, aunque
    dos de ellas no son operativas, y el segundo 36 en el caso del
    PIC16C84 y 68 en el PIC16F84.
    Area EEPROM de 64 bytes: Esta se utiliza opcionalmente cuando se
    necesitan almacenar datos que deben mantenerse cuando la
    alimentación se desconecte.

    La Memoria SRAM se divide en dos bancos (banco 0 y banco
    1) en el caso de los microcontroladores PIC16C(F)84 de 128 bytes
    cada uno. En el PIC16C84 sólo se hallan implementadas
    físicamente las 48 primeras posiciones de cada banco, de
    las cuales las 12 primeras están reservadas para los
    registros SFR, que son los encargados del control del
    procesador y sus
    recursos. Algunos
    de dichos registros se hallan repetidos en la misma
    dirección de los dos bancos, para simplificar su acceso
    (INDF, ESTADO(STATUS), FSR, PCLATH E INTCON). Los 36
    registros restantes en el caso del PIC16C84 y los 68 en el
    PIC16F84 de cada banco están destinados a los registros
    GPR y en general solo son operativos los 36 o 68 del banco 0
    porque los del banco 1 se mapean sobre el banco 0, es decir,
    cuando se apunta a un registro general
    del banco 1, se accede al mismo del banco 0.

    Conociendo ya un poco el pic 16f84 se plantea el
    siguiente interrogante.

    ¿ Cómo convertir un número decimal
    a binario utilizando el pic 16f84?

    DESCRIPCIÓN
    DE LA SOLUCIÓN

    Para convertir un número de decimal a binario
    empleando el pic 16f84 se siguieron los siguientes
    pasos:

    Se realizó el diagrama de flujo
    que visualizara la solución del problema.

    Se realizó el algoritmo y se codificó en
    lenguaje assembler utilizando las instrucciones para el pic
    16f84:

    Movf f,d: mueve el registro f al registro de
    trabajo

    Movwf f,d: mueve el contenido del registro de
    trabajo al registro destino.

    Call k: llamar subrutina.

    Btfsc f,b: probar bit b del registro f, saltar si
    es cero.

    Bsf f,b: activar bit b de f

    Bcf f,b: limpiar bit b de f.

    Movlw k: carga el registro de trabajo w con el
    literal k.

    Return: retorna al programa principal
    después de ejecutarse una rutina.

    Goto k: salta a la dirección k.

    Se simuló el programa el simulador SIMUPIC, para
    verificar posibles errores.

    Se hizo el quemado del pic 16f84 a través del
    simulador MPLAB.

    Se comprobó el funcionamiento del pic 16f84 en el
    protoboart.

    Se diseñó el circuito y se monto en la
    plaqueta, utilizando los siguientes elementos:

    pic 16f84.

    cristal de 4000 hz.

    Resistencias.

    bateria de 9 voltios.

    convertidor de corriente.

    Leds.

    Cables.

    Switches.

    DIAGRAMA DE FLUJO
    DEL ALGORITMO

    Para ver el gráfico seleccione la
    opción "Descargar" del menú
    superior 

    CÓDIGO FUENTE

    LIST p=16F84 ;designación del PIC

    RADIX HEX ;se selecciona el sistema
    hexadecimal

    ;se declaran las etiquetas

    PORTA EQU 0X05 ;porta queda identificada con la
    dirección 05

    PORTB EQU 0X06 ;portb queda identificada con la
    dirección 06

    STATUS EQU 0X03 ;status queda identificado con la
    dirección 03

    W EQU 0 ;W se identifica con el valor
    0

    ;PROGRAMA PRINCIPAL

    ORG 0 ;el programa inicia en la dirección
    0

    goto INICIO ;salta a la dirección 5 para
    sobrepasar el vector de interrupción

    ORG 5 ;vector de interrupción

    INICIO bsf STATUS,5 ;selección
    del banco 1

    movlw b'11111111' ;se carga w

    movwf 0x06 ;se configura portb como entrada

    movlw b'00000' ;se carga w

    movwf 0x05 ;se configura porta como salida

    bcf STATUS,5 ;selección del banco 0

    clrf PORTA ;se inicializa con 0 porta

    clrf PORTB ;se inicializa con 0 portb

    NÚMEROS

    movf PORTB,0 ;se lee portb y se guarda en w

    btfsc PORTB,0 ;salta una instrucción si rb0
    contiene un 0

    call UNO ;llamado de la rutina UNO

    btfsc PORTB,1 ;salta una instrucción si rb1
    contiene un 0

    call DOS ;llamado de la rutina DOS

    btfsc PORTB,2 ;salta una instrucción si rb2
    contiene un 0

    call TRES ;llamado de la rutina TRES

    btfsc PORTB,3 ;salta una instrucción si rb3
    contiene un 0

    call CUATRO ;llamado de la rutina CUATRO

    btfsc PORTB,4 ;salta una instrucción si rb4
    contiene un 0

    call CINCO ;llamado de la rutina CINCO

    btfsc PORTB,5 ;salta una instrucción si rb5
    contiene un 0

    call SEIS ;llamado de la rutina SEIS

    btfsc PORTB,6 ;salta una instrucción si rb6
    contiene un 0

    call SIETE ;llamado de la rutina SIETE

    goto NÚMEROS ;salto incondicional

    ;RUTINAS PARA VISUALIZAR

    UNO movlw b'00001' ;se carga w con el binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    DOS movlw b'00010' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    TRES movlw b'00011' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    CUATRO movlw b'00100' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    CINCO movlw b'00101' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    SEIS movlw b'00110' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    SIETE movlw b'00111' ;se carga w con binario

    movwf PORTA ;se visualiza en porta el valor
    binario

    return ;se retorna a donde se hizo el llamado

    END ;fin del programa

    Para
    ver el gráfico seleccione la opción
    "Descargar" 

    CONCLUSIONES

    La educación es un
    proceso
    interminable, puesto que cada día se aprende cosas nuevas
    o se actualizan las ya conocidas o aprendidas, es decir, que
    la
    educación es un proceso permanente, por eso debemos
    estar in con las tecnologías del momento y preparado para
    recibir las nuevas.

    Por lo expresado anteriormente la elaboración de
    este proyecto nos
    sirve para comprender un poco más la teoría
    de los microcontroladores y su aplicación ; de ahí
    la importancia del mismo, pues a través de él se
    puede apreciar lo interesante que es la programación en
    nuestra vida cotidiana.

     

     

     

    CARLOS GARCÍA SEÑA

    JOSÉ CANCHILA MEDINA

    JORGE MORENO MERCADO

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter