Pic Microcontroladores(Ejemplos Interesantes)

download Pic Microcontroladores(Ejemplos Interesantes)

of 88

Transcript of Pic Microcontroladores(Ejemplos Interesantes)

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    1/88

    MICROCONTROLADORE

    POR: HUGO ALBERTO MURILLO

    UNIVERSIDAD EAFITDEPARTAMENTO DE INGENIERIA DDISEO DE PRODUCTOMEDELLIN2002

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    2/88

    TABLA DE CONTENIDO

    1. INTRODUCCIN

    2. CONCEPTOS BSICOS 23. COMPUERTAS LGICAS 74. FUNCIONES LGICAS CON BYTES 95. CIRCUITO COMBINACIONAL 106. LATCHES 137. FLIP-FLOP 138. MEMORIAS 169. ARITMTICA BINARIA 2110. INTRODUCCIN AL MICROCONTROLADOR 23

    11. EXPLICACIN DEL REGISTRO STATUS 2712. SINTAXIS DE LAS INSTRUCCIONES 3013. DIRECTIVAS PARA HACER UN PROGRAMA EN MICROCONTROLADOR 14. EJEMPLOS SENCILLOS DE DIAGRAMAS DE FLUJO 3315. CONFIGURACIN DE LOS PUERTOS 3716. EJEMPLOS SENCILLOS CON ENTRADAS Y SALIDAS DE DATOS 317. RETARDOS 4018. MANEJO DE SUBRRUTINAS 4419. EJEMPLO UTILIZANDO RETARDOS 4520. GENERACIN DE TONOS CON MICROCONTROLADORES 4621. MOTORES PASO A PASO 4822. EJEMPLO DE MANEJO DEL MOTOR PASO A PASO 4923. EXPLICACIN DE LAS INSTRUCCIONES DE ROTACIN 5224. MANEJO DE DISPLAY 7 SEGMENTOS Y ANTIREBOTE 5525. TRABAJOS CON PULSADORES 5726. EJEMPLO CON MANEJO DE DISPLAY 5927. MULTIPLEXAJE DE DISPLAY 6128. EJEMPLO DE MULTIPLEXAJE 6429. INTERRUPCIONES 6630. EJEMPLO UTILIZANDO INTERRUPCION POR RB0 7031. CONVERSOR ANALOGO / DIGITAL (A/D) 7332. EJEMPLO DE CONVERSOR ANLOGO DIGITAL 7733. COMUNICACIN SERIAL 7934. EJEMPLO COMUNICACIN SERIAL 83

    BIBLIOGRAFIA

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    3/88

    1 INTRODUCCIN

    La gua de microcontroladores fue hecha pensando bsicamente en que losestudiantes cuenten con un material escrito que les sirva de alguna manera comomedio de consulta, en las diferentes practicas y proyectos que enfrentaran durante elcurso.

    Inicialmente explica los conceptos bsicos, como sistemas de numeracin, compuertaslgicas, flip flop, memorias y aritmtica binaria. Luego explica el microcontroladPIC16F873.

    Los ejemplos que se desarrollan en esta gua son relativamente sencillos, yseguramente no siempre ser la mejor manera de hacerlos, es solo una, entre varias

    posibilidades.Agradezco el trabajo y el gran apoyo de los estudiantes Mnica Andrea Lpez, EstebanGonzlez y Paulina Fernndez, que ayudaron en la edicin de esta gua.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    4/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 2

    2. CONCEPTOS BSICOS:

    Antes de comenzar el estudio de los Microcontroladores se estudiarn algunosconceptos importantes para comprender bien el funcionamiento de los

    Microcontroladores.SISTEMAS DE NUMERACIN

    BINARIO 27 26 25 24 23 22 21 20

    DECIMAL ...........103 102 101 100 HEXADECIMAL .............163 162 161 160

    2.1 Sistemas de Numeracin Decimal (BASE 10)

    Todos estamos familiarizados con el sistema decimal porque lo utilizamos da a da.El sistema decimal es un sistema de numeracin en base 10 porque los smbolosque existen para representar cualquier nmero son 10, de 0 a 9. Pero mas all derepresentar cualquier nmero es importante conocer el peso de cada dgito.Cuando se escribe un nmero decimal, cada dgito tiene un peso, por ejemplo:

    1 4 1 2

    Se puede decir que el nmero es igual a:

    1000 * (1) + 100 * (4) + 10 * (1) + 1 * (2)1000 + 400 + 10 + 2 = 1412

    Como se haba dicho antes cada bit tiene un peso y el sistema decimal, se puederepresentar:

    .....104 103 102 101 100

    y retomando el ejemplo1 4 1 2

    103 * (1) +102 * (4) + 101 * (1) + 100 * (2)1000 + 400 + 10 + 2 =1412

    Miles

    Decenas Unidades

    Centenas

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    5/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 3

    El valor de un nmero decimal es la suma de los dgitos despus de habermultiplicado cada dgito por su peso.

    2.2 Sistema de Numeracin Binario (BASE 2)En electrnica digital es uno de los sistemas de numeracin ms utilizados. Es tilporque solo utiliza dos dgitos, 1 y 0. Los dgitos binarios se utilizan para representarlos dos niveles de voltaje usados en electrnica digital ALTO O BAJO. En lamayora de los sistemas digitales el nivel de voltaje alto est representado por el 1,mientras que el nivel de voltaje bajo o cero voltios lo representa el 0. El 1 representael estado de encendido de un interruptor, de una luz o de un transistor, mientras queel estado apagado est representado por un 0.

    Solo se tiene dos dgitos para representar cualquier nmero en binario, todos los

    nmeros binarios solo tienen unos y ceros y su base es dos.Cuando se cuenta en binario se produce una situacin similar al sistema decimal,excepto que ahora solo se tiene dos dgitos, llamados bits. Empecemos a contar: 0,1. Hasta aqu, ya hemos usado los dos dgitos, por lo que incluimos otra posicin dedgito y continuamos 10,11, nuevamente agotadas todas las combinaciones de dosdgitos, por los que se requiere de una tercera posicin. Con tres dgitos se puedecontinuar contando 100, 101, 110 y 111, para continuar, necesitamos una cuartaposicin de dgito, y as sucesivamente.

    ........23 22 21 20

    Igual que en el sistema decimal cada dgito tiene un peso.

    La palabra bit es una contraccin de las palabras en Ingls binary digit (DgitoBinario). Cada posicin de un nmero binario se conoce como bit. El nmero 10110es un nmero de cinco bits. El primer lugar del extremo derecho recibe el nombre debit menos significativo (o LSB por sus siglas en Ingls), mientras que el lugar queest en el extremo izquierdo se conoce como bit ms significativo (MSB por sussiglas en Ingls).

    1 0 1 1 0

    MSB LSB1 palabra = 16 bits1 byte = 8 bits1 nible = 4 bits

    1 byte = 1 0 1 0 1 1 0 0

    Nible superior Nible inferior

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    6/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 4

    2.3 Sistema Hexadecimal (Base 16)

    Este sistema es en base 16, lo que significa que para cada columna es posibleescoger uno de entre 16 dgitos.

    Estos son: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E y F.

    Donde A = 10 D = 13B = 11 E = 14C = 12 F = 15

    Para contar en el sistema hexadecimal se inicia en la primera columna a la izquierday se cuenta de 0 hasta F, una vez que se llena la primera columna, se pone un 0 enella y se suma a la segunda columna.

    0 F10...

    1F2021

    .

    .

    .....163 162 161 160

    De igual manera que en el sistema decimal y binario cada dgito tiene un peso.

    Se suele poner una H al final del nmero para indicar que est representado en elsistema hexadecimal 17H

    2.4 Conversin de Binario a Decimal

    Para convertir un nmero binario en uno decimal, se hace la lista con los valores decada posicin y luego se suman los que corresponden a las posiciones donde hayun 1.

    Ejemplo1 0 1 0 124 23 22 21 20

    16 + 0 + 4 + 0 + 1=21

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    7/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 5

    2.5 Conversin de Decimal a Binario

    El numero decimal se divide repetidamente entre 2, ignorando los residuos, hastaque se tiene un cociente igual a cero. Despus se emplean stas para obtener la

    respuesta, por ejemplo convertir 10110 en su equivalente a binario.101 / 2 = 50 Residuo 1 LSB50 / 2 = 25 Residuo 025 / 2 = 12 Residuo 112 / 2 = 6 Residuo 06 / 2 = 3 Residuo 03 / 2 = 1 Residuo 11 / 2 = 0 Residuo 1 MSB

    RESPUESTA 1 1 0 0 1 0 12

    2.6 Conversin de Hexadecimal a Decimal

    Para convertir un nmero hexadecimal a decimal, se multiplica el valor de cadadgito por su correspondiente peso y luego se suman todos los valores.

    2B616 decimal ?

    162 161 160 2 B 6

    2* 256 + 11 * 16 + 6 * 1 = 694

    2.7 Conversin de Binario a Hexadecimal

    Ntese que cuatro bits binarios corresponden a un dgito hexadecimal. Esto es, serefieren cuatro bits para contar de 0 hasta F. Para representar nmeros binarioscomo nmeros hexadecimales, se forman grupos de cuatro comenzando en el puntobinario y en direccin a la izquierda. A continuacin se convierte cada grupo en elcorrespondiente dgito hexadecimal.

    Convertir 10111100 en un numero hexadecimal1011 1100

    B C

    10111100 = BC16

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    8/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 6

    2.8 Conversin de Hexadecimal a Binario

    La conversin de hexadecimal a Binario es igual de sencilla, por cada dgitohexadecimal se escriben los dgitos binarios correspondientes.

    FF16 Binario ?

    F F1111 1111

    FF16 = 11111111

    2.9 Decimal codificado en Binario: (BCD)

    En BCD cada dgito decimal esta representado por cuatro bits.

    0.00001.0001...9.1001

    para representar el 25 decimal en BCD

    0010 0101

    2 5

    2.10 Representacin de los nmeros de 0 a 15

    DECIMAL BINARIO HEXADECIMAL BCD0 0000 0 00001 0001 1 00012 0010 2 00103 0011 3 00114 0100 4 01005 0101 5 01016 0110 6 01107 0111 7 01118 1000 8 10009 1001 9 100110 1010 A 0001 000011 1011 B 0001 0001

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    9/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 7

    A X

    A X

    12 1100 C 0001 001013 1101 D 0001 001114 1110 E 0001 010015 1111 F 0001 0101

    3. COMPUERTAS LGICAS

    3.1 Compuerta AND: La compuerta AND genera una salida ALTO solo cuandotodas las entradas estn en nivel ALTO.

    X = A * B

    3.2 Compuerta OR: La compuerta OR genera un nivel alto a la salida cuandocualquiera de sus entradas estn en nivel ALTO.

    X = A + B

    3.3 Compuerta NOT O INVERSOR:El inversor cambia el nivel lgico de lasalida al opuesto de la entrada, cambia un 1 por 0, y un 0por 1.

    X = A

    X = A

    El indicador de negacin es un circulo que indica inversin, cuando apareceen la entrada o en la salida de un elemento lgico.

    A B X0 0 00 1 01 0 01 1 1

    A B X0 0 00 1 1

    1 0 11 1 1

    A X0 11 0

    XAB

    XAB

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    10/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 8

    3.4 Compuerta NAND:el termino NAND es una contraccin de NOT-AND, eimplica una funcin AND con la salida negada.

    = =

    X = A * B

    La compuerta NAND genera una salida a nivel bajo solo cuando todas las entradasestn a nivel alto.

    Cuando cualquiera de las entradas est a nivel bajo, la salida se pondr a nivelALTO.

    3.5 Compuerta NOR:el termino NOR es una contraccin de NOT-OR e implica

    una funcin OR con la salida invertida.

    =

    X = A + B

    La compuerta NOR genera una salida a nivel bajo cuando cualquiera de las entradasesta a nivel alto.

    3.6 Compuerta (XOR) OR Exclusiva:la salida se pone a nivel ALTO solocuando las dos entradas estn a niveles lgicos opuestos.

    X = AB + AB

    3.7 Compuerta (XNOR) NOR EXCLUSIVA: el smbolo de la compuerta XNORindica que su salida es opuesta a la de la compuerta XOR.

    X = AB + A.B

    La salida se pone a nivel ALTO solo cuando las dos entradas estn a niveles lgicosiguales.

    A B X0 0 10 1 11 0 11 1 0

    A B X0 0 10 1 01 0 01 1 0

    A B X0 0 00 1 11 0 11 1 0

    A B X0 0 10 1 01 0 01 1 1

    XAB

    XAB

    XAB

    XAB

    XAB

    XAB

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    11/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 9

    4. FUNCIONES LOGICAS CON BYTES

    As como se forman compuertas lgicas con bits tambin es posible hacer funcioneslgicas con bytes.

    AND 1 0 1 1 0 1 1 10 0 0 0 1 1 1 10 0 0 0 0 1 1 1

    OR 1 0 1 1 0 1 1 11 1 1 1 0 1 1 01 1 1 1 0 1 1 1

    XOR 1 0 1 0 1 1 1 11 0 1 0 1 1 0 00 0 0 0 0 0 1 1

    5. CIRCUITO COMBINACIONAL

    El circuito combinacional es un circuito cuya funcin de salida esta determinada porel estado de las entradas. Se soluciona mediante compuertas lgicas.

    Se analizarn algunos circuitos combinados con su respectiva funcin de salida, enlas que, conociendo que estado tiene las entradas se puede saber el estado de lasalida.

    X = A * B + A * B

    La salida es uno si A = 1 y B = 0, si A = 1 y B = 1

    El numero de posibles combinaciones de un circuito combinacional estarepresentado por 2n ; donde n significa el numero de entradas.

    Por ejemplo un circuito combinacional con 3 entradas puede tener 8 posiblescombinaciones:

    23 = 8

    X

    AB

    AB

    XOR: sirve para determinar si dos bytesson iguales, en ese caso el resultado de laXOR ser cero (0).

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    12/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 10

    5.1 Diseo de un circuito combinacional

    Problema:

    Las acciones de una sociedad estn distribuidas de la siguiente manera:El socia A tiene el 22% de las acciones, el socio B el 20%, el socio C el 27% y elsocio D el 31%. Cada decisin que toma la junta directiva compuesta por los cuatrosocios, ser aprobada con el 51% como mnimo del porcentaje total de las acciones.Cada votacin de un socio es asumida como aceptada 1 y como no aceptada 0.

    Se pide disear el circuito, que nos indique encendiendo un bombillo, cuando lapropuesta fue aceptada.

    Pasos para el diseo de un circuito combinacional

    1. Entender bien el problema.

    2. Hacer la tabla de verdad. El numero de entradas determina el numero deposibles combinaciones de la tabla de verdad con la formula 2n , donde n esel numero de entradas.

    En este caso cada socio representa una entrada, por los tanto el numero deposibles combinaciones es 24 = 16

    22%

    A

    20%

    B

    27%

    C

    31%

    DSALIDA

    0 0 0 0 00 0 0 1 00 0 1 0 00 0 1 1 1 A B C D0 1 0 0 00 1 0 1 1 A B C D0 1 1 0 00 1 1 1 1 A B C D1 0 0 0 01 0 0 1 1 A B C D1 0 1 0 01 0 1 1 1 A B C D1 1 0 0 01 1 0 1 1 A B C D1 1 1 0 1 A B C D1 1 1 1 1 A B C D

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    13/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 11

    3. Sacar la funcin de salida, hay dos formas:

    Minterminos: (Suma de Productos)Tiene en cuenta solo los casos en que la salida es 1 y cada salida se

    separa por una OR.Maxterminos: (productos de sumas)Tiene en cuenta solo los casos en que la salida en cero 0 y cada salidase separa por una AND.

    En el ejemplo que se est solucionando se trabajar con los minterminos.La funcin de salida queda as:

    Sal = ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD + ABCD

    4. Simplificacin: Existen dos formas para simplificar un circuito combinacional,por:Mapas de Karnaughlgebra Booleana

    Mapas de Karnaugh: se procede de la siguiente manera:

    a) Se dibuja el mapa de Karnaugh con el numero de celdas igual al numerode combinaciones de la tabla de verdad. A cada celda le corresponde unasalida.

    NOTA: se debe tener en cuenta que entre celda y celda solo puede cambiaruna variable.

    CDAB 00 01 11 10

    00011110

    b) Se llena el mapa de Karnaugh con las salidas de la tabla de verdad. Acada salida le corresponde una celda y cada celda corresponde a unacombinacin de la tabla de verdad.Se debe ubicar inicialmente las combinaciones en que la salida es 1 yluego los espacios restantes se llenan con ceros o.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    14/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 12

    CDAB 00 01 11 10

    00 0 0 1 001 0 1 1 011 0 1 1 110 0 1 1 0

    c) Se renen en grupos de 1, 2, 4, 8 o 16 unos que sean adyacentes.

    Nota: Dos celdas son adyacentes si entre una y otra solo cambia unavariable. Una celda es adyacente con cualquiera de sus lados, Izquierda,derecha, arriba o abajo.Se debe tratar de tener la menor cantidad de grupos con el mayor numerode unos (1) posible. Un 1 puede pertenecer a varios grupos.

    CDAB 00 01 11 10

    00 0 0 1 001 0 1 1 011 0 1 1 110 0 1 1 0

    d) Se elimina de cada grupo las variables variables que cambian de estado.

    e) Se unen las funciones simplificadas con una compuerta OR.

    Sal = BD + AD + CD + ABCLa solucin final al circuito combinacional es:

    Socios A B C D

    BD

    AD CD

    ACD

    Salida

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    15/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 13

    NO CAMBIA

    ESTADO PROHBIDO

    R

    S

    Q

    Q

    6. LATCHES

    Es un dispositivo biestable que almacena informacin binaria (1 bit).

    Latch S R (Set - Reset)

    Latch S R con entrada activa a nivel bajo.

    El latch tiene dos entradas R (Reset) poner a cero, y S (Set) pone a uno y dos

    salidas Q y Q. Cuando la salida Q esta a nivel alto, el latch se encuentra en estadoSET y permanecer indefinidamente en l hasta que se aplique un nivel en laentrada R.

    Por ejemplo para encender un motor con una estacin Start/ Stop, se enciende conel Start y permanece encendido hasta que se oprima el pulsador de Stop.

    7. FLIP FLOP:Los flip-flop son dispositivos biestables sincrnicos. En este caso sincrnico significaque la salida varia de estado nicamente en un instante especfico de una entradade disparo denominada reloj (clock).

    Un flip-flop disparado por flanco cambia de estado con el flanco positivo (flanco desubida) o con el flanco negativo (flanco de bajada) del pulso de reloj.

    S R Q0 00 1 01 0 11 1

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    16/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 14

    NO CAMBIA

    RESET

    SET

    ESTADO PROHIBIDO

    Flip Flop S-R

    Tabla de Verdad

    Ck S R Q

    X 0 0 Q

    0 1 0

    1 0 1

    1 1 ?

    Flip Flop Tipo D

    El flip-flop tipo D resulta muy til cuando se necesita un nico bit de datos (1 0 0) sise aade un inversor a un flip flop S R obtenemos un flip flop D bsico.

    D Ck Q

    1 1

    0 0

    Existen otros tipos de flip-flop que no se tratarn en el curso tales como: Flip FlopJK y Tipo T.

    Para implementar circuitos con flip flops existen circuitos integrados con diferentestipos de flip-flops.

    En ste caso se trabajaran con el circuito integrado 74LS74 que es un flip flop tipoD con entradas de preset y clear; se trabajar como latch S R y como flip floptipo D.Adems se trabajar con el circuito integrado 74LS374, este circuito contiene 8 flip flop tipo D, es decir un byte con un reloj comn.

    A continuacin se muestran los circuitos de aplicacin.

    Flanco deSubida Flanco deBajada

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    17/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 15

    1K

    1K

    PRIMER CIRCUITO

    Como flip/flop set - reset

    Como flip/flop tipo D

    74LS 74

    1K

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    18/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 16

    2

    01

    300 1 2 3 4 5 6 7

    Direccin

    Bits

    8. MEMORIAS

    Las memorias son unos dispositivos de almacenamiento de datos binarios quepueden ser de largo plazo o corto plazo.Como regla general, las memorias almacenan datos en unidades que tienen de unoa ocho bits. En muchas aplicaciones se tratan los datos en unidades de 8 bits,denominado byte.Una memoria esta compuesta por una gran cantidad de latches, formando unamatriz.

    1K

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    19/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 17

    Cada elemento de almacenamiento en una memoria puede almacenar un 1 un0 y se le denomina celda. Las memorias estn formadas por matrices de celdas.Cada bloque de la matriz de memoria representa una celda de almacenamiento y susituacin se puede especificar mediante una fila y una columna.

    La matriz de 4 x 8, se puede entender como una memoria de 32 bits o como unamemoria de 4 bytes.La posicin de una unidad de datos en una matriz de memoria se denominadireccin. La direccin de un bit en la matriz se especifica mediante la fila y lacolumna en la que se encuentra. La direccin de un byte se especifica nicamentemediante la fila.La capacidad de una memoria es el nmero total de unidades de datos que puedealmacenar. En el ejemplo tratado la capacidad total es de 32 bits o 4 bytes.Puesto que una memoria almacena datos binarios, los datos pueden introducirse enla memoria y deben poderse recuperar cuando se necesiten. La operacin de

    escritura coloca los datos en una posicin especfica de la memoria y la operacinde lectura extrae los datos de una direccin especifica de memoria. La operacin dedireccionamiento, que forma parte tanto de la operacin de lectura como deescritura, selecciona la direccin de manera especifica.

    8.1 Diferentes Tipos de Memoria

    a) Memoria RAM

    La memoria RAM (Ramdom-Acces Memory; Memoria de Acceso Rpido), es un tipode memoria en la que se tarda lo mismo en acceder a cualquier direccin dememoria y stas se pueden seleccionar en cualquier orden , tanto en una operacinde lectura como de escritura. Todas las RAMs poseen la capacidad de lectura yescritura.Las memorias RAM reciben el nombre de memoria voltil, ya que pierden los datosalmacenados cuando se desconecta la alimentacin.

    b) Memoria ROM

    La memoria ROM (Read_Only Memory; Memoria de solo lectura), es un tipo dememoria en la que los datos se almacenan en forma permanente o semipermanente.Los datos se pueden leer de una ROM, pero no existe la operacin de escrituracomo en las RAM.

    c) Memoria EPROM

    Son memorias que se programan elctricamente y que se borran con la exposicinde la memoria a una luz ultravioleta que pasa a travs de la ventana de cuarzo quetiene en la parte superior del encapsulado.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    20/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 18

    d) Memoria EEPROM

    Son memorias que se pueden borrar y programar mediante impulsos elctricos. Yaque se pueden grabar y borrar elctricamente, las EEPROM se pueden reprogramar

    dentro del propio circuito final.

    c) Memoria FLASH

    Las memorias flash son memorias de lectura / escritura de alta densidad (altadensidad se refiere a gran cantidad de almacenamiento de bits) no voltil, lo quesignifica que los datos se pueden almacenar indefinidamente sin necesidad dealimentacin; En nuestro caso y como ejemplo practico trabajaremos con unamemoria EPROM (2716) que tienen una capacidad de almacenamiento de 1024bytes.

    A continuacin se muestra el diagrama de la memoria 2716, identificando sus pines.

    Los pines del A0 al A10 permiten escoger la posicin de memoria que se desee leero escribir; los pines O0 al O7 son los datos (1 byte); las lneas OE y CE sonhabilitadores que nos permiten leer y escribir en la memoria la lnea; y VPP se utilizapara grabar la memoria.

    El ejemplo que se plantea como aplicacin consiste en mostrar en un display siete(7) segmentos, en este caso ser un mensaje HOLA.En la memoria se almacenan los cdigos correspondientes a cada letra, iniciando enla direccin 0, hasta la 3. En la direccin 0 se almacenan los cdigoscorrespondientes de la letra H, en la direccin 1 la O y as sucesivamente hastacompletar el mensaje.

    Se necesitar un contador que vaya cambiando la direccin de memoria en formaautomtica y cuando llegue a 4 comience de nuevo.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    21/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 19

    Partiendo de un display de ctodo comn y con la conexin que se muestra en lasiguiente figura, se determina el contenido de cada letra en la memoria.

    Para determinar el cdigo de la H, se define inicialmente que segmentos del displayse deben encender.

    Como se observa, se deben encender los segmentos : b, c, e, f, y g.Y este cdigo se debe almacenar en la memoria.

    O7 O6 O5 O4 O3 O2 O1 O0

    0 1 1 1 0 1 1 0

    g f e d c b a

    El contador 4029 del diagrama me permite cambiar en forma automtica de direcciny de letra; cuando llega a 4 el contador automticamente comienza en ceronuevamente, y por lo tanto el mensaje comienza de nuevo.

    330

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    22/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 20

    5

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    23/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 21

    9. ARITMTICA BINARIA

    8.1 Suma Binaria:Las cuatro reglas bsicas para sumar dgitos binarios son:

    0 + 0 = 0 suma 0 con acarreo 00 + 1 = 1 suma 1 con acarreo 01 + 0 = 1 suma 1 con acarreo 01 + 1 = 0 suma 0 con acarreo 1

    Ejemplos 100 + 10

    100 + 4 +10 2

    110 6

    1 0 0 1 1 1 0 0 + 0 0 1 1 0 0 1 1

    1 11 0 0 1 1 1 0 0 + 156 +0 0 1 1 0 0 1 1 511 1 0 0 1 1 1 1 207

    Como ya se sabe en un byte el numero mximo que podemos representar es el 255,con todos los 8 bits en uno. Cuando el resultado de una suma da un numero mayorde 255, se genera un bit adicional llamado carry.

    Ejemplo: 1 0 1 0 1 0 1 1 + 0 1 1 0 1 1 0 01 1 1 1

    1 0 1 0 1 0 1 1 +0 1 1 0 1 1 0 0

    1 0 0 1 1 1 1 1 1

    Bit de acarreo

    9.2 Resta Binaria:

    La operacin de resta algunas veces podra dar valores negativos, es importantetener presente ste signo. La resta requiere entender como sacar el complementoa dos, de un numero.Obtencin del Complemento a Uno binario:El Complemento a uno se obtiene cambiando todos los unos por ceros, y todos losceros por unos, como se ilustra a continuacin:

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    24/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 22

    1 0 1 1 0 0 1 0 Numero Binario

    0 1 0 0 1 1 0 1 Complemento a uno

    Obtencin del Complemento a Dos de un numero Binario:

    El Complemento a Dos de un numero Binario se obtiene sumando uno (1) a LSB(Dgito menos significativo) del complemento a uno.

    Ejemplo: Hallar el complemento a dos de: 1 0 1 1 0 0 1 0 Numero Binario0 1 0 0 1 1 0 1 Complemento a Uno

    + 10 1 0 0 1 1 1 0 Complemento a Dos

    Para restar dos nmeros binarios se calcula el complemento a dos del sustraendo yse suman el mimuendo y el complemento a dos del sustraendo. Si genera un bit deacarreo, el resultado es positivo o cero, sino lo genera, el resultado es negativo.

    Ejemplo: Restar 1 0 1 1 1 0 0 1 - 0 1 0 0 0 0 1 0

    Minuendo Sustraendo

    1 0 1 1 1 0 0 1 + 185 -1 0 1 1 1 1 1 0 66

    1 0 1 1 1 0 1 1 1 119Numero Positivo

    Ejemplo: Restar1 0 1 1 1 0 0 1 - 1 1 1 0 0 0 1 1

    1 0 1 1 1 0 0 1 + 185 -0 0 0 1 1 1 0 1 2271 1 0 1 0 1 1 0 - 42

    Numero Negativo

    Para hallar el resultado se calcula el complemento a dos del resultado.

    1 1 0 1 0 1 1 00 0 1 0 1 0 0 1 Complemento a uno

    + 10 0 1 0 1 0 1 0 Complemento a dos

    - 42

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    25/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 23

    10. INTRODUCCION AL MICROCONTROLADOR

    Un microcontrolador es un circuito integrado que contiene toda la estructura de un

    Microcomputador, es decir, unidad de proceso (CPU), memoria RAM, memoria ROMy circuitos de entrada/salida.

    Es un dispositivo programable que puede ejecutar un sinnmero de tareas yprocesos.Un Microcontrolador esta compuesto bsicamente por cuatro componentesprincipales:

    Memoria ROM, EEPROM o EPROM: es la memoria donde se almacena elprograma.Memoria RAM o SRAM: es la memoria donde se almacenan los datos.

    Lneas de Entrada / Salida (I / O): tambin llamada puertos, se utilizan paraconectar elementos externos al microcontrolador.CPU: controla y ejecuta todas las instrucciones que conforman el programa.

    Existen diferentes familias de microcontroladores: Intel, Motorola, Microchip, entreotras.En este curso solo se estudiar el microcontrolador PIC16F873, que pertenece a lafamilia de Microchip; esta familia de microchip se caracteriza por tener procesadorRISC y arquitectura Harvard caracterizada por la independencia entre la memoriade cdigo (programa) y la de memoria de datos.

    El conjunto de instrucciones es de solo 35, por esto se dice es un microcontroladorde tipo RISC (computador con set de instrucciones reducido)

    Organizacin de la memoria de datos RAM

    Memoria deCdigo (Flash) Procesador

    Memoria deDatos

    (SRAM)

    Bus de Direccin deInstrucciones

    Bus de Direccin deDatos

    Bus de Instrucciones Bus de Datos

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    26/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 24

    Mapa de Memoria del PIC16F873

    7Fh

    82h

    8Ah

    93h

    95h

    99h

    PCL

    PORTA

    PORTC

    PORTE (1)

    PIR1

    TMR1H

    12h

    02h

    04h

    07h

    0Eh

    10h

    15h

    1Ch

    1Eh

    13h

    00h

    03h

    05h06h

    0Ah

    0Bh0Ch

    0Fh

    11h

    08h09h

    01h

    0Dh

    14h

    16h

    19h1Ah1Bh

    1Dh

    20h

    18h

    1Fh

    17h

    Banco 0

    TMRO

    STATUSFSR

    PORTB

    PORTD (1)

    PCLATH

    INTCON

    PIR2TMR1L

    Indirect addr.(*)

    T1CONTMR2T2CON

    RCREG

    SSPBUFSSPCON

    CCPR1H

    TXREG

    CCPR2H

    CCPR1L

    CCP1CONRCSTA

    CCPR2L

    CCP2CONADRESHADCON0

    Registros dePropsitoGeneral96 Bytes

    Posiciones de memoria no implementadas,ledos como O* No es un registro fsico.

    Banco1

    80h

    83h84h85h86h87h

    8Bh8Ch

    8Eh8Fh90h91h92h

    88h89h

    81h

    8Dh

    94h

    96h

    9Ah9Bh9Ch9Dh9Eh

    A0h

    98h

    9Fh

    97h

    FFh

    F0hEFh

    PCL OPTION_REG

    TRISA

    TRISC

    PORTE (1)

    PIE1

    PCON

    STATUSFSR

    TRISB

    PORTD (1)

    PCLATH

    INTCON

    Indirect addr.(*)

    PIE2

    SSPCON2PR2

    SSPADD

    TXSTASPBRG

    ADRESLADCON1

    Registros dePropsitoGeneral80 Bytes

    Mapeados con70h-7Fh

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    27/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 25

    Para seleccionar el banco al que se desea acceder en la RAM se emplean los bits 6y 5 del registro de estado (status)A partir de la posicin de memoria 20H estn los registros de propsito general,donde se almacenan datos temporales durante la ejecucin del programa. Todos

    estos registros son de 8 bits, por lo tanto el numero mximo que podemos almacenares 255.Existe adems en el microcontrolador el registro W de 8 bits, es un registro detrabajo y la mayor parte de las instrucciones del microcontrolador lo involucran.

    Descripcin de los Pines

    OSC1 / CLK IN (9): Entrada del cristal de cuarzo o del oscilador externo.OSC2 / CLK OUT (10): Salida del cristal de cuarzo. VSS (8 - 19): Conexin a tierra (GND)VDD (20): Conexin a positivo (+5V)MCLR# / VPP (1): Entrada de Reset o entrada del voltaje de programacin.

    Si no se va a utilizar se debe poner a +5V.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    28/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 26

    Puerto A : El puerto A del microcontrolador esta compuesto por 6 lneas deentrada / salida que adems nos permiten trabajar con sealesanlogas.

    RA0 / AN0 (2): puede funcionar como lnea digital.RA1 / AN1 (3): igual que la RA0 / AN0.RA2 (4): lnea de entrada / salida digital.RA3 (5): lnea de entrada / salida digital.RA4 (6): lnea de entrada / salida digital.

    Cuando se configura como salida es de colector abierto.RA5 (7): lnea de entrada / salida digital.

    Puerto B: Este puerto esta compuesto por 8 lneas que se pueden configurarcomo entrada / salida digital y para interrupciones externas.

    RB0 (21): lnea de entrada / salida digital.RB1 (22): lnea de entrada / salida digital.RB2 (23): lnea de entrada / salida digital.RB3 (24): lnea de entrada / salida digital.RB4 (25): lnea de entrada / salida digital.RB5 (26): lnea de entrada / salida digital.RB6 (27): lnea de entrada / salida digital.RB7 (28): lnea de entrada / salida digital.

    Puerto C: Este puerto esta compuesto por 8 lneas que se pueden configurarcomo entrada / salida digitales, adems sirve para trabajar con lostemporizadores del microcontrolador y la comunicacin serial.

    RC0 (11): lnea de entrada / salida digital.RC0 (12): lnea de entrada / salida digital.RC0 (13): lnea de entrada / salida digital.RC0 (14): lnea de entrada / salida digital.RC0 (15): lnea de entrada / salida digital.RC0 (16): lnea de entrada / salida digital.RC0 (17): lnea de entrada / salida digital.RC0 (18): lnea de entrada / salida digital.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    29/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 27

    NOTA:

    El cristal determina la velocidad de ejecucin del programa.

    Para ejecutar un programa se necesita garantizar las siguientes conexiones.

    11. EXPLICACIN DEL REGISTRO STATUS

    El Registro de estado es el registro mas utilizado en el microcontrolador, ubicado enla posicin 03 del banco 1 de memoria y en la 83H en el banco 2 de memoria.Su estructura es la siguiente:

    IRP RP1 RP0 TO# PD# Z DC C

    Los tres bits de menos peso son los sealizadores de ciertas condiciones en lasoperaciones lgicas aritmticas.

    Z: Sealizador de cero: Se pone a 1 automticamente cuando el resultado de unaoperacin lgica o aritmtica da cero.

    C: Acarreo/llevada en el bit 8: Se pone a 1 automticamente cuando existe acarreoen el bit de mas peso en las instrucciones de suma. Tambin acta comosealizador de llevada en las instrucciones de resta, pero en este caso lacorrespondencia es inversa. Es si vale 0 hay llevada.

    DC:Acarreo/llevada en el bit 4: Funciona igual que el sealizador C, pero en elcuarto bit. Es muy til en las operaciones con nmeros expresados en BCD.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    30/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 28

    PD#: Se activa a 0 al ejecutarse la instruccin SLEEP (Modo reposo). Se pone a1 automticamente tras la conexin de la alimentacin, o bien al ejecutarse lainstruccin CLRWDT (Refresco del perro guardin)

    TO#:Se activa a nivel bajo al desbordarse el perro guardin. Toma el valor 1 trasla conexin de la fuente de alimentacin o al ejecutarse la instruccin CLRWDT oSLEEP.

    Finalmente los tres bits de mas peso del registro de estado se emplean paraseleccionar el banco de RAM al que se desea acceder.Se utilizan los bits RP1 y RP0 de acuerdo con la siguiente codificacin:

    RP1 RP0 Banco Seleccionado0 0 Banco 00 1 Banco 1

    1 0 Banco 21 1 Banco 3

    En el caso del PIC16F873 solo se cuenta con dos bancos de memoria el banco 0 yel banco 1.El bit IRP se usa concatenado con el bit de mas peso del registro FSR para elegir elbanco de RAM en el direccionamiento indirecto.IRP Seleccin del banco de RAM en direccionamiento indirecto.

    0: Bancos 0 y 11: Bancos 2 y 3

    En los primeros ejemplos que haremos solo usaremos los bits Z (cero) y C (carry)del registro de estado.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    31/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 29

    Resumen de Instrucciones del Microcontrolador Pic 16f873NEMNICOS

    PAR-METROS OPERACIN CICLOS

    SEALIZA-DORES

    INSTRUCCIONES QUE MANEJAN REGISTRO

    ADDWF f,d SUMA de W con f 1 C,DC,Z ANDWF f,d AND de W con f 1 ZCLRF f BORRADO de f 1 ZCLRW a,e BORRADO de W 1 ZCOMF f,d COMPLEMENTO de f 1 ZDECF f,d DECREMENTO de f 1 ZINCF f,d INCREMENTO de f 1 Z

    IORWF f,d OR de W con f 1 ZMOVF f,d MOVIMIENTO de f 1 Z

    MOVWF f MOVIMIENTO de W a f 1NOP ae NO OPERACIN 1RLF f,d ROTACION de f a izquierda con carry 1 CRRF f,d ROTACION de f a derecha con carry 1 C

    SUBWF f,d RESTA de W a f (f - W) 1 C,DC,ZSWAPF f,d INTERCAMBIO de 4 bits de +peso por los 4de peso. 1XORWF f,d OR exclusiva de W con f 1 Z

    INSTRUCCIONES QUE MANEJAN BITSBCF f,b PUESTA a 0 del bit b de f 1 BSF f,b PUESTA a 1 del bit b de f 1

    INSTRUCCIONES DE BTFSC f,b PRUEBA del bit b de f; SALTA si es 0 1 (2)BTFSS f,b PRUEBA del bit b de f; SALTA si es 1 1 (2)

    DECFSZ f,d DECREMENTO de f; SALTA si es 0 1 (2)INCFSZ f,d INCREMENTO de f; SALTA si es 0 1 (2)

    INSTRUCCIONES QUE MANEJAN OPERANDOS INMEDIATOSADDLW k SUMA de literal con W 1 C, DC,ZANDLW k AND de literal con W 1 ZIORLW k OR de literal con W 1 ZMOVLW k MOVIMIENTO de literal a W 1SUBLW k RESTA W de literal (k-w) 1 C,DC,Z

    XORLW k OR exclusiva de literal con W 1 ZINSTRUCCIONES DE CONTROL Y ESPECIALESCALL k LLAMADA a subrrutina 2

    CLRWDT BORRADO del WATHDOG 1 #TO, #PDGOTO K SALTO a una direccin 2

    RETFIE RETORNO de interrupcin 2RETLW k RETORNO devolviendo literal en W 2

    RETURN RETORNO de subrrutina 2SLEEP PUESTA del microprocesador en reposo 1 #TO,#PD

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    32/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 30

    Nota: solo se incluyen algunas instrucciones, sin embargo todas lasinstrucciones cumplen esta sintaxis

    12. SINTAXIS DE LAS INSTRUCCIONES

    Todas las instrucciones del microcontrolador tienen una sintaxis, que se indica en latabla de instrucciones:1) MOVLW K:carga en W el valor del literal K.

    K: es una constante que puede tomar el valores de 0 a 255, ya que es de 8bits.Las constantes se pueden indicar en 3 sistemas de numeracin diferentes:MOVLW .255 carga 255 en W (Sistema Decimal)MOVLW b11111111 carga 255 en W (Sistema Binario)MOVLW 0FFH carga 255 en W (Sistema Hexadecimal)

    2) CLRF F: pone en cero el registro F.

    El registro F es cualquier posicin de memoria RAM del microcontrolador,Incluyendo los registros de propsito general. (los que empiezan a partir de laposicin 20H y son declarados por el usuario).Ejemplo:

    CLRF PORTB: pone en cero todos los bits del puerto B.

    3) DECF f,d: decrementa el registro ff: es cualquier posicin de memoria RAMd: es el destino del resultado. Solo hay dos posibles destinos: el registro W oel registro f.

    DECF contador, F : Decrementa el contador y almacena el resultado en elmismo contador.DECF contador, W : Decrementa el contador y almacena el resultado en el

    registro w.Tambin se puede especificar el destino con 0 o 1 donde 0 indicadestino w y 1 destino F.DECF contador, 1 : Decrementa el contador y almacena el resultado en el

    mismo contador.DECF contador, 0 : Decrementa el contador y almacena el resultado en el

    registro w.

    4) BCF f,b : pone en 0 el bit b del registro f.f: es cualquier posicin de memoria RAM.b: es el bit especfico del registro f. Este bit puede estar entre 0 y 7.Ejemplo:

    BCF PORTB,0 : pone en 0 el bit 0 del puerto B (RB0)..

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    33/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 31

    13. DIRECTIVAS PARA HACER UN PROGRAMA EN MICROCONTROLADOR

    Etiqueta Operacin Operandos Comentarios

    Inicio movlw 0 ; Carga el circuito wEtiquetas:Son nombres simblicos que se asignan a una direccin de memoria. Por ejemplo,cuando se escribe la palabra inicio, se le est diciendo al ensamblador que esa es ladireccin de memoria correspondiente donde quedar grabada la primerainstruccin.

    Operacin:Es la instruccin del microcontrolador que se ejecuta.

    Operandos:Son los registros o cantidades sobre los que se realizan las operaciones oinstrucciones. Puede ser un registro de la memoria de datos o un valor constanteque comnmente se conoce como literal.Cuando se utilizan dos operandos, el primero es el operando fuente y el segundo esel operando destino.

    Comentario:El ensamblador ignora esta lnea en el momento de generar el cdigo objeto, peropara la persona que hace el programa es muy importante ya que ah puede escribir

    la idea o la explicacin de lo que esta haciendo en esa lnea del programa.Punto y coma (;):Es un delimitador. Hace que el ensamblador ignore la linea de texto que seencuentra a la derecha de l. Se usa para escribir comentarios acerca de lainstruccin particular que se tiene y de la accin que esta ejecutando elmicrocontrolador.

    Clases de lneas en un programa:Se pueden usar cuatro tipos diferentes de lineas, la de igualdad (EQU), la de origen(ORG), la de instruccin normal y la de final (END).

    Igualdades:Se utilizan para asignar un nombre o smbolo a un valor especifico (Hexadecimal).Por ejemplo cuando se hace:

    PORT B EQU 06Se est asignando el nombre PORTB al valor 06, que corresponde a la direccinfsica del puerto B.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    34/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 32

    Tambin se puede usar para asignar nombres a un numero cualquiera, por ejemplo:

    CONTADOR EQU 09

    Origen:ORG es una directiva del ensamblador que se usa para definir el sitio (de lamemoria) donde se desea escribir alguna porcin de programa en particular.

    ORG 0

    En este caso se indica que las instrucciones que vienen a continuacin quedarn apartir de la direccin de memoria 00 en el microcontrolador.

    Final:

    Se usa para decirle al ensamblador que el programa ha terminado; se usa ladirectiva END.

    Encabezado del programa

    list P = 16F873 ; indica el tipo de procesadorR = Hex ; sistema de numeracin hexadecimal

    Include ; se incluye la definicin de los registrosinternos en la librera.

    Ejemplo: Include LIST P= 16F873, R=Hex

    OPERANDO 1 EQU 20 ; DEFINE LA POSICIN DEL OPERADO 1OPERANDO 2 EQU 21 ; DEFINE LA POSICIN DEL OPERADO 2RESULTADO EQU 22 ; DEFINE LA POSICIN DEL RESULTADO

    ORG 0MOVLW 05 ; w = 5MOVWF OPERANDO1 ; w = OPERANDO1MOVLW 02 ; w = 2MOVWF OPERANDO2 ; w = OPERANDO2MOVF OPERANDO1 ; w = OPERANDO1ADDWF OPERANDO2,W ; w = w+OPERANDO2MOVWF RESULTADO ; w = RESULTADO

    END ; DIRECTIVA DEL FIN DE PROGRAMA

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    35/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 33

    14. EJEMPLOS SENCILLOS CON DIAGRAMAS DE FLUJO

    Ejemplo 1: Como hacer que un programa se ejecute N veces

    Cuando se quiere que un programa se repita N veces se debe utilizar un registro dememoria RAM que funciona como contador en forma descendente, este contador secarga inicialmente con el numero de veces que queremos que se repita el programa.

    IncludeLIST P=16F873, R=HEX

    CONTADOR EQU 20

    ORG 0MOVLW 5 ; El Programa se repite 5 vecesMOVWF CONTADOR ; Carga contador con 5

    LOOP NOP ; Programa

    NOP ; ProgramaNOP ; programaDECFSZ CONTADOR,F : Decrementa contador e ignora la siguiente

    ; instruccin si el contador es ceroGOTO LOOP ; salta a LOOPEND ; Fin del programa

    Ejemplo 2: Como comparar si dos nmeros son iguales

    Para comparar si dos nmeros son iguales se utiliza la instruccin XORWF f,d (XORentre W y el registro f), si los dos nmeros son iguales el resultado de la XORWFser cero y la bandera Z del registro de estado se pone en 1

    IncludeLIST P=16F873, R=HEX

    NUMERO 1 EQU 20

    ORG 0MOVLW .10 ; Carga W con 15MOVWF NUMERO1 ; Lleva 15 a NUMERO1MOVLW .15 ; Carga W con 15XORWF NUMERO1,W ; Realiza una XOR entre W y NUMERO1BTFSS STATUS,Z ; Pregunta si el bit Z del registro de

    ; estado esta en unoGOTO NOIGUAL ; Salta a NOIGUALGOTO IGUAL ; Salta a IGUAL

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    36/88

    M I C R O C O N T R O L A D O R E S

    N E N E R A D E D E D E P R D U T

    3 4

    D i a g r a m a

    d e f l u

    j o

    P r o g r a m a

    I N C L U

    D E

    L I S T P =

    1 6 F 8 7 3 , R = H

    E X

    C O N T A D O R

    E Q U

    2 0

    O R G

    0

    I N I C I O

    M O V L W

    0

    ; c a r g a

    W

    c o n o

    M O V W

    F

    C O N T A D O R

    ; l l e v a W

    a l c o n

    t a d o r

    L O O P

    I N C F

    C O N T A D O R

    , F ; i n c r e m e n

    t a c o n t a d o r

    M O V L W

    . 1 5

    X O R W

    F

    C O N T A D O R

    , W ;

    X O R e n t r e

    W y

    c o n t a d o r .

    B T F S S

    S T A T U S

    , Z

    ; s i Z = 1 s a

    l t a u n a

    i n s t r u c c

    i n .

    G O T O

    L O O P

    G O T O

    I N I C I O

    E N D

    C O N T A D O R = 0

    I N C R E M E N T A R C O N

    T A D O R

    C o n

    t a d o r =

    1 5

    S I S I

    N O N O

    D i a g r a m a

    d e f l u

    j o

    P r o g r a m a

    I N I C I O

    E E J J E E M M

    P P L L O O 3 3

    H a c e r u n p r o g r a m a e n m

    i c r o c o n

    t r o l a d o r q u e m e g e n e r e

    l o s n m e r o s

    d e 0 a 1

    5 , y c u a n

    d o

    l l e g u e a

    1 5 , n

    u e v a m e n

    t e c o m

    i e n c e e l

    c o n

    t e o d e s d e c e r o .

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    37/88

    M I C R O C O N T R O L A D O R E S

    N E N E R A D E D E D E P R D U T

    3 5

    D i a g r a m a d e

    f l u

    j o

    P r o g r a m a

    E E J J E E M M

    P P L L O O

    4 4 M U L T I P L I C A C I O N D E D O S N U M E R O S

    E N T E R O S

    M U L T I P L I C A C I N

    C a r g a r m u l t

    i p l i c a n

    d o

    C a r g a r m u l t

    i p l i c a

    d o r

    C a r g a r e s u

    l t a d o =

    0

    R e s u

    l t a d o =

    r e s u

    l t a d o + m u

    l t i p

    l i c a n

    d o

    D e c r e m e n

    t a m u

    l t i p

    l i c a

    d o r

    M u

    l t i p

    l i c a d o r =

    0

    S I

    N O

    E N D

    I N C L U D E < P

    1 6 F 8 7 3 . I N C >

    L I S T P = 1

    6 F 8 7 3 , R = H

    E X

    M U L T I P L I C A N

    D O

    E Q U

    2 0

    M U L T I P L I C A D

    O R

    E Q U

    2 1

    R E S U L T A D O

    E Q U

    2 2

    O R G

    0

    M O V L W

    . X

    M O V W F

    M U L T I P L I C A N D

    O

    M O V L W

    . Y

    M O V W F

    M U L T I P L I C A D O

    R

    M O V L W

    . 0

    M O V W F

    R E S U L T A D O

    L O O P

    M O V F

    M U L T I P L I C A N D

    O , W

    A D D W F

    R E S U L T A D O , F

    D E C F S Z

    M U L T I P L I C A D O

    R , F

    G O T O

    L O O P

    E N D

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    38/88

    M I C R O C O N T R O L A D O R E S

    N E N E R A D E D E D E P R D U T

    3 6

    E E J J E E M M P P L L O O

    5 5

    D I V I S I O N D E

    D O S N U M E R O S E N T E R O S Y R E S U L T A D O N U M E R O E N T E R O

    D i a g r a m a

    d e

    f l u

    j o

    P r o g r a m a

    L I S T P =

    1 6 F 8 7 3

    , R =

    H E X

    D I V I D E N D O

    E Q U

    2 0

    D I V I S O R

    E Q U

    2 1

    R E S U L T A D O

    E Q U

    2 2

    R E S I D U O

    E Q U

    2 3

    O R

    G

    0

    M O V L W

    . X

    M O V W F

    D I V I D E N D O

    M O V L W

    . Y

    M O V W F

    D I V I S O R

    M O V L W

    . 0

    M O V W F

    R E S U L T A D O

    M O V F

    D I V I D E N D O

    , W

    M O V W F

    R E S I D U O

    L O O P

    M O V F

    D I V I S O R

    , W

    S U

    B W F

    R E S I D U O

    , F

    M O V L W

    . 0

    X O

    R W F

    R E S I D U O

    , W

    B T F S C

    S T A T U S

    , Z

    R E

    T U R N

    I N C F S Z

    R E S U L T A D O , F

    G O

    T O

    L O O P

    E N

    D

    C a r g a r

    d i v i

    d e n d o

    C a r g a r

    d i v i s o r

    C a r g a r e s u l

    t a d o = 0

    R e s

    i d u o = d

    i v i d e n

    d o

    I n c r e m e n

    t a

    r e s u

    l t a d o

    R e s

    i d u o =

    0

    S

    I

    N O

    R e s i d u o =

    r e s i

    d u o - d

    i v i d e n

    d o

    D I V I S I N

    E

    N D

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    39/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 37

    15. CONFIGURACIN DE LOS PUERTOS

    Los puertos del microcontrolador se pueden configurar cada patica como entrada osalida digital.Cada lnea de cada puerto representa un bit, por ejemplo el puerto B:

    RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

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

    Para denotar un bit en particular, se puede decir

    Portb, 6 el bit 6 del puerto b

    Pasos para configurar el puerto b (PORTB) y el puerto c (PORTC):

    1. Cargar en w el valor para la configuracin del puerto, teniendo en cuenta quepara configurar una lnea como entrada se pone el bit en 1 y si se quiereconfigurar como salida se pone el bit correspondiente en 0.

    Ejemplo: configurar el puerto b de la siguiente manera:

    1 RB01 RB11 RB21 RB30 RB40 RB50 RB60 RB7

    El valor que se debe cargar en w es 0 0 0 0 1 1 1 1 y la instruccin es:MOVLW b00001111

    2. Digitar la instruccin TRIS y el puerto. Si nos referimos al puerto b, la instruccinser TRIS PORTB

    Entrada

    Salida

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    40/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 38

    La configuracin completa es:MOVLW b00001111TRIS PORTB

    16. EJEMPLO SENCILLOS CON ENTRADA Y SALIDA DE DATOS

    Este ejemplo muestra una aplicacin muy simple y bsica de un microcontrolador lacual consiste en que, s cualquier entrada (RB0) se pone en uno, la salida (RC2) sepone en uno tambin.

    Programa:

    Include ;LA INSTRUCCIN INCLUDE ME CARGA UN ARCHIVOLIST P = 16873 = HEX DONDE SE ENCUENTRAN TODOS LOS REGISTROS

    CON SUS RESPECTIVAS DIRECCIONES.

    ORG 0 ;ESTO INDICA QUE EL PROGRAMA COMIENZA EN LADIRECCIN CERO.

    MOVLW 0TRIS PORTB ;CONFIGURAR EL PUERTO B TODO COMO SALIDA.MOVLW .255 ;CONFIGURAR EL PUERTO C TODO COMO ENTRADA.TRIS PORTCCLRF PORTB ;PONE EN 0 EL PUERTO B.

    LOOP BTFSS PORTC,2 ;SI EL BIT2 DEL PUERTO C ESTA EN 0?.GOTO H1 ;SALTA A H1.BSF PORTB,0 ;ENTONCES COLOQUE LA SALIDA RB0 EN 1.GOTO LOOP ;SALTA A LOOP.

    H1 BCF PORTB,0 ;SI NO ENTONCES COLOQUE EN 0 LA SALIDA RB0.GOTO LOOPEND ;FIN DEL PROGRAMA.

    Configurar Puertos

    Port B = 0

    Rc 2 = 0 ?

    RB 0 = 1RB 0 = 0

    No

    Si

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    41/88

    M I C R O C O N T R O L A D O R E S

    E E J J E E M M P P L L O O

    6 6

    D i a g r a m a

    d e

    f l u

    j o

    P r o g r a m a

    I N C L U

    D E

    < P 1 6 F 8 7 3 . I N C >

    L I S T

    P = 1

    6 F 8 7 3 ,

    R = H

    E X

    C O N T A D O R

    E Q U

    2 0

    O R G

    0

    M O V L W

    B ' 0 0 0 0 0 0 0 1

    ; c a r g a

    W

    c o n

    0 0 0 0 0 0 0 1

    T R I S

    P O R T C

    ; c o n

    f i g u r a r p u e r

    t o B R C O c o m o e n

    t r a d a

    M O V L W

    B ' 0 0 0 0 0 0 0 0

    ; c a r g a W

    c o n

    0 0 0 0 0 0 0 0

    T R I S

    P O R T B

    ; c o n

    f i g u r a r p u e r

    t o B c o m o s a

    l i d a

    I N I C I O

    M O V L W

    . 0

    ; c a r g a

    W

    c o n

    0

    M O V W

    F

    C O N T A D O R

    ; l l e v a

    0 d e W

    a c o n t a d o r

    M O V W

    F

    P O R T B

    ; l l e v a

    0 d e W

    a p u e r

    t o B

    P U E R T O

    B T F S C

    P O R T C

    , 0

    ; p r e g u n t a s i

    R C 0 = 1

    G O T O

    A S C E N D E N T E

    ; s i R C 0 = 0 , s a

    l t a a a s c e n d e n

    t e

    M O V F

    C O N T A D O R

    , W

    : s i R C 0 = 1 , l l e v a c o n t a d o r a

    W

    B T F S C

    S T A T U S

    , Z

    ; p r e g u n t a p o r

    Z = 0

    G O T O

    D E S C E N D E N T E ; s a l

    t a a

    d e s c e n

    d e n t e

    D E C F

    C O N T A D O R

    , 1

    ; s i Z = 1 , d

    e c r e m e n

    t a c o n t a d o r

    M O V F

    C O N T A D O R

    , 0

    ; c a r g a

    W

    c o n c o n t a d o r

    M O V W

    F

    P O R T B

    ; l l e v a

    c o n

    t a d o r

    d e W

    a p u e r

    t o B

    G O T O

    P U E R T O

    ; s a l

    t a a p u e r

    t o

    D E S C E N D E N T E M O V L W

    . 1 5

    ; c a r g a

    W

    c o n . 1

    5

    M O V W

    F

    C O N T A D O R

    ; l l e v a . 1

    5 d e W

    a c o n t a d o r

    G O T O

    P U E R T O

    ; s a l

    t a a p u e r

    t o

    A S C E N D E N T E

    M O V L W

    . 1 5

    ; c a r g a

    W

    c o n . 1

    5

    X O R W

    F

    C O N T A D O R

    , W

    ; O R e x c

    l u s i v a

    d e W

    y c o n t a d o r

    B T F S C

    S T A T U S

    , Z

    ; p r e g u n t a p o r

    Z = 0

    G O T O

    I N I C I O

    ; s a l

    t a a

    i n i c i o

    I N C F

    C O N T A D O R

    , 1

    ; Z = 1 , i n c

    r e m e n

    t a c o n t a d o r

    M O V F

    C O N T A D O R

    , W

    ; l l e v a c o n t a d o r a

    W

    M O V W

    F

    P O R T B

    ; l l e v a

    c o n

    t a d o r

    d e W

    a p u e r

    t o B

    G O T O

    P U E R T O

    ; s a l

    t a a p u e r

    t o

    E N D

    U n c o n

    t a d o r d e n

    m e r o s

    d e

    0 a

    1 5 e n f o r m a a s c e n

    d e n

    t e o

    d e s c e

    n d e n

    t e d e p e n

    d i e n

    d o

    d e l a e n

    t r a

    d a

    d e

    R C 0

    .

    S i R C 0 =

    1 c o n

    t a d o r a s c e n

    d e n

    t e .

    R C 0 =

    0 c o n t a

    d o r

    d e s c e n

    d e n

    t e .

    I N I C I

    C O N T A D O R =

    0

    R C 0 =

    1

    N O

    S I N

    O

    S I

    N O

    S I

    D e c c o n

    t

    I n c c o n

    t

    C

    o n

    t = 1

    C o n

    t = 1 5

    C o n

    t = 0

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    42/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 40

    17. RETARDOS

    Los retardos son muy utilizados en el control de procesos con microcontrolador.

    Cuando se trabaja el microcontrolador a 4 MHz, cada ciclo de reloj dura1 s = 1X10-6 segundos.La mayora de instrucciones se demora 1 ciclo de reloj en ejecutarse y algunas sedemoran dos ciclos de reloj.En la informacin de las instrucciones de los microcontroladores se indican los ciclosde reloj que se demora cada instruccin.Como primer ejemplo, tenemos un contador que se carga inicialmente con 15 y seva decrementando hasta llegar a cero.

    Programa:

    Include < P16F873. INC>LIST P=16F873, R = HEX

    CONTADOR EQU 20

    CICLOS DE RELOJORG 0 MOVLW .15 _______ 1MOVWF CONTADOR __ 1

    LOOP DECFSZ CONTADOR ___ 1GOTO LOOP __________ 2

    ENDPara calcular el tiempo que se demora el programa en ejecutarse, primero se debetener claro cuantos ciclo de reloj se demora cada instruccin.

    Despus se observa si dentro del programa existen saltos repetitivos, en el ejemploel programa decrementa el contador y salta si no es cero a LOOP, dondenuevamente decrementa el contador. La siguiente pregunta es cuantas veces salta a

    INICIO

    Contador = 15

    Decremento deContador

    Contador = 0No

    Si

    FIN

    3 x 15 = 4545 + 2 = 47

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    43/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 41

    LOOP, en este caso lo hace 15 veces, ya que con este valor se carga inicialmente elcontador, se puede ver que las instrucciones: DECFSZ CONTADOR,F y GOTOLOOP se ejecutan 15 veces y se demoran 3 ciclos de reloj, por lo tanto, 3 (ciclos dereloj) x 15 (veces que se repite), nos da como resultado 45, adems las

    instrucciones MOVLW .15 y MOVWF CONTADOR solo se ejecuta una vez.En total el tiempo de ejecucin ser 45 + 2 = 47 ciclos de reloj, es decir 47 s.El numero mximo con el que se puede cargar un contador (registro de memoria) es255 ya que cada posicin de memoria es de 8 bits.Para calcular el tiempo total de ejecucin del programa se utiliza la formula:T = 3 x N +2, donde N es el valor inicial que se le asigna al contador, esto significaque el retardo mximo que se puede conseguir con un solo registro, es:3 x 255 + 2 = 767 s.Cuando se quiere retardos de tiempos mayores se utilizan 2 o 3 contadores

    (registros).Ejemplo: se quiere hacer un retardo de 40 ms (milisegundos) = 40.000 s(microsegundos) siempre se debe pasar el tiempo a microsegundos.Para generar retardos mayores a 767 microsegundos utilizamos dos contadores y eldiagrama de flujo en el siguiente:

    INICIO

    CONTADOR 1 = M

    CONTADOR 2 = N

    DECREMENTACONTADOR 2

    CONTADOR 2 = 0

    DECREMENTACONTADOR 1

    CONTADOR 1 = 0

    S

    No

    No

    FIN

    S

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    44/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 42

    Como se puede ver en el diagrama de flujo lo que se hace es decrementar elCONTADOR 2 N veces, y el CONTADOR 1 nos indica cuantas veces debemosrepetir esto.El programa en microcontrolador ser el siguiente:

    Programa:

    Include < P16F873. INC>LIST P=16F873, R = HEX

    CONTADOR 1 EQU 20CONTADOR 2 EQU 21

    ORG OMOVLW MMOVWF CONTADOR 1

    LOOP1 MOVLW N

    MOVWF CONTADOR 2LOOP DECFS2 CONTADOR 2, FGOTO LOOPDECFS2 CONTADOR 1, F ___________________1GOTO LOOP, ___________________________2END

    El tipo T1 es equivalente al primer ejemplo y la formula es la misma:T1 = 3 x N + 2.

    Suponiendo que N = 255, T1 = 767 s. El retardo que se esta calculando es de 40ms= 40000 s.

    Para calcular el tiempo 2 T2 = (T1 + 3) M . El tiempo T2 debe seraproximadamente 40000 s.

    Para calcular M, sabiendo que T1 + 3 = 770 s se debe dividir 40000/700 = 51.94 52 M = 52

    T2 = (T1 + 3) 52 = (767 + 3) 52 = 40040 s

    Y el tiempo total del retardo es T2 + 2 = 40040 + 2 = 40042 sEl retardo mximo que se puede tener con dos contadores ser:T2 = (770) x 255 = 196350

    Tiempo Total: T2 + 2 = 196352

    Si se quieren retardos mayores a 196352 es necesario utilizar 3 contadores.

    T 2 = (T 1 + 3) MT 1 = 3 x N + 2

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    45/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 43

    Diagrama de Flujo

    Suponiendo que M y N sean 255 y partiendo de los clculos del ejemplo anterior nosda 196352 s.Para calcular T3 se aplica la formula:

    T3 = (T2 + 2 + 3) x LT3 = (169350 + 2 + 3) x LT3 = (196355) x L

    Inicio

    Contador 1 = L

    Contador 2 = 0

    Si

    Si

    NO

    Contador 2 = M

    Contador 3 = N

    Contador 3 = 0

    Decrementarcontador 3

    Decrementarcontador 2

    Decrementarcontador 1

    Contador 1 = 0

    FIN

    Si

    No

    NO

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    46/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 44

    Como se quiere un (1) segundo = 1000000 s, para calcular L solo dividimos1000000 = 5.09 5195355

    T3 = 196355 x 5 = 981775

    El tiempo total es T3 + 2 = 981775 + 2 = 981777

    Si se cambian los valores de L, M y N lgicamente el retardo cambia, sin embargo sesiguen aplicando las mismas formulas.

    18. MANEJO DE SUBRUTINAS

    Las subrutinas son subprogramas que se llaman varias veces en un programa, porejemplo los retardos.Para llamar una subrutina se utiliza la instruccin CALL N, donde N es el nombre dela subrutina. El programa salta a la subrutina y cuando termina de ejecutarlacontinua con la siguiente instruccin del programa que llamo la subrutina.

    Programa Principal Subrutina

    Toda subrutina termina con la instruccin RETURN o RETLW N, donde N es

    cualquier valor entre 0 y 255, en este caso al retornar, W se carga con ese valor.Existe una diferencia entre CALL N (llamada subrutina) y GOTO N, en la primeracuando se termina de ejecutar retorna a la siguiente instruccin del programa que lollamo a diferencia de la segunda (GOTO N) que puede saltar a otra parte delprograma.Cada vez que se llama una subrutina, se almacena en el Stack-Pointer, la direccinde retorno, es decir la direccin a donde debe regresar, cuando termina la subrutina.

    .

    .

    .LOOP BSF PORTB, 0

    CALL RETARDOBCF PORTB, 0CALL RETARDOGOTO LOOP

    RETARDO ......

    RETURN

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    47/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 45

    19. EJEMPLO UTILIZANDO RETARDOS

    Este programa consiste en que por medio de un ciclo repetitivo se encienda y seapague un led a una frecuencia constante; en este programa es necesario el empleo

    de una subrutina (programa alterno) que genere lo que se llama un retardo(1segundo aproximadamente) ya que si ste no existe, el led se prendera y seapagara tan rpido que se vera siempre encendido, debido a la velocidad a la quetrabaja el Microcontrolador.

    Configurar Puertos

    RB 0 = 0

    Retardo 1 segundo

    RB 0 = 1

    Retardo 1 segundo

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    48/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 46

    Programa: Include LIST P=16F873, R=HEX

    REG1 EQU 20

    REG2 EQU 21REG3 EQU 22ORG 0MVLW 0TRIS PORTB ;CONFIGURAR EL PUERTO B TODO COMO SALIDA

    LOOP BSF PORTB,0 ;PONE EN UNO EL BIT 0 DEL PUERTO B.CALL RETARDO ;LLAMA UN RETARDO DE UN SEGUNDO.BCF PORTB,0 ;PONE EN 0 EL BIT 0 DEL PUERTO B.CALL RETARDO ;LLAMAR RETARDO DE UN SEGUNDO.GOTO LOOP ;SALTA A LOOP.

    RETARDO MOVLW .5 ;RETARDO DE UN SEGUNDOMOVWF REG1

    REP3 MOVLW .255MOVWF REG2REP2 MOVLW .255

    MOVWF REG3REP1 DECFSZ REG3,F

    GOTO REP1DECFSZ REG2,FGOTO REP2DECFSZ REG3,FGOTO REP3RETURN ;ESTA COMANDO ME DEVUELVE A UN PASO

    MS DE DONDE EL RETARDO FUE LLAMADOEND ;FIN DEL PROGRAMA.

    20. GENERACIN DE TONOS CON MICROCONTROLADORES

    Para generar diferentes tonos con el microcontrolador se debe conocer la frecuenciadel tono, por ejemplo si queremos generar un tono de 1 KHz, entonces:

    F= 1 KHz, por lo tanto el periodo esT = 1/F = 1/ 1000 = 0,001 s = 1000 s

    Se puede notar que el periodo esta compuesto por el tiempo en que la salidapermanece en alto 1 y en bajo 0.En el caso de la frecuencia de 1KHz nos da un periodo de 1000 s que se divide endos, por lo tanto T/2 = 500 s

    F

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    49/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 47

    El diagrama del circuito podra ser el siguiente:

    Programa:Include LIST P= 16F873, R=Hex

    CONTADOR EQU 20

    ORG 0MOVLW B11111110 ;CONFIGURA EL PORTB COMO ENTRADA

    EXCEPTO RB0TRIS PORTB

    LOOP BSF PORTB,0 ;PONE EN 1 RB0CALL RETARDO ;LLAMA RETARDO DE 500 s.BCF PORTB,0 ;PONE EN 0 RB0.CALL RETARDO ;LLAMA RETARDO DE 500 s.GOTO LOOP ;SALTA A LOOP

    RETARDO MOVLW .166 ;RETARDO DE 500 s.MOVWF CONTADOR

    LOOP1 DECFSZ CONTADOR,FGOTO LOOP 1RETURNEND ;FIN DEL PROGRAMA

    Inicio

    Activar Salida

    Call retardo 500s

    Desactivar Salida

    Call reardo 500s

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    50/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 48

    21. MOTORES PASO A PASO

    Los motores paso a paso son un tipo especial de motores que permiten elmovimiento de su eje en ngulos muy precisos y por pasos, tanto a la izquierda

    como a la derecha. Aplicando a ellos una secuencia de pulsos.Cada paso tiene un ngulo muy preciso, determinado por la construccin del motorlo que permite realizar movimientos exactos.Son utilizados para generar movimientos precisos, por ejemplo en robots, en equiposcon movimientos X-Y, entre otros.

    Existen dos tipos de motores paso a paso:

    1. Motores Unipolares: este tipo de motor tienen dos bobinas en cada uno de losestatores y cada par de bobinas tienen un punto comn, es decir, tiene seisterminales.

    2. Motores Bipolares: este tipo de motor tiene dos bobinas y no poseen puntoscomn, es decir tiene cuatro terminales.

    Para controlar este tipo de motor paso a paso bipolar es necesario una fuente conpolaridad positiva y negativa.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    51/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 49

    CONTROL DEL MOTOR PASO A PASO UNIPOLAR

    Para controlar el motor paso a paso se debe conocer su secuencia y sus terminales,de tal manera que el circuito o el programa en microcontrolador genere la secuencia

    lgica de cuatro bits que energiza una bobina del motor en el orden correcto.

    Para que el motor gire a la derecha se aplica la secuencia de pulsos en un sentido ypara girar a la izquierda simplemente se invierte la secuencia. Por ejemplo

    GIRO A LA DERECHA GIRO A LA IZQUIERDA

    PASOS Q1 Q2 Q3 Q4 PASOS Q1 Q2 Q3 Q4 1 ON OFF OFF OFF 1 OFF OFF OFF ON2 OFF ON OFF OFF 2 OFF OFF ON OFF3 OFF OFF ON OFF 3 OFF ON OFF OFF4 OFF OFF OFF ON 4 ON OFF OFF OFF1 ON OFF OFF OFF 1 OFF OFF OFF ON

    Las seales que habilita cada transistor pueden venir desde un circuito integrado odesde el microcontrolador, el transistor lleva el negativo a la bobina del motor, en elmomento en que es habilitado.La velocidad del motor depende de la frecuencia con que se enven los pulsos acada transistor.Existen otras formas de controlar un motor paso a paso para generar ms torque ohacerlo ms preciso, en el prximo ejemplo se ver una nueva forma.

    22. EJEMPLO DE MANEJO DEL MOTOR PASO A PASO

    En este caso se utilizar un motor de cuatro bobinas, la secuencia utilizada consisteen alternar la posicin de dos unos a lo largo de las bobinas (a,b,c,d).

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    52/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 50

    A B C D

    1 1 0 0 120 1 1 0 60 0 1 1 31 0 0 1 9

    1 1 0 0 12

    Inicio

    Sentido horario

    PortB=00001001

    Retardo 100ms

    PortB=00001100

    Retardo 100ms

    PortB=0000110

    Retardo 100ms

    PortB=0000011

    Retardo 100ms

    PortB=00000011

    Retardo 100ms

    PortB=00000110

    Retardo 100ms

    PortB=0001100

    Retardo 100ms

    PortB=0001001

    Retardo 100ms

    Si

    No

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    53/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 51

    Programa:

    Include LIST P=16F873

    REG2 EQU 20HREG3 EQU 21H

    ORG 0MOVLW 0TRIS PORT B ;CONFIGURAR PUERTO B TODO COMO SALIDA.MOVLW .255TRIS PORTC ;CONFIGURA EL PUERTO C COMO ENTRADA.

    SEC BTFSS PORTC,2 ;PULSADOR DE SELECCIN DE DIRECCION.GOTO HOR

    LOOP MOVLW .9 ;SENTIDO ANTIHORARIO.MOVWF PORT BCALL RETARDO

    MOVLW .3CALL RETARDOMOVLW .6MOVWF PORT BCALL RETARDOMOVLW .12MOVWF PORT BCALL RETARDOGOTO SEC

    HOR MOVLW .12 ;SENTIDO HORARIO.MOVWF PORT BCALL RETARDOMOVLW .6MOVWF PORTBCALL RETARDOMOVLW .3MOVWF PORTBCALL RETARDOMOVLW .9MOVWF PORTBCALL RETARDOGOTO SEC

    RETARDO MOVLW .132MOVWF REG2

    REP2 MOVLW .255MOVWF REG3

    REP1 DECFSZ REG3,FGOTO REP1DECFSZ REG2,FGOTO REP2RETURNEND ;FIN DEL PROGRAMA.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    54/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 52

    23. EXPLICACIN DE LAS INSTRUCCIONES DE ROTACIN

    Existen dos instrucciones de rotacin de un registro a la derecha o a la izquierda atravs del carry.

    RLF f,d Rotacin de f a la izquierda a travs del carry

    RRF f,d Rotacin de f a la derecha a travs del carry

    Como Utilizar las Instrucciones de Rotacin

    Ejemplo 1: Como ejemplo haremos un programa que inicialmente encienda todaslos bits del puerto B y luego los vaya apagando, uno por uno, comenzandopor el bit 0.

    IncludeLIST P=16F873, R=HEX

    ORG 0MOVLW b'00000000' ; CARGA W CON 00000000TRIS PORTB ; CONFIGURA EL PUERTO B COMO SALIDA

    INICIO MOVLW b'11111111' ; CARGA W CON 11111111MOVWF PORTB ; ACTIVA TODOS LOS BITS DEL PUERTO B

    LOOP BCF STATUS,C ; PONE EN "0" EL BIT CARRYRLF PORTB,F ; ROTA A LA IZQUIERDA EL PORTBBTFSS PORTB,7 ; PREGUNTA RB7 ESTA EN UNOGOTO INICIO ; SI RB7 = 0, SALTA A INICIOGOTO LOOP ; SI RB7 = 1, SALTA A LOOPEND

    Registro f

    Registro f

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    55/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 53

    Ejemplo 2: Este programa genera una secuencia en la que un uno (led encendido)rota desde el bit cero del RB0 hasta el bit 7 RB7 y una vez termina pone losbits en cero desde RB0 hasta RB7.

    Inicio

    Poner en 0 PortB

    Poner en 1 RB0

    Llamar retardo 1 seg

    Poner en 1 el carry

    Rotar a la izq a travesde carry

    Llamar retardo 1 seg

    RB7 =1?

    Poner en "0" el carry

    Rotar a derecha atravs de carry

    Llamar retardo 1 seg

    RB0=0?

    Llamar retardo 1 seg

    Si

    Si

    No

    No

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    56/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 54

    Programa:

    Include LIST P= 16F873, R=HEX

    REG1 EQU 20HREG2 EQU 21HREG3 EQU 22H

    ORG 0MOVLW 0TRIS PORTB ;CONFIGURA EL PUERTO B COMO SALIDA.

    LOOP CLRF PORTB ;LIMPIA EL PUERTO B.BSF PORTB,0 ;PONE EN 1 EL BIT 0 DEL PUERTO B.CALL RETARDO ;LLAMA UN RETARDO DE UN SEGUNDO.

    REP BSF STATUS,C ;COLOCA LA BANDERA DE CARRY EN 1.RLF PORTB,F ;ROTA A LA IZQUIERDA A TRAVES DEL

    CARRY (EL UNO SE ALMACENA EN F ).CALL RETARDO ;LLAMA EL RETARDO DE UN SEGUNDO.BTFSS PORTB,7 ;SI EL BIT7 DEL PUERTO B ES 0.GOTO REP ;SALTA A REP

    LOOP 10 BCF STATUS,C ;PONE EN CERO (0) EL CARRYRRF PORTB,F ;ROTA A LA DERECHA A TRAVS DE CARRY.CALL RETARDO ;LLAMA RETARDO DE UN SEGUNDOBTFSS PORT B,OGOTO LOOP 10GOTO LOOP

    RETARDO MOVLW .10MOVWF REG1REP3 MOVLW .132MOVWF REG2

    REP2 MOVLW .255MOVWF REG3

    REP1 DECFSZ REG3,FGOTO REP1DECFSZ REG2,FGOTO REP3DECFSZ REG1,FGOTO REP3RETURN

    END ;FIN DEL PROGRAMA

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    57/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 55

    24. MANEJO DE DISPLAY 7 SEGMENTOS Y ANTIREBOTE

    Conexin de Display 7 segmentos

    Cuando se quiere mostrar datos en display, existen dos opciones para hacerlo, unautilizar un decodificador BCD a 7 segmentos despus del microcontrolador, y otra esgenerar con el mismo microcontrolador el cdigo 7 segmentos equivalente a cadanumero de 0 a 9.En este caso se har el decodificador BCD a 7 segmentos con el mismomicrocontrolador.Antes de explicar como mostrar datos en un display con el mocrocontrolador, serecordar que hace un decodificador BCD a 7 segmentos

    El decodificador BCD a 7 segmentos me convierte el cdigo BCD a cdigo 7segmentos, encendiendo los segmentos correspondientes al numero, por ejemplo elnumero cero (0000 en BCD) debe encender los segmentos a, b, c, d, e y f, el numerocuatro (0100 en BCD) debe encender los segmentos b, c, e, f y g.

    As se podra seguir indicando que segmentos se encienden con cada numero, sinembargo nos centraremos en la forma como el microcontrolador lo har.

    Se pretende que el mismo microcontrolador maneje directamente el display sinutilizar decodificadores.La conexin del microcontrolador con el display ser la siguiente:

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    58/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 56

    Para lograr este objetivo se necesita entender el manejo de tablas conmicrocontroladores, en la tabla se almacena cada uno de los cdigos 7 segmentosde cada numero.

    CODIGO 7 SEGMENTOSRB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0NUMERO

    g f e d c b a0 X 0 1 1 1 1 1 1

    1 X 0 0 0 0 1 1 02 X 1 0 1 1 0 1 13 X 1 0 0 1 1 1 14 X 1 1 0 0 1 1 05 X 1 1 0 1 1 0 16 X 1 1 1 1 1 0 07 X 0 0 0 0 1 1 18 X 1 1 1 1 1 1 19 X 1 1 0 0 1 1 1

    Las tablas se manejan como si se trataran de rutinas. La clave esta en colocar en Wel valor que se quiere mostrar en el display, lgicamente este valor debe estar entre0 y 9, y hacer el llamado a la direccin base de la tabla. Dentro de la tabla debeexistir una primera instruccin que realiza una suma sobre el contador del programa,logrndose un salto relativo a ste. En la direccin en la cual el programa saltedeber incluir alguna instruccin que obliga a W a regresar o retornar el cdigocorrespondiente al valor 7 segmentos.Las instrucciones respectivas y la tabla son las siguientes:

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    59/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 57

    .

    .

    MOVF VALOR,W CARGAR EN W VALOR A MOSTRAR

    CALL TABLA LLAMAR TABLA DE DATOSMOVWF PORTB MOSTRAR VALOR EN PORTB

    .

    TABLA ADDWF PCL,F PCL + W

    RETLW B 00111111 CODIGO PARA EL 0

    RETLW B 00000110 CODIGO PARA EL 1

    RETLW B 01011011 CODIGO PARA EL 2

    RETLWB 01001111 CODIGO PARA EL 3

    RETLW B 01100110 CODIGO PARA EL 4

    RETLW B 01101101 CODIGO PARA EL 5

    RETLW B 01111100 CODIGO PARA EL 6

    RETLW B 00000111 CODIGO PARA EL 7

    RETLW B 01111111 CODIGO PARA EL 8

    RETLW B 01100111 CODIGO PARA EL 9

    La instruccin ADDWF PCL,F suma el contenido de PCL + W y deja el resultado enPCL, esto hace que el microcontrolador salte a la posicin correspondiente al cdigopara cada numero y en esta posicin encuentra la instruccin RETLW B xxxxxxxx,sta instruccin le dice al microcontrolador que retorne de la subrutina pero que asu vez regrese en W el valor correspondiente al cdigo 7 segmentos del numero.

    25. TRABAJOS CON PULSADORES (ANTIRREBOTES)

    Cuando se trabaja con pulsadores o suiches, en el momento en que estos cambiande estado se genera una seal como la que se muestra en la figura:

    1

    0

    Es decir, el suiche o pulsador genera unos y ceros hasta que finalmente se estabilizadebido a que es un dispositivo electromecnico, el microcontrolador con su velocidadde trabajo se da cuenta de esto.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    60/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 58

    Para evitar errores en la deteccin de pulsadores y suiches se utilizan retardos de150 a 300ms aproximadamente, en el momento en que se detecta que un pulsador osuiche cambi de estado, este tiempo es suficiente mientras se estabiliza y luego, sepregunta nuevamente por el estado del suiche.

    El programa para detectar si un pulsador se oprimi, es el siguiente:Supongamos que el pulsador esta conectado a RC1.

    .

    .LOOP BTFSS PORTC,1 SI RC1 = 1, IGNORE LA SIGUIENTE INSTRUCCIN

    GOTO LOOP SALTA A LOOPCALL RET200ms LLAMA RETARDO DE 200 MS

    BTFSS PORTC,1 SI RC1 = 1, IGNORE LA SIGUIENTE INSTRUCCINGOTO FALSO SALTA A FALSOGOTO INCREM SALTA A INCREM.

    Pulsador = 1

    Retardo 200 ms

    Pulsador = 1

    S

    No

    No

    S

    FalsaAlarma

    El Pulsadorse oprimi

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    61/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 59

    26. EJEMPLO CON MANEJO DE DISPLAY

    En este ejemplo se har un conteo de 0 a 9 incrementando cada segundo y cuandollega a 9, comienza de nuevo el conteo.

    Inicio

    Contador=0

    Llamar retardo 1seg

    Incrementar contador

    Contador=10?

    Si

    No

    w=contador

    Saltar a tabla paraobtener codigo 7

    segmentos

    PortB=cod7 seg

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    62/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 60

    Programa:Include List p=16f873

    CONTADOR EQU 20REG EQU 21REG EQU 22REG EQU 23

    ORG 00MOVLW 0TRIS PORTB ;CONFIGURAR EL PORTB COMO SALIDA

    INICIO MOVLW 0MOVWF CONTADOR ;CARGAR EL CONTADOR CON 0

    LOOP MOVF CONTADOR,W;CONTADOR=WCALL TABLA ;LLAMAR TABLA

    MOVWF PORTB ;LLEVAR VALOR 7 SEGMENTOS A PORTBCALL RET1S ;LLAMA RETARDO 1S.INCF CONTADOR,FMOVLW .10 ;COMPARA CONTADOR CON 10XORWF CONTADOR,WBTFSC STATUS,2GOTO LOOPGOTO INICIO

    RET1S MOVLW .10MOVWF REG1

    REP3 MOVLW .132MOVWF REG2

    REP2 MOVLW .255MOVWF REG3

    REP1 DECFSZ REG3,FGOTO REP1

    DECFSZ REG2,FGOTO REP2DECFSZ REG1,FGOTO REP3RETURN

    TABLA ADDWF PCL,F ; PCL + WRETLW B 00111111 ; CODIGO PARA EL 0RETLW B 00000110 ; CODIGO PARA EL 1RETLW B 01011011 ; CODIGO PARA EL 2RETLW B 01001111 ; CODIGO PARA EL 3RETLW B 01100110 ; CODIGO PARA EL 4RETLW B 01101101 ; CODIGO PARA EL 5RETLW B 01111100 ; CODIGO PARA EL 6RETLW B 00000111 ; CODIGO PARA EL 7RETLW B 01111111 ; CODIGO PARA EL 8RETLW B 01100111 ; CODIGO PARA EL 9END ;FIN DEL PROGRAMA.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    63/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 61

    27. MULTIPLEXAJE DE DISPLAY

    En muchas ocasiones se requiere mostrar nmeros en display de mas de un dgito,es decir, 2, 3, o 4 dgitos.

    Si se pretende controlar cada display, se necesitan siete (7) lneas delmicrocontrolador por cada uno, esto ocupara todas las lneas disponibles en cadapuerto del microcontrolador, sin embargo existe una tcnica llamada multiplexaje queconsiste en conectar a las mismas 7 lneas los 2,3 o 4 display e ir encendiendo unoa uno los display, a travs de un transistor, tan rpidamente que perecenencendecen todos al mismo tiempo.Cualquier elemento que se encienda y apague con una frecuencia mayor a 25Hz esimperceptible para el ojo humano, ste lo ver encendido en todo momento.

    El circuito para manejar 2 display multiplexados puede ser el siguiente:

    Nota: los segmentos de cada display van unidos entre si, es decir a con a, b con b,hasta el g con g. y por cada display adicional se necesita un transistor y solo unalnea mas del microcontrolador.En este diagrama se asume que las unidades estn en el display de la derecha y lasdecenas en el display de la izquierda.

    El diagrama de flujo para mostrar datos en el display es el siguiente:

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    64/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 62

    Es importante aclarar que cuando se utiliza el multiplexaje con el display, se debeestar llamando constantemente en el programa principal la rutina de mostrar, esdecir que siempre que el programa principal este en un loop, dentro de ese loop sedebe llamar la subrutina de mostrar.

    W = Unidades

    Llamar tabla

    Llevar a PORTB

    Activar RC5 ydesactivar RC4

    W = decenas

    Return

    INICIO

    Llamar retardo 1ms

    Llamar tabla

    Activar RC4 ydesactivar RC5

    Llamar retardo 1ms

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    65/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 63

    El programa para la subrutina que me permite mostrar los nmeros en el display,segn el diagrama de flujo anterior es el siguiente:

    MOSTRAR MOVF DECE,W ; CARGA EN W EL VALOR DE LAS DECENASCALL TABLA ; LLAMA TABLAMOVWF PORTB ; LLEVA DECENAS A PORTBBSF PORTC,4 ; ACTIVA TRANSISTOR DE LAS DECENASBCF PORTC,5 ; DESACTIVA TRANSISTOR DE LAS UNIDADESCALL RETARDO ; LLAMA RETARDO DE 774 MICROSEGUNDOSMOVF UNID,W ; CARGA EN W EL VALOR DE LAS UNIDADESCALL TABLA ; LLAMA TABLAMOVWF PORTB ; LLEVA UNIDADES A PORTBBSF PORTC,5 ; DESACTIVA TRANSISTOR DE LAS DECENASBCF PORTC,4 ; ACTIVA TRANSISTOR DE LAS UNIDADESCALL RETARDO ; LLAMA RETARDO DE 774 MICROSEGUNDOSRETURN ; RETORNA DE LA SUBRUTINA

    TABLA ADDWF PCL,F ; PCL + WRETLW B 00111111 ; CODIGO PARA EL 0RETLW B 00000110 ; CODIGO PARA EL 1RETLW B 01011011 ; CODIGO PARA EL 2RETLW B 01001111 ; CODIGO PARA EL 3RETLW B 01100110 ; CODIGO PARA EL 4RETLW B 01101101 ; CODIGO PARA EL 5RETLW B 01111100 ; CODIGO PARA EL 6RETLW B 00000111 ; CODIGO PARA EL 7RETLW B 01111111 ; CODIGO PARA EL 8RETLW B 01100111 ; CODIGO PARA EL 9

    RETARDO MOVLW .255MOVWF REG1

    RET1 DECFSZ REG1,FGOTO RET1RETURN

    Esto ocurre cuando por ejemplo, se pregunta por un pulsador, donde se llama elretardo de 200 ms, la rutina mostrar debe estar dentro del retardo de 200ms y ascada vez que el programa principal este dentro de un loop.Otro caso es el retardo de un segundo, aqu tambin es necesario que la rutina demostrar haga parte del retardo de un segundo.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    66/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 64

    28. EJEMPLO DE MULTIPLEXAJE

    En este ejemplo solo mostraremos el numero 57 en los displays.

    Valor1=5

    Valor2=7

    Llevar valor1 a PortB

    Habilitar transistor devalor1(RC0) y deshabilitartransistor de valor2(RC1)

    Retardo de 1ms

    Llevar valor2 a PortB

    Habilitar transistor devalor2(RC1) y deshabilitartransistor de valor1(RC0)

    Retardo de 1ms

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    67/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 65

    Programa:INCLUDE LIST P=16F873, R = HEX

    R12 EQU 20HVALOR 1 EQU 21HVALOR 2 EQU 22H

    MOVLW 0TRIS PORTB ;CONFIGURAR EL PERTO B TODO COMO SALIDA.MOVLW 0TRIS PORTC ;CONFIGURA EL PUERTO C COMO SALIDA.MOVLW .7 ;CARGA W CON 7.MOVWF VALOR 2 ;LLEVA 7 A VALOR 2.MOVLW .5 ;CARGA W CON 5.MOVWF VALOR 1 ;LLEVA 5 A VALOR 1.

    LOOP 1 MOVF VALOR 1,W ;LLEVA VALOR 1 A W.CALL TABLA ;LLAMA A TABLA PARA ENCONTRAR EL VALOR

    7 SEGMENTOS DEL NUMERO 5.MOVWF PORTB ;LLEVA EL VALOR 7 SEG AL PUERTO B.MOVLW .1MOVWF PORT C ;HABILITA EL TRANSISTOR

    CORRESPONDIENTE A VALOR1 (RC0)CALL RETARDOMOVF VALOR 2,W ;LLEVA VALOR 2 A W.CALL TABLA ;CONVIERTE VALOR 2 A CODIGO 7

    SEGMENTOS.MOVWF PORT B ;SACA AL PUERTO B EL VALOR 2.MOVLW .2MOVWF PORTC ;HABILITA EL TRANSISTOR DE VALOR2 (RC1).CALL RETARDOGOTO LOOP1

    RETARDO MOVLW .255 ;RETARDO DE 1 mS APROX.MOVWF R12

    REP DECFSZ R12,FGOTO REP

    TABLA ADDWF PCL,F ; PCL + WRETLW B 00111111 ; CODIGO PARA EL 0RETLW B 00000110 ; CODIGO PARA EL 1RETLW B 01011011 ; CODIGO PARA EL 2RETLW B 01001111 ; CODIGO PARA EL 3RETLW B 01100110 ; CODIGO PARA EL 4RETLW B 01101101 ; CODIGO PARA EL 5RETLW B 01111100 ; CODIGO PARA EL 6

    RETLW B 00000111 ; CODIGO PARA EL 7RETLW B 01111111 ; CODIGO PARA EL 8RETLW B 01100111 ; CODIGO PARA EL 9

    RETARDO MOVLW .255MOVWF REG1

    RET1 DECFSZ REG1,FGOTO RET1 RETURNEND ;FIN DEL PROGRAMA.

  • 7/29/2019 Pic Microcontroladores(Ejemplos Interesantes)

    68/88

    MICROCONTROLADORES

    INGENIERIA DE DISEO DE PRODUCTO 66

    29. INTERRUPCIONES

    Las llamadas subrutinas mediante la instruccin CALL hacen que el programaejecute un subprogr