Micro Control Adores

43
I.P.E.T. Juan XXIII Computadoras Electrónicas Gustavo A. Yarce Paraná - Entre Ríos 2011

Transcript of Micro Control Adores

Page 1: Micro Control Adores

I.P.E.T. Juan XXIII

Computadoras Electrónicas

Gustavo A. Yarce

Paraná - Entre Ríos2011

Page 2: Micro Control Adores

2 Gustavo A. Yarce

Page 3: Micro Control Adores

Índice general

1. Microcontroladores 91.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2. Estructura de un microcontrolador . . . . . . . . . . . . . . . . . . 10

2. El PIC16f873 132.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2. El reloj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3. Osciladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4. Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Estructura de la memoria 193.1. Memoria de Programa . . . . . . . . . . . . . . . . . . . . . . . . . 193.2. Memoria de Datos(RAM) . . . . . . . . . . . . . . . . . . . . . . . 203.3. Registros Específicos - El PC . . . . . . . . . . . . . . . . . . . . . 20

3.3.1. La pila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.4. Direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.5. Los Puertos del PIC . . . . . . . . . . . . . . . . . . . . . . . . . . 243.6. Puerto A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.7. Puerto B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.8. Puerto C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.9. El Registro de Estado . . . . . . . . . . . . . . . . . . . . . . . . . 273.10. El acumulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4. Lenguaje Ensamblador 314.1. Instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2. Instrucciones del MPLAB . . . . . . . . . . . . . . . . . . . . . . . 344.3. Estructura de un programa ASM . . . . . . . . . . . . . . . . . . . 35

5. Programación 375.1. CALL - RETURN . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.2. Rutinas de retardo . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3

Page 4: Micro Control Adores

4 Gustavo A. Yarce

5.2.1. Rutina simple de retardo . . . . . . . . . . . . . . . . . . . . 385.2.2. Rutina de demora doble . . . . . . . . . . . . . . . . . . . . 395.2.3. Rutina de retardo triple . . . . . . . . . . . . . . . . . . . . 40

Page 5: Micro Control Adores

Índice de figuras

1.1. Estructura de sistema programable . . . . . . . . . . . . . . . . . . . . 91.2. Estructura de un microcontrolador . . . . . . . . . . . . . . . . . . . . 11

2.1. pic16f873 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2. Esquema del Ciclo de Instrucción . . . . . . . . . . . . . . . . . . . . 16

3.1. Organización de la memoria de Programa . . . . . . . . . . . . . . . . 193.2. Organización de la memoria RAM . . . . . . . . . . . . . . . . . . . . 21

5

Page 6: Micro Control Adores

6 Gustavo A. Yarce

Page 7: Micro Control Adores

Índice de tablas

3.1. Tabla de configuración de bancos . . . . . . . . . . . . . . . . . . . 203.2. Registro de Estado . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.1. Instrucciones orientadas a registros . . . . . . . . . . . . . . . . . . 324.2. Instrucciones orientadas a bit . . . . . . . . . . . . . . . . . . . . . 334.3. Instrucciones orientadas a literal y conrol . . . . . . . . . . . . . . . 33

7

Page 8: Micro Control Adores

PrologoEste documento no pretende ser un libro completo sobre microcontroladores,

es una ayuda para el alumno, para su utilización como guía de aprendizaje.Se tiene como objetivo presentar los conceptos básicos y las característicasgenerales de los dispositivos microprogramables, para el desarrollo y resoluciónde problemas que se presentan en el ámbito técnico.Los temas tratados y el desarrollo que se realiza sobre ellos persiguen la enseñanzaen entornos educativos técnicos de nivel medio que necesitan conocimientos sobreestas tecnologías.Se prioriza la enseñanza de una metodología de programación correcta tratandode conservar la facilidad de uso como herramienta. Siempre se considera que lomás importante es adquirir una base de conocimientos que permita una posteriorevolución hacia conocimientos relacionados con la Electrónica y la programación.

Page 9: Micro Control Adores

Capítulo 1

Microcontroladores

1.1. IntroducciónAntes de ver qué es un microcontrolador y de analizar sus puntos fuertes y sus

defectos, será útil hacer un repaso relativo a la estructura de cualquier sistemaprogramable, que pueda hacer uso de un microcontrolador.

Figura 1.1: Estructura de sistema programable

La figura 1.1 presenta el esquema tipo de cualquier sistema programable.Veamos que elementos son indispensables para su funcionamiento:

La unidad central

La memoria ROM

9

Page 10: Micro Control Adores

10 Gustavo A. Yarce

La memoria RAM

Los circuitos de interfaz

Un bus de interconexión

La presencia de estos elementos básicos es indispensable y aun cuando nosiempre se presenten tan claramente como en nuestro esquema siempre existen.Obsérvese, que son los mismos que los de un sistema informático clásico, perodentro del marco de una aplicación que pueda ser tratada por un microcontrolador.

La unidad central, generalmente constituida por un microprocesador máso menos evolucionado, ejecuta el programa que da vida a la aplicación. Losprogramas pueden ser muy diversos, puesto que, como es evidente, el que asegurala gestión de un termostato inteligente no tiene nada que ver con el que controlael correcto funcionamiento de una fotocopiadora. Sin embargo, estos programastienen en común el hecho de que muy raramente necesitan cálculos complejosy, en cambio, sí suelen incluir numerosas manipulaciones de la información deentrada/salida.

El programa se almacena en un segundo elemento, que es la memoria ROM.Esta memoria puede constituirse de diferentes formas: UVPROMUVPROM,EEPROM u OTPROMOTPROM, cualquiera que sea la que se utilice es unamemoria no volátil desde la que se ejecutará el programa una vez alimentadoel sistema. Para poder trabajar correctamente, nuestro microprocesador necesita,a menudo, almacenar datos temporales en alguna parte, y aquí es donde intervienela memoria RAM, que no necesita ser de grandes dimensiones.

1.2. Estructura de un microcontrolador

De lo visto anteriormente, un microcontrolador debe contener todos loselementos de la figura 1.1 en un único encapsulado. El esquema básico de unmicrocontrolador sería

Encontramos en él la unidad central pero se ha simplificado con respecto alos microprocesadores clásicos. En contrapartida se le han añadido instrucciones

Page 11: Micro Control Adores

Computadoras Electrónicas 11

Figura 1.2: Estructura de un microcontrolador

de manejo de bits, muy útiles para las entradas/salidas. En ciertos circuitos, estaunidad central está dotada de un gran número de registros internos, que sirven dememoria RAM, por lo que puede parecer que ésta última está ausente de algunosesquemas.

A continuación podemos ver la memoria ROM, aunque ésta no siempre aparece.Cierto número de microcontroladores estaban, y todavía están, disponibles sinROM (ROMless).

Posteriormente, los fabricantes han introducido en el chip una memoriaprogramable eléctricamente y borrable mediante rayos ultravioleta (UVPROM)o, más recientemente, borrable eléctricamente (EEPROM).

Un último producto para almacenar de forma no volátil son las memoriasFLASH, de bajo consumo, que se puede escribir y borrar en circuito al igualque las EEPROM, pero suelen disponer de mayor capacidad que estas últimas.El borrado solo es posible con bloques completos y no se puede realizar sobreposiciones concretas.

En lo referente a la memoria RAM, suele utilizarse una del tipo SRAM(RAM estática) de pequeño tamaño, por qué generalmente la unidad centralposee suficientes registros para realizar operaciones intermedias. En algunos casos,esta memoria se completa con una EEPROM de datos, que memoriza de formasemipermanente datos del usuario que se manejan como constante en la ejecucióndel programa y que de vez en cuando (pasados meses o años) deben ser modificados.

Page 12: Micro Control Adores

12 Gustavo A. Yarce

Algo más delicado es hacer un esquema tipo para los circuitos de interfaz, yaque es un punto donde se distinguen los diferentes microcontroladores, en funciónde las aplicaciones que pretenden. No obstante se pueden encontrar los siguienteselementos básicos:

Líneas de entrada/salida paralelo, en cantidad variable, según la finalidad yel tamaño del encapsulado (se plantea un problema de número máximo depines debido al crecimiento del número de estas líneas).

Al menos una interfaz de entrada/salida serie asíncrona, más o menosevolucionada según los circuitos.

Uno o varios temporizadores internos cuyas posibilidades pueden ser muyvariables pero que, generalmente, funcionan como contadores ascendentes ydescendentes, generadores de impulsos programables, etc.

Uno o varios convertidores analógicos/digitales, precedidos o no de multiple-xores para ofrecer varias vías.

A veces, pero es raro, un covertidor digital/analógico.

Por último, aunque no sea una verdadera interfaz de entrada/salida en elsentido en que nosotros entendemos, ciertos microcontroladores disponen de unacceso a su bus interno. Esto permite conectar con otros circuitos destinados acumplir funciones que faltan en el chip, lo que a veces resulta útil. Precisemos,aunque es evidente, que todos los microcontroladores sin memoria ROM internadisponen necesariamente de esta interfaz, puesto que es necesario permitirleacceder a una memoria ROM externa.

Page 13: Micro Control Adores

Capítulo 2

El PIC16f873

2.1. EstructuraMicrocontrolador diseñado por la empresa Microchip (http://www.microchip.com),

que se fabrica en varias versiones de las cuales se analizará con más detalle elpic16f873. Son idénticas en cuanto a su arquitectura interna todos los pic de lafamilia 16f87x a excepción de la memoria ROM y la memoria RAM y puertos.

La memoria EEPROM y la Flash son eléctricamente grabables y borrables,lo que permite escribir y borrar el programa bajo prueba manteniendo elmicrocontrolador en el mismo zócalo y usando el mismo dispositivo para grabary borrar. Esta característica supone una gran ventaja frente a la mayoría delos microcontroladores, que tienen como memoria de programa reescribible unatipo EPROM. Se graba eléctricamente, pero para borrarlas hay que someterlasdurante cierto tiempo a rayos ultravioleta, lo que implica sacar del zócalo el circuitointegrado y colocarlo en un borrador de EPROM.

Otra ventaja del PIC16F873 en cuanto a simplificar el proceso de escritura,borrado y reescritura de programas, tan necesario en la fase de diseño, es su sistemade grabación de datos, que se realiza en serie. Para escribir un programa en lamemoria se manda la información en serie usando sólo dos pins, una para la señalde reloj y otra para los datos serie. A continuación exponemos las característicasmás significativas:

Frecuencia de operación 20 MHz

Memoria FLASH de programa (palabra de 14 bits) 4k

13

Page 14: Micro Control Adores

14 Gustavo A. Yarce

Memoria de datos 192 bytes

Memoria de datos EEPROM 128 bytes

Interrupciones 13

Puertos de E/S Puertos A, B, C

Temporizadores 3

Módulos de Captura/Comparacion/PWM 2

Comunicación serial tipo MSSP, USART

Módulo de conversión Análogo-Digital (10 bits) 5 canales de entrada

Conjunto de 35 instrucciones

El PIC16F873 se presenta en un encapsulado de 28 pines como se ve en laFigura 2.1 y la descripción de cada pin se muestran en el cuadro

Figura 2.1: pic16f873

Page 15: Micro Control Adores

Computadoras Electrónicas 15

2.2. El relojLa frecuencia de trabajo del microcontrolador es un parámetro fundamental a

la hora de establecer la velocidad de ejecución de instrucciones y el consumo deenergía.

Cuando un PIC16F873 funciona a 20 MHz, que es su máxima frecuencia, lecorresponde un ciclo de instrucción de 200 ns, puesto que cada instrucción tardaen ejecutarse 4 períodos de reloj, o sea,

Ciclo de instruccion =4

fOSC

=4

20MHZ= 200ns

Todas las instrucciones del PIC se realizan en un ciclo de instrucción, menoslas de salto que tardan el doble.

Los impulsos de reloj entrar por la pin OSC1/CLKIN y se dividen por 4internamente, dando lugar a las señales Q1, Q2, Q3 y Q4. Durante un ciclo deinstrucción, que comprende las cuatro señales mencionadas, se desarrollan lassiguientes operaciones:

Q1: Durante este impulso se incrementa el Contador de Programa.

Q4: Durante este impulso se busca el código de la instrucción en la memoriadel programa y se carga en el Registro de Instrucciones.

Q2-Q3: Durante la activación de estas dos señales se produce la decodificacióny la ejecución de la instrucción.

Para conseguir ejecutar cada instrucción en un ciclo de instrucción (excepto lasde salto), se aplica la técnica de segmentación o pipe-line, que consiste en realizaren paralelo las dos fases que comprende cada instrucción.

La estructura segmentada del procesador permite realizar al mismo tiempo lafase de ejecución de una instrucción y la de búsqueda de la siguiente. Cuando lainstrucción ejecutada corresponde a un salto no se conoce cuál será la siguientehasta que se realice, por eso en esta situación se sustituye la fase de búsqueda porun ciclo “vacio”, originando que las instrucciones de salto tarde en realizarse dosciclos de instrucción.

Page 16: Micro Control Adores

16 Gustavo A. Yarce

Figura 2.2: Esquema del Ciclo de Instrucción

2.3. Osciladores

Los PIC admiten cuatro tipos de osciladores externos para aplicarles lafrecuencia de funcionamiento, se colocan entre las pins OSC1 y OSC2. El tipoempleado debe especificarse en dos bits de la “Palabra de Configuración”, como secomentará más adelante. Los tipos que se pueden emplear son:

Oscilador RC: Es un oscilador de bajo coste formado por una simpleresistencia y un condensador. Proporciona una estabilidad mediocre de lafrecuencia, cuyo valor depende de los valores de los dos elementos R-C.

Oscilador HS: Es un oscilador que alcanza una alta velocidad comprendidaentre 4 y 10 MHz y está basado en un cristal de cuarzo o un resonadorcerámico.

Oscilador XT: Es un oscilador de cristal o resonador para frecuenciasestándar comprendidas entre 100 KHz y 4 MHz.

Oscilador LP: Oscilador de bajo consumo con cristal o resonador diseñadopara trabajar en un rango de frecuencias de 35 a 200 KHz.

Page 17: Micro Control Adores

Computadoras Electrónicas 17

2.4. ResetCuando se aplica un nivel lógico bajo a la pin MCLR# el microcontrolador

reinicializa su estado. Dos acciones importantes se producen en la reinicializacióno Reset:

1. El Contador de Programa se carga con la dirección 0, apuntando a la primeradirección de la memoria de programa en donde deberá estar situada laprimera instrucción del programa de aplicación.

2. la mayoría de los registros de estado y control del procesador toman unestado conocido y determinado.

Se puede provocar el Reset de varias maneras, pero si se desea realizarmanualmente, habrá que colocar, conectado al pin MCLR#, que al ser apretadogenere un nivel lógico bajo.

Page 18: Micro Control Adores

18 Gustavo A. Yarce

Page 19: Micro Control Adores

Capítulo 3

Estructura de la memoria

3.1. Memoria de Programa

La memoria FLASH tiene una capacidad 4K palabras de 14 bits cada una. Estamemoria está dividida en páginas de 2K y esta direccionado con el PC(3.3), quetiene un tamaño de 13 bits.

Figura 3.1: Organización de la memoria de Programa

19

Page 20: Micro Control Adores

20 Gustavo A. Yarce

3.2. Memoria de Datos(RAM)La memoria RAM de datos de los PIC 16F873 posee una capacidad de 192

bytes, en una estructura de 4 bancos de 128 bytes cada uno.Para seleccionar el banco a acceder hay que manipular el bit 5 (RP0) y el bit 6(RP1) del registro ESTADO(03h).

BANCO RP1 RP00 0 01 0 12 1 03 1 1

Tabla 3.1: Tabla de configuración de bancos

La memoria de datos tiene posiciones implementadas en RAM y EEPROM,

1. Area de RAM estática o SRAM, se alojan los registros operativosfundamentales en el funcionamiento del procesador y en el manejo de todoslos periféricos y registros que el se pueden como información de trabajopropia de la aplicación.

2. Area EEPROM, de 64 bytes donde, opcionalmente, se pueden almacenardatos que no se pierden al deconectar la alimentación.

La zona de memoria RAM se halla dividida en 4 bancos (banco 0,1,2 y 3) de128 bytes cada uno.En las posiciones iniciales de cada banco se ubican los RegistrosEspecíficos que gobiernan al procesador y sus recursos

3.3. Registros Específicos - El PCLos 13 bits contenidos en el PC, que direccionan la memoria de código, están

guardados en dos registros específicos. El registro PCL(02h) guarda los 8 bits demenos peso y se puede leer y escribir. Los bits <12:8>del PC se alojan en PCH,

Page 21: Micro Control Adores

Computadoras Electrónicas 21

Figura 3.2: Organización de la memoria RAM

que al no poder ser leído ni escrito, se accede a él a través del PCLATH(0Ah).

Las instrucciones de salto CALL y GOTO sólo proporcionan 11 bits de ladirección a saltar, esto es una limitante del tamaño del salto que se puede producir,siendo su tamaño máximo de 2K.Al resetearse el PIC, todos los bits del PC toman valor 1, de manera que ladirección de arranque del programa es siempre la ultima posición de memoriade programa. En esta posición se deberá poner una instrucción de salto al puntodonde verdaderamente se inicia el programa. A diferencia de la mayoría de los

Page 22: Micro Control Adores

22 Gustavo A. Yarce

microprocesadores convencionales, el PC es también accesible al programadorcomo registro de memoria interna de datos, en la posición de 02. Es decir quecualquier instrucción común que opere sobre registros puede ser utilizada paraalterar el PC y desviar la ejecución del programa. El uso indiscriminado de estetipo de instrucciones complica el programa y puede ser muy peligroso, ya quepuede producir comportamientos difíciles de predecir. Sin embargo, algunas de estainstrucciones utilizadas con cierto método, pueden ser muy útiles para implementarpoderosas estructuras de control tales como el goto computado. Como el PIC operacon datos de 8 bits, y la memoria de datos es también de 8 bits, estas instruccionessolo pueden leer o modificar los bits 0 a 7 del PC.

Para saltar entre una página y otra, los bits más significativos del PC deberánser modificados. Debido a que las instrucciones GOTO y CALL sólo puedendireccionar un bloque de 2K (pues usan una dirección de 11 bits) deben existir otrosdos bits que completen los 13 bits del PC para moverse sobre los 4K de memoriade programa. Estos dos bits extra se encuentran en un SFR denominado PCLATH(Program Counter Latch High) en sus bits PCLATH<4:3>. Por esto antes de unGOTO o un CALL el usuario deberá asegurarse que estos bits apunten a la páginadeseada. Si las instrucciones se ejecutan secuencialmente el PC cruza librementelos límites de página sin necesidad de que el usuario escriba en el PCLATH.

3.3.1. La pila

La memoria de stack o pila es una area de memoria completamente separada dela memoria de datos y la memoria de programa. El stack consta de 8 niveles de 13bits cada uno. Esta memoria es usada por la CPU para almacenar las direccionesde retorno de subrutinas. El apuntador de stack no es ni legible ni escribible.Cuando se ejecuta una instrucción CALL o es reconocida una interrupción el PC esguardado en el stack y el apuntador de stack es incrementado en 1 para apuntar a lasiguiente posición vacía. A la inversa, cuando se ejecuta una instrucción RETURN,RETLW o RETFIE el contenido de la posición actual del stack es colocado en elPC.

El Stack o Pila, es una zona de memoria, transparente al usuario, con la cual sesalvan las direcciones cuando se ejecuta la instrucción CALL y las interrupciones,en esta zona se guarda el valor del PC(3.3). Es de vital importancia no sobrepasarel límite de 8 niveles en la realización de programas. PCLATH no se modificaen ninguna de estas operaciones y cuando el apuntador de stack ya está en laposición 8 y se ejecuta otro CALL se reinicia a la posición 1 sobrescribiendo endicha posición. No existe ningún indicador que avise de esta situación.

Page 23: Micro Control Adores

Computadoras Electrónicas 23

3.4. DireccionamientoEn los PIC de gama media la memoria de datos está organizada para alojar

un máximo de 4 bancos de 128 bytes cada uno. Los PIC16C84 sólo tienenimplementados los 48 primeros bytes de los bancos 0 y 1. En el resto de losPIC de esta familia se destinan dos bits del registro ESTADO (RP0 y RP1) paradeterminar el banco y otros siete

para elegir una de las 128 posiciones del banco seleccionado, tal y como muestrala figura 8.

Direccionamiento Directo: El operando que utiliza la instrucción en cursose referencia mediante su dirección, que viene incluida en el código OP dela misma, concretamente en los 7 bits de menos peso. El banco a accederlo determinan los bits RP0 y RP1 del registro ESTADO. En el caso delPIC16C84 sólo se usa el bit RP0 al tener implementados únicamente dosbancos. Se accede a la RAM de forma inmediata. La dirección de RAM ala que se quiere acceder está implícita en la propia instrucción. Por ejemplo:MOVWF 20 realiza una operación de escritura en la dirección 0x20. Estemodo de direccionamiento es el más habitual.

Direccionamiento Indirecto: Este modo de direccionamiento se usa cuandoen una instrucción se utiliza como operando el registro INDF, que ocupala dirección =de ambos bancos. En realidad el registro INDF no estáimplementado físicamente y cuando se le hace referencia, se accede a ladirección de un banco especificada con los bits de menos peso del registroFSR. El bit de más peso de FSR junto al bit IRP del registro ESTADO seencargan de seleccionar el banco a acceder, mientras que los 7 bits de menospeso apuntan a la posición. Como sólo hay dos bancos en el PIC16C84 eneste modo de direccionamiento, el bit IRP es 0 siempre. En este modo dedireccionamiento se utilizan dos registros especiales: FSR y INDF. FSR esun puntero de RAM, es decir, contiene la dirección de memoria a la quese desea acceder. El registro INDF, utiliza el valor del registro FSR paraacceder al registro deseado. Por ejemplo: si escribimos 20 en FSR y despuésescribimos 215 en INDF, habremos escrito un 215 en la dirección de memoria20 (que era la que contenía FSR). El direccionamiento indirecto se usa paramanejar tablas ó manipular segmentos de memoria. Por ejemplo, Podemosprogramar un bucle, en el cual, incrementamos el valor de FSR para accedera unas direcciones de memoria consecutivas.

Page 24: Micro Control Adores

24 Gustavo A. Yarce

3.5. Los Puertos del PIC

Los PIC16f873 disponen de tres puertos de E/S. La Puerta B tiene 8 líneas,RB0-RB7, y también tiene una con funciones multiplexadas, la RB0/INT, que,además de línea típica de E/S, también sirve como pin por la que reciben losimpulsos externos que provocan una interrupción. Además tenemos el puerto C,con 8 líneas.

Cada línea de E/S puede configurarse independientemente como entrada ocomo salida, según se ponga a 1 o a 0, respectivamente, el bit asociado del registrode configuración de cada puerta (TRISA, TRISB y TRISC). Se llaman PORTA,PORTB y PORTC los registros que guardan la información que entra o sale porla puerta y ocupan las direcciones 5 y 6 del banco 0 de la memoria de datos. Losregistros de configuración TRISA, TRISB Y TRISC ocupan las mismas direccionespero en el banco 1. Al reiniciarse el PIC todos los bits de los registros TRIS quedana 1, con lo que las líneas de las puertas quedan configuradas como entradas. Cadalínea de salida puede suministrar una corriente máxima de 20 mA y si es de entradapuede absorber hasta 25 mA. Al existir una limitación en la disipación máxima dela potencia del chip se restringe la corriente máxima de absorción de la Puerta Aa 80 mA y la de suministro a 50 mA. La Puerta B puede absorber un máximo de150 mA y suministrar un total de 100 mA.

3.6. Puerto A

La Puerta A posee 6 líneas, RA0-RA5, y soportan funciones multiplexadas.Son bidireccionales y dependen del valor del registro TRISA. Los pinesRA0/AN0,RA1/AN1 y RA2/AN2, además de líneas de E/S digitales tambiénpueden actuar como los canales 0,1 y 2 por los que se pueden utilizar como entradasal conversor A/D.El pin RA3/AN3,Vref+ puede actuar como entrada de la tensión de referenciapara los periféricos que la precisan. El pin RA4/TOCKI, que puede actuar comolínea de E/S o como el pin por la que se reciben los impulsos que debe contarTMR0.

Las líneas RA3-RA0 admiten niveles de entrada TTL y de salida CMOS. Lalínea RA4/TOCKI dispone de un circuito Trigger Schmitt que proporciona unabuena inmunidad al ruido y la salida tiene drenador abierto. RA4 multiplexa su

Page 25: Micro Control Adores

Computadoras Electrónicas 25

función de E/S con la entrada de impulsos externos para el TMR0. En el circuitode la figura 9 se muestra la adaptación de las pins RA3-RA0 a las señales internasdel procesador.

Cuando se lee una línea de la Puerta A se recoge el nivel lógico que tiene en esemomento. Las líneas cuando actúan como salidas están conectadas a unos biestable,lo que significa que sus pins sacan el nivel lógico que se haya cargado por última vezen el registro PUERTAA. La escritura de una puerta, tal y como se ve en la figura9, implica que primero se deposita el nivel lógico en la línea correspondiente del businterno de datos y se activa la señal WRITE, lo que origina el almacenamiento dedicho nivel en el biestable. En esta situación, el biestable de configuración (TRIS)debería tener valor 0 para que actuase como salida. Con estos valores la puerta ORtendría un 0 a su salida y la AND también. Estos valores producen la conducciónde los transistores MOS, en función del valor escrito, dando como salida final VDDo VSS (1 ó 0 respectivamente).

Si una línea actúa como entrada, el nivel lógico depositado en ella desdeel exterior pasa a la línea correspondiente del bus interno de datos cuando seactiva la señal READ y se hace conductor el dispositivo triestado que les une. Alprogramarse como entrada, los dos transistores MOS de salida quedan bloqueadosy la línea de alta impedancia. Téngase en cuenta que cuando se lee una línea deentrada se obtiene el estado actual que tiene su pin correspondiente (almacenadoen el tercer biestable) y no el que haya almacenado en el biestable de datos. Lainformación presente en una línea de entrada se muestrea al iniciarse el ciclo deinstrucción y debe matenerse estable durante su desarrollo.

Cuando se produce un RESET al conectar la tensión de alimentación(PowerOn Reset) todas las patitas de la puerta A quedan configuradas como canales deentrada para el conversor A/D y son leídas como 0. Para que el PORTA funcionecomo líneas de E/S digitales se debe configurar el valor adecuado en el ADCON1,en general se suele cargar en dicho registro el valor 011x en sus 4 bits de menospeso.

3.7. Puerto B

Consta de 8 líneas bidireccionales de E/S, RB7-RB0, cuya información sealmacena en el registro PORTB, que ocupa la dirección 6 del banco 0. El registrode configuración TRISB ocupa la misma dirección pero del banco 1. La líneaRB0/INT tiene dos funciones multiplexadas; además de pin de E/S actúa como lapin para la petición de una interrupción externa, cuando se autoriza esta función

Page 26: Micro Control Adores

26 Gustavo A. Yarce

mediante la adecuada programación del registro INTCON.Las cuatro líneas de más peso, RB7-RB4, pueden programarse para soportar

una misión especial. Cuando las 4 líneas actúan como entradas se las puedeprogramar para generar una interrupción si alguna de ellas cambia su estadológico. Esta posibilidad es muy práctica en el control de teclados. En la figura10 se muestra el esquema de conexionado entre las pins RB7-RB4 y las líneascorrespondientes del bus interno.

El estado de las pins RB7-RB4 en modo de entrada se compara con el valorantiguo que tenían y que se había almacenado en un biestable durante la últimalectura de la Puerta B. El cambio de estado en alguna de esas líneas origina unainterrupción y la activación del señalizador RBIF. La línea RB6 también se utilizapara la grabación serie de la memoria de programas y sirve para soportar la señalde reloj. La línea RB7 constituye la entrada de los datos en serie.

Los pines del puerto B disponen de una resistencia interna de pull-up al positivode la alimentación, que queda conectada cuando el bit RBPU#, que es el bit 7 delregistro OPTION, tiene el valor 0. Las resistencias pull up se utilizan para forzara un nivel alto una entrada de un componente lógico. Sirve por ejemplo cuandonecesitas leer el estado de un interruptor o una tecla. Cuando la tecla se activa selleva a un estado lógico determinado, pero cuando está abierta está al aire y loscircuitos lógicos hacen una interpretación indeterminada. La resistencia pull upfuerza a nivel lógico alto cuando está abierta y permite que se lleve a nivel bajoal cerrarse sin producir un cortocircuito. También puede servir cuando se conectauna entrada a una salida de colector abierto. El pull up suple la resistencia faltantedel driver de colector abierto

3.8. Puerto C

Consta de 8 líneas bidireccional cuyo sentido se configura mediante el registroTRISC,

El Puerto C tiene varias funciones en sus pines, tiene las funciones decomunicacion I2C, el reloj externo del timer 1, Usart, etc.

Cuando se usan los módulos relacionados con este puerto, se debe tener cuidadopues algunas veces cambia el estado E/S del pin sin importar lo que indique TRISC,para saber cuando si cambiaría debemos ver la descripción de cada módulo.Todos los buffers de este puerto son del tipo Schmitt Trigger, además poseen lassiguientes funciones multiplexadas:

Page 27: Micro Control Adores

Computadoras Electrónicas 27

RC0/T1OSO/T1CKI: E/S, puede ser también salida del Timer1 ó entradadel impulsos para el Timer1.

RC1/T1OSI/CCP2: E/S, puede ser también entrada al oscilador del Timer1ó entrada al módulo de captura 2, salida del comparador 2 , salida de PWM2.

RC2/CCP1: E/S, puede ser también entrada captura 1, salida comparador1 o salida PWM1.

RC3/SCK/SCL: E/S, puede ser también señal de reloj en modo SPI ó señalde reloj en modo I2C.

RC4/SDI/SDA: E/S, puede ser también entrada de datos en modo SPI oSeñal de reloj en modo I2C.

RC5/SD0: E/S, puede ser también salida de datos en modo SPI.

RC6/TX/CK: E/S, línea de transmisión eb USART ó señal de reloj síncronaen transmisión serie.

RC7/RX/DT: E/S, línea de recepción USART ó línea de datos entransmisión serie síncrona.

3.9. El Registro de Estado

Hasta ahora ESTADO es el registro más usado y llega el momento de describirloen su totalidad. Ocupa la dirección 3 tanto del banco 0 como del 1 de la memoriade datos RAM. Sus bits tienen tres misiones distintas:

1. Se encargan de avisar de la incidencias del resultado de la ALU (C, DC y Z).

2. Indican el estado de Reset (TO# y PD#).

3. Seleccionan el banco a acceder en la memoria de datos (IRP, RP0 y RP1)

En la tabla 3.2, se muestra el diagrama de distribución de los bits del registroESTADO, su misión es la siguiente:

Page 28: Micro Control Adores

28 Gustavo A. Yarce

IRP RP1 RP0 T0# PD# Z DC c7 6 5 4 3 2 1 0

Tabla 3.2: Registro de Estado

C: Acarreo en el bit de más peso1: Acarreo en el bit de más peso.0: No acarreo en el bit de más peso.

DC: Acarreo en el 4o bit1: Acarreo en el 4o bit.0: No acarreo en el 4o bit.

Z: Cero1: El resultado de una instrucción lógico-aritmética ha sido cero.0: El resultado de una instrucción lógico-aritmética no ha sido cero.

PD#: Power Down1: Se pone a este valor después de la conexión a la alimentación o al ejecutarclrwdt.0: Se pone a este valor al ejecutar sleep.

TO#: Time Out1: Se pone a este valor después de la conexión a la alimentación o al ejecutarclrwdt y sleep.0: Se pone a este valor al desbordarse el Perro Guardián (Watchdog).

RP1-RP0: Selección de banco en direccionamiento directoEl PIC16F873 tiene cuatro bancos, emplea el bit RP0 y RP1, de forma quese puede acceder a cualquier banco.

IRP: Selección del banco en direccionamiento indirectoEste bit junto con el de más peso del registro FSR sirven para determinar elbanco de la memoria de datos seleccionado.

Page 29: Micro Control Adores

Computadoras Electrónicas 29

3.10. El acumulador

Uno de los registros mas utilizado, es el registro de trabajo “W”, el cual, seutiliza para mover un dato/valor de un registro a otro, cargar valores en un registro,y con la ayuda de la ALU puede hacer operaciones matemáticas. El registro W noestá implementado en la memoria RAM en la posición 0x00 ni en otra posición.W es un registro independiente que tiene un bus directo con la ALU (un caminoprivado). La ALU es la única entidad que puede leer o escribir este registro detrabajo.

Page 30: Micro Control Adores

30 Gustavo A. Yarce

Page 31: Micro Control Adores

Capítulo 4

Lenguaje Ensamblador

4.1. InstruccionesEl juego de instrucciones de un microprocesador o microcontrolador es el con-

junto de entradas binarias que producen acciones definidas durante un ciclo deinstrucción. Un juego de instrucciones es para el microcontrolador lo mismo queuna tabla de verdad es para una puerta lógica, un registro de desplazamiento oun sumador. Por supuesto, las acciones que realiza un microcontrolador con cadainstrucción, son más complejas que las que realizan los dispositivos y puertas antesmencionados.

Una instrucción es un patrón de dígitos binarios el cual debe estar a disposicióndel microcontrolador en el tiempo y forma que éste lo requiera.

Por ejemplo, cuando el procesador de un microcontrolador PIC16F84A recibeel patrón binario de 12 bits ’0000 0100 0000’ en el momento adecuado, significa:Clear (borrar o poner a cero) el registro W, y corresponde a la instrucción CLRW.

Para los PIC se han creado unas instrucciones y una estructura de programaque los hacen más sencillos y atractivos todavía..

Las instrucciones de los microcontrolador PIC cumplen con las siguientescondiciones:

Juego de instrucciones reducido: Por ejemplo, solo existen 35 instruccionesen el PIC16F873.

Sencillas y rápidas: La mayoría se ejecuta en un ciclo de instrucción, y sololas de salto precisan 2 ciclos. El ciclo de instrucción consta de 4 ciclos dereloj principal. De esta manera un dispositivo con un cristal de cuarzo de 20MHz realiza 5 millones de instrucciones por segundo.

31

Page 32: Micro Control Adores

32 Gustavo A. Yarce

Ortogonalidad: La ubicación de los operandos que manejan es muy flexible.Cualquier objeto del procesador puede actuar como origen o como destino.

Formato uniforme de las instrucciones: Todas las instrucciones tienen unalongitud fija de bits. Esta característica significa un notable ahorro de lamemoria de programa y una facilidad en la construcción de compiladores.

Formato uniforme de los datos.

Un programa es una serie de instrucciones mediante las cuales un sistemabasado en CPU realiza una tarea en particular y la forma mas simple de realizar unprograma es mediante el lenguaje ensamblador (Ver Sistemas microprogramables,Lenguajes de programación para sistemas basados en CPU).

Podríamos decir que el lenguaje ensamblador “es complejo por su sencillez”.Esto quiere decir que, a diferencia de los lenguajes de alto nivel, aquí no hayfunciones que solucionen y simplifiquen algoritmos, si no que hay que implementarhasta los pasos más elementales.

Mnemónicos Descripción Flags CiclosADDWF f,d w + f → d C, DC, Z 1ANDWF f,d w AND f → d Z 1

CLRF f 00 h → f Z 1CLRW f 00 h → w Z 1COMF f,d Complemento de f → d Z 1DECF f,d f - 1 → d Z 1

DECFSZ f,d f - 1 → d (si es 0 salta) Ninguna 1(2)INCF f,d f + 1 → d Z 1

INCFSZ f,d f + 1 → d (si es 0 salta) Ninguna 1(2)IORWF f,d w OR f → d Z 1MOVF f,d f → d Z 1MOVWF f w → f Ninguna 1NOP - No operación Ninguna 1RLF f,d Rota f izq por carry → d C 1RRF f,d Rota f dcha por carry → d C 1

SUBWF f,d f - w → d C,DC,Z 1SWAPF f,d Intercambia nibbles de f → d Ninguna 1

Tabla 4.1: Instrucciones orientadas a registros

Page 33: Micro Control Adores

Computadoras Electrónicas 33

Mnemónicos Descripción Flags CiclosBCF f,b Pone a 0 bit b de registro f Ninguna 1BSF f,b Pone a 1 bit b de registro f Ninguna 1

BTFSC f,b Salto si bit b de reg. f es 0 Ninguna 1(2)BTFSS f,b Salto si bit b de reg. f es 1 Ninguna 1(2)

Tabla 4.2: Instrucciones orientadas a bit

Mnemónicos Descripción Flags CiclosADDLW k w + k → w C,DC,Z 1ANDLW k w AND k → w Z 1CALL k Llamada a subrutina k Ninguna 2

CLRWDT - Borra temporizador del WDT TO,PD 1GOTO k Ir a dirección k Ninguna 2IORLW k w OR k → w Z 1MOVLW k k → w Ninguna 1RETFIE - Retorno de una interrupción Ninguna 2RETLW k Retorno con k en w Ninguna 2RETURN - Retorno de una subrutina Ninguna 2SLEEP - Modo Standby TO, PD 1SUBLW k k - w → w C,DC,Z 1XORLW k w XOR k → w Z 1

Tabla 4.3: Instrucciones orientadas a literal y conrol

Notas:

Al modificar un registro de E/S con una operación sobre él mismo (porejemplo MOVF PORTB,1), el valor utilizado es el que se halle presente enlas patillas del PORTB. Por ejemplo, si el biestable tiene un “1” para unapatilla configurada como entrada y se pone a nivel bajo desde el exterior, eldato se volverá a escribir como “0”.

Si se ejecuta esta instrucción sobre el TMR0 y d=1, se borrará el conteode la preescala asignada (preescaler), si está asignado al TMR0, pero no seborrará la preescala asignada en OPTION_REG, que controla Timer0.

Si se modifica el Contador de Programa PC o una condición de prueba es

Page 34: Micro Control Adores

34 Gustavo A. Yarce

verdadera, la instrucción requiere dos ciclos máquina. El segundo ciclo seejecuta como un NOP.

En las tablas siguientes, por orden alfabético, veremos todos los datos de interéssobre las 35 instrucciones.

Algunos son de poca importancia. En cambio otros, como la operación,la sintaxis, el comportamiento del registro STATUS y los ejemplos, sonimprescindibles para comprender su funcionamiento.

Aparte de estas 35 instrucciones, hay otro tipo de instrucciones usadas parasimplificar la tarea de programar, y que generalmente están formadas por dosinstrucciones básicas. Estas no las trataremos a fondo, pero las veremos en unresumen después de comprender el funcionamiento de las 35 instrucciones básicas.

4.2. Instrucciones del MPLAB

No son propiamente instrucciones del microcontrolador, sino que son comandosinsertados en el programa que controlan el proceso de ensamblado Estos comandosno tienen traducción al código máquina. Suelen escribirse en la segunda columna.

Algunas de estas “pseudoinstrucciones” son:

END: Indica fin del programa. Es el único comando obligatorio ya que elensamblador necesita saber donde termina el proceso de ensamblado. Se poneen la última línea del programa. Todas las líneas posteriores a la línea en laque se encuentra esta directiva son ignoradas y no se ensamblan.

ORG: Su sintaxis es:

[<label>] ORG <expr>

Indica al programa ensamblador a partir de que posición de memoria deprograma tiene que ensamblar las instrucciones. Ejemplo: ORG 0x04Si las instrucciones de un programa comienzan a escribirse sin indicar ORG,el ensamblador toma por defecto ORG 0x00. Pueden escribirse varios ORGen el mismo programa

Page 35: Micro Control Adores

Computadoras Electrónicas 35

EQU. Su sintaxis es:

<label>EQU <expr>

Es una etiqueta de asignación. El valor <expr>es asignado a la etiqueta<label>. Usualmente las asignaciones EQU se ponen al principio delprograma (antes que las instrucciones). Siempre que <label>aparece en elprograma es sustituido por el valor numérico de la expresión que se le hayaasignado.

_ CONFIG. Esta directiva indica la configuración elegida para el proceso degrabación del microcontrolador.Ejemplo:

_CONFIG _CP_OFF & _WDT_OFF & PWRTE_ON & _XT_OSC

En este caso la configuración elegida es:

• No hay protección de código (_CP_OFF)

• No se habilita el Watchdog (_WDT_OFF)

• Se habilita el Reset mediante Power-up Timer(_PWRTE_ON).

• Se utiliza el oscilador por cristal de cuarzo (_XT_OSC)

4.3. Estructura de un programa ASME general la estructura del programa en ensamblador tiene, 3 columnas

obligatoria, la primer columna es la “ETIQUETA” y sirve para darle el nombrea una posición de la memoria del programa al que se necesita apuntar(EQU.La segunda columna, se llama “INSTRUCCIÓN” y lo que justamente hace,es una instrucción a realizar por el programa. La tercera columna, se llama“OPERANDO” y es el operando de una instrucción, o sea, de la segunda columna.Hay instrucciones que no tienen operando.

Opcionalmente se puede incluir un cuarta columna, llamada “OBSERVACIO-NES” y sirve solo para el usuario, el que está programando el PIC. Comienzan conun “;” (punto y coma)

Page 36: Micro Control Adores

36 Gustavo A. Yarce

Page 37: Micro Control Adores

Capítulo 5

Programación

5.1. CALL - RETURN

La instrucción CALL ( llamada la subrutina) consigue que la ejecución delprograma continúe en la dirección donde se encuentra la subrutina a la que hacereferencia. Es similar a GOTO pero coloca en la pila la dirección de la siguienteinstrucción que se debe ejecutar después de la CALL. La subrutina finaliza con lainstrucción RETURN (Retorno de la subrutina) que retoma la dirección guardadaen le pila y la coloca en el contador del programa PC continuando el flujo decontrol con la instrucción que sigue a la CALL.

En la familia PIC de gama media la pila tiene ocho niveles de memoria deltipo FIFO (primero en entrar, último en salir). Si se produce la llamada a unasubrutina durante la ejecución de otra subrutina, la dirección de retorno de estasegunda es colocada en la cima de la pila sobre la dirección anterior. Esta segundadirección es la primera en salir de la pila mediante la instrucción RETURN. Conla pila de ocho niveles, una subrutina puede llamar a otra y ésta, a su vez, llamar aotra hasta un máximo de ocho. La gama baja sólo puede realizar dos llamadas deeste tipo al poseer una pila de sólo dos niveles. Las subrutinas deben colocarse alcomienzo de las páginas debido a que el bit 8 del contador del programa es puestoa 0 por la instrucción CALL (o por cualquier instrucción que modifica el PC). Lassubrutinas deben colocarse en la mitad inicial de las páginas (las 256 palabras).

37

Page 38: Micro Control Adores

38 Gustavo A. Yarce

5.2. Rutinas de retardo

5.2.1. Rutina simple de retardo

Una rutina de simple puede ser implementada como:

call retardo ;llama a la rutina de retardo

retardo movlw .k1 ;carga k1 en el acumuladormovwf mem1 ;guarda el valor del w en mem1

r1 decfsz mem1,1 ;decrementa mem1goto r1 ;se ejecuta esta inst. si dec. no es ceroreturn

Cuando ejecuta la instrucción “Call” esta lleva en ejecutarse 2 ciclos. Cuandoesta dentro de la rutina “retardo” se encuentra con la instrucción “movlw .k1”que consume 1 ciclo, luego ejecuta la instrucción “movwf mem1” que consume 1ciclo. Luego se ejecuta la parte principal de la rutina de demora, las instrucciones“decfsz mem1,1” y la instrucción “goto r1” se ejecutan (k1-1) veces, ya que mienstrasesta decrementado y no llega a cero no se saltea la instrucción goto, por lo tantomienstras no de cero el decremento la instrucción decfsz consume 1 ciclo y lainstrucción goto 2, por lo tanto,(k1-1 )*3 ciclos le lleva realizar este decremento,cuando llego a cero la instrucción decfsz consume 2 ciclos, por lo tanto el totalde ciclo de la rutina de demora es 3*(k1-1) + 2 ciclos. Luego retorna al programaprincipal mediante la instrucción “return” que consume 2 ciclos. El total de ciclosque lleva la rutina completa es 2 + 1 + 1 +(k1-1) + 2 = 35 ciclos, y el tiempoque consume esto es con un reloj de 4 Mhz, por lo tanto el perído es 2, 5e7; cadainstrucción consume 4 ciclos, por lo que el tiempo que tarda en ejecutarse cadainstrucción es 4 ∗ 2,5e− 7 = 1e−6.

La secuencia de demora es {3 ∗ 254 + 2 = 764}, el máximo tiempo que puederealizar la demora es

(2 + 1 + 1 + 3 ∗ 254 + 2 + 2) = 770ciclos

Lo que lleva un tiempo de 770 u seg.

Page 39: Micro Control Adores

Computadoras Electrónicas 39

5.2.2. Rutina de demora doble

Una rutina de doble puede ser implementada como:call retardo ;llama a la rutina de retardo

retardo movlw .k2 ;{1}movwf mem2 ;{2}

r2 movlw .k1 ;{3} carga k1 en el acumuladormovwf mem1 ;{4} guarda el valor del w en mem1

r1 decfsz mem1,1 ;{5} decrementa mem1goto r1 ;{6} se ejecuta esta instr. si el dec. <>0decfsz mem2,1 ;{7}goto r2 ;{8}return ;{9}

La instrucción “Call” consume 2 ciclos, luego se ejecuta la instrucción retardo,luego ejecuta la instrucción {1} que tarda 1 ciclo, luego se ejecuta la instrucción{2} - 1 ciclo. Luego ejecuta la instrucción {3} aquí esta tarda 1 ciclo, luego ejecutala instrucción {4} - 1 ciclo, luego se ejecuta la instrucción {5} {6} que ya fueanalizado en el punto anterior y tarda siempre 3*(k1-1)+2 ciclos. luego se ejecutala instrucción {7} que decrementa mem2, si el decremento no es cero tarda enejecutarse 1 ciclo y pasa a ejecutar la instrucción {8}, que vuelve a la instrucción{3}. Entonces el secuencia de instrucciones:

{3} 1 ciclo{4} 1 ciclo

{5} {6} 3*(k1-1)+2 ciclos{7} 1 ciclo{8} 2 cicloTotal 7+(3*(k1-1) ciclos

Esta secuencia ciclos se ejecutan en su totalidad (k2-1) veces. Luego la terceravez esta secuencia resulta en:

{3} 1 ciclo{4} 1 ciclo

{5} {6} 3*(k1-1)+2 ciclos{7} 2 ciclosTotal 6+3*(k1-1) ciclos

se ejecuta “decfsz mem2” como el decremento es 0 consume 2 ciclos

Page 40: Micro Control Adores

40 Gustavo A. Yarce

El total de ciclos consumidos en esta rutina2 + 1 + 1 + {(7 + (3 ∗ (k1− 1)) ∗ 2 + 6 + 3 ∗ (k1− 1)}+ 2 ciclosEl máximo tiempo que se tarda, se cargan mem1 y mem2 con 0FFh.La primera secuencia tarda

{3} 1 ciclo{4} 1 ciclo

{5} {6} 764 ciclos{7} 1 ciclo{8} 2 cicloTotal 769 ciclos

Esta secuencia se ejecuta 0Feh veces o 254 veces.La segunda secuencia es

{3} 1 ciclo{4} 1 ciclo

{5} {6} 764 ciclos{7} 2 ciclosTotal 768 ciclos

EL número de ciclos total es2 + 1 + 1 + {769 ∗ 254 + 768}+ 2 = 2 + 1 + 2 + {101}+ 2 = 196100ciclosLo que lleva un tiempo de 196100∗1e−6 = 0,1961 segundos o 196.1 milisegundos.

5.2.3. Rutina de retardo triple

retardo movlw .k3 ;{1}movwf mem3 ;{2}

r3 movlw .k2 ;{3}movwf mem2 ;{4}

r2 movlw .k1 ;{5}movwf mem1 ;{6}

r1 decfsz mem1,1 ;{7}goto r1 ;{8}decfsz mem2,1 ;{9}goto r2 ;{10}decfsz mem3,1 ;{11}goto r3 ;{12}return ;{13}

Page 41: Micro Control Adores

Computadoras Electrónicas 41

La llamada a subrutina “call” tarda 2 ciclos. Luego salta a la subrutina en lacual se encuentra con {1} y {2} que tardan en ejecutarse 2 ciclos. Luego entra enla rutina principal, entre las líneas {7}{8} tenemos el bucle simple el cual tardaen ejecutarse 3*(k1-1)+2 ciclos,

Entre las líneas {5}{6}{7}{8}{9}{10}, tenemos el bucle doble, el cual incluyeel bucle simple. Denominaremos a la expresión del bucle simple como

A = [3 ∗ (k1− 1) + 2]Por lo tanto el bucle doble puede expresarse como:

{5} 1 ciclo{6} 1 ciclo{A} A ciclos{9} 1 ciclo{10} 2 ciclos

Este bucle se ejecuta (k2-1). La expresión que rige el segundo bucle,

[(1+1+A+1+2)*(k2-1)]+[1+1+A+2]= [(5+A)*(k2-1]+[4+A]ciclos

Para indicar la expresión del bucle doble lo haremos como

B=[(5+A)*(k2-1)]+[4+A]

En la línea 3 comienza el bucle triple y finaliza en 12 la cual ocupa las siguienteslíneas:

3 1 ciclo4 1 cicloB B ciclos11 1 ciclo12 2 ciclos

C=[(1+1+B+1+2)*(k3-1)]+[1+1+B+2]=[(5+B)*(k3-1)]+[4+B]=

Page 42: Micro Control Adores

42 Gustavo A. Yarce

Para determinar una rutina generaliza es

A=[3*(k1-1)+2]B=[(5+A)*(k2-1)]+[4+A]C=[(5+B)*(k3-1)]+[4+B]

D = 2 + 1 +1 +C + 2

Para el máximo de los valores cargados en k1, k2 y k3 para 255.

A=[3*(255-1)+2]=764 ciclosB=[(5+764)*(255-1)]+[4+764] = [195326]+[768] = 196064 ciclosC=[(5+196094)*(255-1)]+[4+196094] = 50005244 ciclos

D = 2 + 1 + 1 + 50005244 + 2 = 50005250 ciclos

Para un oscilador de 4 MHz, el tiempo de ciclo de instrucción es t = 1e−6seg.

D= 50.005250 segundos

Page 43: Micro Control Adores

Índice alfabético

acumulador, 29

Call, 37ciclo de instrucción, 15contador de programa, 17, 20

direccionamiento, 23direccionamiento directo, 23direccionamiento indirecto, 23

EEPROM, 10, 13, 14EQU, 35Estado, 27estado, 20

FLASH, 11, 13, 19

instrucciones, 31

memoria de datos, 20

osciladores, 16

PC, 20, 22PIC, 24pic16f873, 13, 14pila, 22puerto a, 24puerto b, 25puerto c, 26

RAM, 10, 20registro de estado, 27reloj, 15reset, 17Retardo, 38

Return, 37ROM, 9, 10Rutina simple, 38

sistema programable, 9SRAM, 11

43