proteus c09

183
CAPÍTULO IX: Dispositivos CAPÍTULO IX: Dispositivos programables programables Estudio de memorias EPROM, PLDs y Estudio de memorias EPROM, PLDs y microcontroladores microcontroladores José Luis Sánchez Calero 2007

Upload: daniel-elektron

Post on 13-Jun-2015

232 views

Category:

Education


4 download

TRANSCRIPT

Page 1: Proteus c09

CAPÍTULO IX: Dispositivos programablesCAPÍTULO IX: Dispositivos programables

Estudio de memorias EPROM, PLDs y Estudio de memorias EPROM, PLDs y microcontroladoresmicrocontroladores

José Luis Sánchez Calero 2007

Page 2: Proteus c09

Memorias EVPROMMemorias EVPROM

Montad el circuito de la figura.Montad el circuito de la figura.

Page 3: Proteus c09

AutomatismoAutomatismo

Se trata de realizar un convertidor de binario Se trata de realizar un convertidor de binario a BCD. Con las sondas inyectoras de a BCD. Con las sondas inyectoras de entrada conectaremos código binario y en entrada conectaremos código binario y en los visualizadores aparecerá código BCD.los visualizadores aparecerá código BCD.

Esto quiere decir que una entrada igual a Esto quiere decir que una entrada igual a 1100 debe dar una salida igual 0001 0010.1100 debe dar una salida igual 0001 0010.

Lo primero que realizaremos será la tabla Lo primero que realizaremos será la tabla de conversión, que aparece en la siguiente de conversión, que aparece en la siguiente diapositiva.diapositiva.

Page 4: Proteus c09

Tabla de la verdadTabla de la verdad

DecimalDecimal Entradas Entradas SalidasSalidasA3 A2 A1 A0A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0D7 D6 D5 D4 D3 D2 D1 D0

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

22 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 33 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 44 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 55 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 66 0 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 77 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 88 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 99 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 1010 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1111 1 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1212 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1313 1 1 0 1 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1414 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1515 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1

Page 5: Proteus c09

Tabla de la verdadTabla de la verdad

Para grabar la EVPROM necesitaremos Para grabar la EVPROM necesitaremos crear un fichero binario con la tabla anterior.crear un fichero binario con la tabla anterior.

Para ello podemos emplear, a falta de otra Para ello podemos emplear, a falta de otra herramienta más cómoda, el bloc de notas.herramienta más cómoda, el bloc de notas.

Y para ello debemos saber cómo se Y para ello debemos saber cómo se interpreta un fichero binario estándar tipo interpreta un fichero binario estándar tipo INTEL 8 bits.INTEL 8 bits.

Page 6: Proteus c09

Fichero binario estándarFichero binario estándar

Nuestro fichero de grabación tendrá esta Nuestro fichero de grabación tendrá esta forma, en formato estándar.forma, en formato estándar.

:100000000001020304050607080910111213141554:100000000001020304050607080910111213141554

:00000001FF:00000001FFLa última línea

es fija

Primer byte a grabar

Siguientes bytes

Código de control

Nº de bytes del paquete,

en hexadecimal

Nº de paquete, en hexadecimal

Nº de orden del 1er. Byte, dentro

del paquete

Separación de comienzo del paquete

Page 7: Proteus c09

Obtención del CRCObtención del CRC

Para obtener el byte de control (CRC) hay Para obtener el byte de control (CRC) hay que sumar todos los bytes de la fila, eliminar que sumar todos los bytes de la fila, eliminar el acarreo que se produzca, para tener el acarreo que se produzca, para tener siempre un resultado de un byte, y, el siempre un resultado de un byte, y, el resultado final hay que restarlo de 100h.resultado final hay que restarlo de 100h.

En nuestro ejemplo: 10h+00h+00h+00h+00h+ En nuestro ejemplo: 10h+00h+00h+00h+00h+ 01h+02h+03h+04h+05h+06h+07h+08h+09h+ 01h+02h+03h+04h+05h+06h+07h+08h+09h+ 10h+11h+12h+13h+14h+15h = ACh10h+11h+12h+13h+14h+15h = ACh

100h – ACh = 100h – ACh = 54h54h

Page 8: Proteus c09

Fichero binarioFichero binario

Una vez escritas estas dos filas de datos en Una vez escritas estas dos filas de datos en el bloc de notas, salvaremos el fichero con el bloc de notas, salvaremos el fichero con extensión “.hex”. En nuestro ejemplo le extensión “.hex”. En nuestro ejemplo le hemos dado el nombre de hemos dado el nombre de “EVPROM01.hex”“EVPROM01.hex”

Page 9: Proteus c09

Grabación de la EVPROMGrabación de la EVPROM

Para grabar la EVPROM la seleccionamos y Para grabar la EVPROM la seleccionamos y la editamos. Se abrirá la ventana de la la editamos. Se abrirá la ventana de la figura.figura.

Pinchamos esta carpeta y buscamos el fichero

“.hex” a grabar. Después aceptamos y ya está grabada la memoria

Page 10: Proteus c09

FuncionamientoFuncionamiento

Arrancad la simulación y veréis cómo se Arrancad la simulación y veréis cómo se produce la conversión de binario a BCD.produce la conversión de binario a BCD.

Page 11: Proteus c09

Dispositivos PLDsDispositivos PLDs

Montad al circuito de la figura.Montad al circuito de la figura.

Page 12: Proteus c09

Dispositivos PLDsDispositivos PLDs

La sonda del reloj está en:La sonda del reloj está en:

Y así la programamos

Page 13: Proteus c09

Dispositivos PLDsDispositivos PLDs

Vamos a tomar como ejemplo una GAL22V10.Vamos a tomar como ejemplo una GAL22V10. En estos dispositivos podemos crear el fichero En estos dispositivos podemos crear el fichero

de grabación en formato de fusión de fusibles de grabación en formato de fusión de fusibles estándar (JEDEC), o en nuestro socorrido bloc estándar (JEDEC), o en nuestro socorrido bloc de notas, de acuerdo al formato que se da en de notas, de acuerdo al formato que se da en el fichero “GAL22V10VIRGEN.TXT”.el fichero “GAL22V10VIRGEN.TXT”.

El fichero del ejercicio se llama El fichero del ejercicio se llama “GAL22V10CONTAPAR_IMPAR”“GAL22V10CONTAPAR_IMPAR”

Page 14: Proteus c09

Grabación de la GALGrabación de la GAL

Al igual que hicimos con la EVPROM, Al igual que hicimos con la EVPROM, seleccionamos la GAL y la editamos.seleccionamos la GAL y la editamos.

Pinchamos ahí para buscar el fichero de

grabación

Page 15: Proteus c09

Seleccionar ficheroSeleccionar fichero

Es posible que haya que desplegar la ventana Es posible que haya que desplegar la ventana “Tipo de ficheros” para que aparezcan los “Tipo de ficheros” para que aparezcan los “.txt”“.txt”

1 Pinchad aquí para elegir “Todos los tipos de ficheros”

2 Elegid el fichero “.txt” a grabar

Page 16: Proteus c09

Grabación de la GALGrabación de la GAL

Una vez elegido el fichero, aceptamos... y Una vez elegido el fichero, aceptamos... y grabada la GAL.grabada la GAL.

Fichero elegido

Aceptamos

Page 17: Proteus c09

Prueba de funcionamientoPrueba de funcionamiento

El diseño corresponde a un contador que El diseño corresponde a un contador que sigue la secuencia pares o impares, en sigue la secuencia pares o impares, en contaje BCD.contaje BCD.

Con la entrada “M” cambiamos de secuencia, Con la entrada “M” cambiamos de secuencia, si la ponemos a 0. Para que siga la secuencia si la ponemos a 0. Para que siga la secuencia deseada debe estar a “1”. Esto quiere decir deseada debe estar a “1”. Esto quiere decir que si ponemos “M” siempre a 0, como estará que si ponemos “M” siempre a 0, como estará cambiando de secuencia continuamente, cambiando de secuencia continuamente, tendremos un contador BCD.tendremos un contador BCD.

Las entradas de Preset y Reset son síncronas Las entradas de Preset y Reset son síncronas en la GAL22V10.en la GAL22V10.

Page 18: Proteus c09

Prueba de funcionamientoPrueba de funcionamiento

Cuando deseemos cambiar la secuencia llevaremos M a 0. Cuando el contador haya pasado a la secuencia contraria

volveremos a poner M a 1 para que siga en la nueva secuencia.

Page 19: Proteus c09

MicrocontroladoresMicrocontroladores

Las explicaciones que seguirán se Las explicaciones que seguirán se desarrollan en torno al microcontrolador de desarrollan en torno al microcontrolador de Microchip PIC 16F876, que es el que Microchip PIC 16F876, que es el que estudiamos en el Ciclo Formativo Superior estudiamos en el Ciclo Formativo Superior de DESARROLLO DE PRODUCTOS de DESARROLLO DE PRODUCTOS ELECTRÓNICOS.ELECTRÓNICOS.

Page 20: Proteus c09

Circuito baseCircuito base

Diseñemos el circuito de la figura.Diseñemos el circuito de la figura.

Page 21: Proteus c09

Propuesta del programaPropuesta del programa

Una vez confeccionado el esquema del Una vez confeccionado el esquema del circuito hay que desarrollar el programa que circuito hay que desarrollar el programa que lo haga funcionar. En nuestro ejemplo vamos lo haga funcionar. En nuestro ejemplo vamos a realizar un programa que visualice HOLA a realizar un programa que visualice HOLA en una posición centrada de la fila superior de en una posición centrada de la fila superior de la pantalla LCD.la pantalla LCD.

Page 22: Proteus c09

Herramienta para programaHerramienta para programa

Para escribir el programa en lenguaje Para escribir el programa en lenguaje ensamblador podemos utilizar varias ensamblador podemos utilizar varias herramienta, incluso el bloc de notas de herramienta, incluso el bloc de notas de Windows. Nosotros utilizaremos MPLAB de Windows. Nosotros utilizaremos MPLAB de Microchip.Microchip.

Lo primero que nos encontramos es un Lo primero que nos encontramos es un fichero fuente (fichero fuente (SourceSource), al que llamaremos ), al que llamaremos saludo.asmsaludo.asm. La realización y comprensión de . La realización y comprensión de este programa corresponde a otra disciplina, este programa corresponde a otra disciplina, muy alejada del conocimiento de PROTEUS.muy alejada del conocimiento de PROTEUS.

Page 23: Proteus c09

Imagen del ensambladorImagen del ensamblador

Aspecto del programa ensamblador en bloc Aspecto del programa ensamblador en bloc de notas.de notas.

Page 24: Proteus c09

Menú Menú SourceSource

Disponiendo del fichero fuente ya podemos Disponiendo del fichero fuente ya podemos configurar todo el entorno PROTEUS para configurar todo el entorno PROTEUS para que puedan generarse el resto de ficheros que puedan generarse el resto de ficheros necesarios.necesarios.

Seleccionemos el menú Seleccionemos el menú SourceSource..

Page 25: Proteus c09

Añadir o quitar un fichero .asmAñadir o quitar un fichero .asm

Pincharemos sobre Pincharemos sobre Add/Remove Source Add/Remove Source files…files…

Page 26: Proteus c09

Ventana para añadir ficheroVentana para añadir fichero

Esto nos lleva a la ventana de la figura, Esto nos lleva a la ventana de la figura, donde elegiremos donde elegiremos NewNew (fichero nuevo). (fichero nuevo).

Page 27: Proteus c09

Inclusión del fichero fuenteInclusión del fichero fuente

Esto nos lleva a una ventana donde deberemos buscar Esto nos lleva a una ventana donde deberemos buscar nuestro fichero nuestro fichero saludo.asmsaludo.asm. Una vez abierto, se reflejará en . Una vez abierto, se reflejará en la ventana correspondiente, como muestra la figura. Si aquí la ventana correspondiente, como muestra la figura. Si aquí hubiese otro fichero de una simulación anterior, mediante el hubiese otro fichero de una simulación anterior, mediante el botón botón ChangeChange podremos cambiar de fichero fuente. podremos cambiar de fichero fuente.

Page 28: Proteus c09

Elección de herramientaElección de herramienta

La operación siguiente es decirle a La operación siguiente es decirle a PROTEUS qué herramienta, de las varias PROTEUS qué herramienta, de las varias que lleva, debe utilizar para generar el resto que lleva, debe utilizar para generar el resto de ficheros necesarios para simulación. de ficheros necesarios para simulación. Elegiremos Elegiremos MPASMMPASM, y aceptaremos., y aceptaremos.

Pinchamos aquí para desplegar lista

de herramientas

Se elige ésta

Page 29: Proteus c09

Observación del ficheroObservación del fichero

A partir de este momento, al desplegar el A partir de este momento, al desplegar el menu menu SourceSource veremos, debajo de las veremos, debajo de las opciones, el nombre del fichero elegido.opciones, el nombre del fichero elegido.

Aquí se ve el nombre del fichero seleccionado

Page 30: Proteus c09

Abrir el editorAbrir el editor Y si pinchamos sobre él se abre una ventana de edición Y si pinchamos sobre él se abre una ventana de edición

donde podemos retocar o modificar el código ensamblador.donde podemos retocar o modificar el código ensamblador.

Page 31: Proteus c09

Herramientas para códigosHerramientas para códigos

El paso siguiente es volver a desplegar el El paso siguiente es volver a desplegar el menú menú SourceSource y escoger la opción y escoger la opción Define Define Code Generation Tools…Code Generation Tools…

Page 32: Proteus c09

Herramientas para ensamblarHerramientas para ensamblar

Esta acción nos lleva a una ventana donde Esta acción nos lleva a una ventana donde debemos elegir las herramientas de debemos elegir las herramientas de desarrollo. Aquí volveremos a elegir desarrollo. Aquí volveremos a elegir MPASMMPASM, en la casilla de la figura., en la casilla de la figura.

Page 33: Proteus c09

Ruta de HerramientasRuta de Herramientas

Y, aunque PROTEUS ya da la ruta completa Y, aunque PROTEUS ya da la ruta completa donde se encuentra esa herramienta, donde se encuentra esa herramienta, deberemos asegurarnos que el camino es el deberemos asegurarnos que el camino es el que muestra la figura. Si no fuese así, que muestra la figura. Si no fuese así, mediante el botón mediante el botón BrowseBrowse deberemos deberemos buscar el fichero buscar el fichero MPASM.EXEMPASM.EXE, dentro de la , dentro de la carpeta carpeta ToolsTools, de PROTEUS., de PROTEUS.

Page 34: Proteus c09

Fichero HEXFichero HEX

En la misma ventana anterior deberemos En la misma ventana anterior deberemos asegurarnos que las opciones del apartado asegurarnos que las opciones del apartado Make RulesMake Rules están como en la figura. Aquí están como en la figura. Aquí observamos que se obtendrá un fichero tipo observamos que se obtendrá un fichero tipo HEXHEX a partir de un a partir de un ASMASM. Aquél será el que . Aquél será el que “grabaremos” en el micro.“grabaremos” en el micro.

Page 35: Proteus c09

Código LSTCódigo LST

El último apartado de la ventana de El último apartado de la ventana de Definición de Herramientas para Generación Definición de Herramientas para Generación de Códigos nos encontramos con la de Códigos nos encontramos con la Extracción de Datos para Depuración del Extracción de Datos para Depuración del programa. Debe de estar como en la figura.programa. Debe de estar como en la figura.

Page 36: Proteus c09

Fichero para código LSTFichero para código LST

Si la ruta del fichero Si la ruta del fichero MPASMDDX.EXEMPASMDDX.EXE no no fuese la mostrada, con el botón fuese la mostrada, con el botón BrowseBrowse podemos buscarlo, dentro de la carpeta podemos buscarlo, dentro de la carpeta ToolsTools que lleva PROTEUS. que lleva PROTEUS.

Page 37: Proteus c09

Buscar editorBuscar editor

El paso siguiente es asegurarnos de que el El paso siguiente es asegurarnos de que el programa de edición que emplearía programa de edición que emplearía PROTEUS, en caso de retoques o PROTEUS, en caso de retoques o modificaciones, es el apropiado. Para ello modificaciones, es el apropiado. Para ello pinchad como en la figura.pinchad como en la figura.

Page 38: Proteus c09

Elección de editorElección de editor

Se abre la ventana de selección de editores. Se abre la ventana de selección de editores. Elegid como en la figura; es lo que sale por Elegid como en la figura; es lo que sale por defecto.defecto.

Page 39: Proteus c09

Construcción de ficherosConstrucción de ficheros

Establecidas las herramientas, sólo falta Establecidas las herramientas, sólo falta decirle que nos “construya todo”. Eso lo decirle que nos “construya todo”. Eso lo conseguimos con la opción de la figura.conseguimos con la opción de la figura.

Hay que asegurarse que están, en la misma Hay que asegurarse que están, en la misma carpeta que el fichero fuente, todas las carpeta que el fichero fuente, todas las subrutinas que emplee el programa.subrutinas que emplee el programa.

Page 40: Proteus c09

Aviso final de construcciónAviso final de construcción

Si la operación se realiza con normalidad Si la operación se realiza con normalidad (sin errores), una ventana como la mostrada (sin errores), una ventana como la mostrada nos lo avisará. nos lo avisará.

Page 41: Proteus c09

Listado de códigos generadosListado de códigos generados

Si se hubiesen producido errores Si se hubiesen producido errores en el proceso, no se generarán los en el proceso, no se generarán los códigos necesarios para simular y códigos necesarios para simular y habrá que buscar la causa de esos habrá que buscar la causa de esos errores.errores.

Los códigos generados en un Los códigos generados en un proceso correcto, necesarios para proceso correcto, necesarios para la simulación y depuración, son la simulación y depuración, son

Page 42: Proteus c09

Preparando la simulaciónPreparando la simulación

Con los códigos generados ya podemos Con los códigos generados ya podemos arrancar la simulación.arrancar la simulación.

Y para ello lo primero que tenemos que Y para ello lo primero que tenemos que hacer es grabar el micro con el fichero hacer es grabar el micro con el fichero hexadecimal hexadecimal saludo.HEXsaludo.HEX. .

Page 43: Proteus c09

Edición del microEdición del micro

Pinchad sobre el chip, con botón secundario, Pinchad sobre el chip, con botón secundario, para marcarlo. Seguidamente botón primario para marcarlo. Seguidamente botón primario para editarlo. Sale la ventana de la figura.para editarlo. Sale la ventana de la figura.

Escribid aquí la frecuencia de trabajo del micro

Page 44: Proteus c09

Búsqueda fichero .HEXBúsqueda fichero .HEX

Pinchad sobre la carpeta de la ventana Pinchad sobre la carpeta de la ventana Program File:Program File: para abrir la búsqueda del para abrir la búsqueda del fichero fichero saludo.HEXsaludo.HEX..

Page 45: Proteus c09

Grabación del chip programableGrabación del chip programable

Una vez encontrado y abierto, quedará Una vez encontrado y abierto, quedará visible en la ventana anterior.visible en la ventana anterior.

Ya está grabado el PIC.Ya está grabado el PIC.

Page 46: Proteus c09

Simulación VSMSimulación VSM

Arrancad la simulación VSM y veréis el Arrancad la simulación VSM y veréis el circuito así:circuito así:

Page 47: Proteus c09

Programa a realizarPrograma a realizar

Vamos a estudiar las herramientas de Vamos a estudiar las herramientas de depuración paso a paso analizando un depuración paso a paso analizando un programa sencillo.programa sencillo.

Diseñemos el circuito que se muestra en la Diseñemos el circuito que se muestra en la figura de la siguiente diapositiva y realizemos figura de la siguiente diapositiva y realizemos el programa ensamblador para conseguir el programa ensamblador para conseguir una intermitencia de los visualizadores con una intermitencia de los visualizadores con cadencia de un segundo. Este programa se cadencia de un segundo. Este programa se llamará llamará contador.asmcontador.asm..

Page 48: Proteus c09

Circuito a montarCircuito a montar

Circuito a montar.Circuito a montar.

Page 49: Proteus c09

Programa de contadorPrograma de contador

El programa realiza un contador BCD, que El programa realiza un contador BCD, que visualiza el micro en un display de 7 visualiza el micro en un display de 7 segmentos de cátodo común.segmentos de cátodo común.

El fichero del programa se denomina El fichero del programa se denomina contador.asmcontador.asm, y puede abrirse con el bloc de , y puede abrirse con el bloc de notas.notas.

Con el bloc de notas podemos escribir Con el bloc de notas podemos escribir cualquier programa para simulación, con la cualquier programa para simulación, con la única precaución de guardarlo con la única precaución de guardarlo con la extensión extensión .asm.asm..

Page 50: Proteus c09

Generación de ficherosGeneración de ficheros

Seguid paso a paso la explicación de las Seguid paso a paso la explicación de las diapositivas 24 a 46 .diapositivas 24 a 46 .

Si todo ha ido perfectamente la simulación Si todo ha ido perfectamente la simulación VSM se realizará correctamente y se VSM se realizará correctamente y se visualizará un contador BCD con una visualizará un contador BCD con una cadencia de 1 seg.cadencia de 1 seg.

Pero vamos a realizar el seguimiento del Pero vamos a realizar el seguimiento del programa paso a paso, para analizar el programa paso a paso, para analizar el cambio de los diversos bloques internos del cambio de los diversos bloques internos del microcontrolador.microcontrolador.

Page 51: Proteus c09

Programación tiempo de pasoProgramación tiempo de paso

Lo primero que debemos programar es el Lo primero que debemos programar es el tiempo de un paso de programa. Si tiempo de un paso de programa. Si queremos que cada paso corresponda a una queremos que cada paso corresponda a una instrucción deberemos hacer el siguiente instrucción deberemos hacer el siguiente cálculo:cálculo:

Tinstrucción = 4 x TclockTinstrucción = 4 x Tclock

Tinstrucción = 4 x 250 ns = 1 Tinstrucción = 4 x 250 ns = 1 ss(Para un reloj de 4 MHz)(Para un reloj de 4 MHz)

Page 52: Proteus c09

Programación tiempo de pasoProgramación tiempo de paso

Así pues, procederemos a programar este Así pues, procederemos a programar este tiempo, así:tiempo, así:

En este menú…

…seleccionamos el tiempo adecuado a la

duración de la instrucción

Page 53: Proteus c09

Simular paso a pasoSimular paso a paso

Arrancad la simulación Arrancad la simulación paso a pasopaso a paso pulsando pulsando Ctrl + F12Ctrl + F12..

También conseguimos el mismo efecto También conseguimos el mismo efecto pinchando sobre el botón de pinchando sobre el botón de paso a pasopaso a paso..

O mediante O mediante Debug > Start/Restart Debug > Start/Restart DebuggingDebugging..

Page 54: Proteus c09

Ventanas para depuraciónVentanas para depuración

Si desplegáis el menú Si desplegáis el menú DebugDebug se os se os mostrarán todas las ventanas de depuración mostrarán todas las ventanas de depuración disponibles para el seguimiento del disponibles para el seguimiento del desarrollo del programa.desarrollo del programa.

Page 55: Proteus c09

Explicación de ventanas para Explicación de ventanas para depuracióndepuración

A continuación vamos a explicar todas las A continuación vamos a explicar todas las ventanas de depuración. Abrid el menú ventanas de depuración. Abrid el menú DebugDebug y pinchad sobre la primera que y pinchad sobre la primera que aparece.aparece.

Page 56: Proteus c09

Ventana Simulation LogVentana Simulation Log

Si en la ventana del menú Si en la ventana del menú DebugDebug pincháis pincháis sobre sobre Simulation LogSimulation Log se abrirá la ventana se abrirá la ventana correspondiente, que aparece en la figura de correspondiente, que aparece en la figura de la siguiente diapositiva.la siguiente diapositiva.

Page 57: Proteus c09

Ventana Simulation LogVentana Simulation Log

Y quedará la marca de ventana abierta.Y quedará la marca de ventana abierta.Marca de activación

Page 58: Proteus c09

Desplazar y modificar ventanaDesplazar y modificar ventana

La primera manipulación con la ventana es el La primera manipulación con la ventana es el desplazamiento y el cambio de dimensiones.desplazamiento y el cambio de dimensiones.

Estas operaciones se realizan como con Estas operaciones se realizan como con cualquier ventana de windows: pinchando y cualquier ventana de windows: pinchando y arrastrando sobre la banda azul de título, arrastrando sobre la banda azul de título, para mover, y pinchando y arrastrando sobre para mover, y pinchando y arrastrando sobre las esquinas o laterales para modificar las esquinas o laterales para modificar tamaño.tamaño.

Page 59: Proteus c09

Ventana de Código FuenteVentana de Código Fuente

Cerrad la ventana anterior, que es la que Cerrad la ventana anterior, que es la que menos necesitamos para analizar el menos necesitamos para analizar el programa.programa.

Abrid la ventana del código fuente del Abrid la ventana del código fuente del programa, pinchando en programa, pinchando en

Page 60: Proteus c09

Ventana de Código FuenteVentana de Código Fuente

Aparece el código fuente del programa.Aparece el código fuente del programa.

Page 61: Proteus c09

Edición de la ventanaEdición de la ventana

Si pinchamos con Si pinchamos con secundario sobre secundario sobre cualquier zona de la cualquier zona de la ventana del Código ventana del Código Fuente se edita y Fuente se edita y aparece la ventana aparece la ventana emergente de la figura.emergente de la figura.

Page 62: Proteus c09

Edición de la ventanaEdición de la ventana

Al editar la ventana de Código Fuente nos Al editar la ventana de Código Fuente nos aparecen tres opciones para ajustar el aspecto de aparecen tres opciones para ajustar el aspecto de la ventana a nuestro gusto.la ventana a nuestro gusto.

La primera de las tres opciones nos permite La primera de las tres opciones nos permite mostrar u ocultar la numeración de líneas de mostrar u ocultar la numeración de líneas de programa; la segunda opción hace lo mismo con programa; la segunda opción hace lo mismo con las direcciones de memoria, y la tercera, con los las direcciones de memoria, y la tercera, con los códigos de operación de las instrucciones.códigos de operación de las instrucciones.

La figura está programada para que se muestre, en La figura está programada para que se muestre, en la ventana de Código Fuente, solamente las la ventana de Código Fuente, solamente las direcciones de memoria.direcciones de memoria.

Page 63: Proteus c09

Edición de la ventanaEdición de la ventana

Si visualizamos las líneas del programa y el Si visualizamos las líneas del programa y el código hexadecimal de las instrucciones, la código hexadecimal de las instrucciones, la programación de las opciones quedará así:programación de las opciones quedará así:

Page 64: Proteus c09

Edición de la ventanaEdición de la ventana

Y el aspecto de la ventana de programa será Y el aspecto de la ventana de programa será éste:éste:

Líneas del programa

Direcciones del programa

Código hexadecimal de las instrucciones

Page 65: Proteus c09

Edición de la ventanaEdición de la ventana

Dejad visibles las líneas y la dirección.Dejad visibles las líneas y la dirección.

Page 66: Proteus c09

Edición de la ventanaEdición de la ventana

En la parte inferior de la ventana de edición En la parte inferior de la ventana de edición disponemos de dos opciones que nos disponemos de dos opciones que nos permitirán personalizar las letras y los permitirán personalizar las letras y los colores de la ventana de Código Fuente. colores de la ventana de Código Fuente. Probad estas opciones.Probad estas opciones.

Page 67: Proteus c09

Ventana de RegistrosVentana de Registros

Para ver la ventana que nos muestra todos Para ver la ventana que nos muestra todos los registros internos del micro, pinchad los registros internos del micro, pinchad sobre la opciónsobre la opción

Page 68: Proteus c09

Ventana de RegistrosVentana de Registros

Y obtenemos la ventana…Y obtenemos la ventana…

……donde se aprecian los registros más donde se aprecian los registros más utilizados del micro.utilizados del micro.

Pinchando con secundario dentro de la Pinchando con secundario dentro de la ventana se pueden cambiar colores y letras.ventana se pueden cambiar colores y letras.

Aparece esta ventana si pinchamos secundario dentro de la ventana de

registros

Page 69: Proteus c09

Ventana de Memoria de DatosVentana de Memoria de Datos

Pinchad según la figura, para abrir la Pinchad según la figura, para abrir la ventana que muestra el contenido de la ventana que muestra el contenido de la memoria de datos del chip.memoria de datos del chip.

Page 70: Proteus c09

Ventana de Memoria de DatosVentana de Memoria de Datos

Obtendremos la Obtendremos la ventana de la figura, ventana de la figura, donde vemos en donde vemos en hexadecimal y ASCII hexadecimal y ASCII el contenido de la el contenido de la memoria de datos.memoria de datos.

Posando el cursor en Posando el cursor en cualquier dato del cualquier dato del mapa nos aparece la mapa nos aparece la dirección y el dirección y el contenido.contenido.

Zona de códigos ASCII

Page 71: Proteus c09

Edición de ventana de Memoria de Edición de ventana de Memoria de DatosDatos

Pinchando con Pinchando con secundario encima secundario encima del bloque de la del bloque de la Memoria de Datos Memoria de Datos se despliega una se despliega una ventana con varias ventana con varias opciones muy opciones muy interesantes.interesantes.

Page 72: Proteus c09

Opciones de la ventana de Memoria de Opciones de la ventana de Memoria de DatosDatos

La primera de las opciones nos permite ir a La primera de las opciones nos permite ir a una determinada dirección.una determinada dirección.

Al pinchar sobre Goto…

Se abre una ventana para escribir la dirección a l que deseamos ir.

Escribid 48 y aceptad

Page 73: Proteus c09

Ir a dirección concreta de la Ir a dirección concreta de la Memoria de DatosMemoria de Datos

El resultado es que nos lleva a la dirección 48 El resultado es que nos lleva a la dirección 48 decimal, que en hexadecimal es la 30.decimal, que en hexadecimal es la 30.

Page 74: Proteus c09

Visualización-ocultación de datosVisualización-ocultación de datos

La opción mostrada permite mostrar u ocultar La opción mostrada permite mostrar u ocultar los datos ASCII de la ventana.los datos ASCII de la ventana.

Con la opción validada observaremos los datos

del banco en sus códigos ASCII

Desactivando la opción vemos que en el banco han desaparecido los

códigos ASCII del contenido de la memoria

Page 75: Proteus c09

Resaltar cambiosResaltar cambios

Esta opción permite que se resalten los

valores que han cambiado al arrancar el programa

Valores que han cambiado

Page 76: Proteus c09

Valores iniciales del bancoValores iniciales del banco

1 Pinchando sobre esta opción nos

mostrará los valores iniciales del banco

2 Nos aparece un aviso para que sepamos que

esta opción se desconecta después de la siguiente

simulación.

3 Si en la ventana de aviso anterior

hubiésemos aceptado, ahora veríamos los

valores iniciales

Page 77: Proteus c09

Valores iniciales del bancoValores iniciales del bancoLa opción habrá

quedado activada

Si volvemos a pinchar sobre la opción…

…de nuevo aparecen los valores que había dejado el programa al iniciarse.

Ahora podríamos seguir con la ejecución sin tener errores.

Page 78: Proteus c09

Visualización de datos modo byteVisualización de datos modo byte

Permite elegir que el modo de visualizar los Permite elegir que el modo de visualizar los datos del banco de registros sea por bytes.datos del banco de registros sea por bytes.

Por defecto está en visualización por byte

Aquí se ven los datos byte a byte

Page 79: Proteus c09

Visualización de datos modos textoVisualización de datos modos texto

Permite elegir que el modo de visualizar los Permite elegir que el modo de visualizar los datos del banco de registros sea en ASCII.datos del banco de registros sea en ASCII.

Aquí se ven los datos en formas de texto

Page 80: Proteus c09

Visualización de datos en forma de Visualización de datos en forma de palabra de dos bytespalabra de dos bytes

Aquí se ven los datos agrupados en palabras de dos bytes, empezando

por el LSB

Page 81: Proteus c09

Visualización de datos en forma de Visualización de datos en forma de palabra de dos bytespalabra de dos bytes

Aquí se ven los datos agrupados en palabras de dos bytes, empezando

por el MSB

Page 82: Proteus c09

Visualización de datos en forma de Visualización de datos en forma de doble palabra de dos bytesdoble palabra de dos bytes

Selección de visualización de datos en agrupados en doble

palabra de dos bytes cada una, empezando por el LSB

Y así se verán los datos según esta forma

Page 83: Proteus c09

Visualización de datos en forma de Visualización de datos en forma de doble palabra de dos bytesdoble palabra de dos bytes

Selección de visualización de datos en agrupados en doble

palabra de dos bytes cada una, empezando por el MSB

Y así se verán los datos según esta forma. Dejad el

modo “Byte” para seguir

Page 84: Proteus c09

Formato de visualización como datos de Formato de visualización como datos de cifras enteras con signocifras enteras con signo

Y así se verán los datos según esta forma

Page 85: Proteus c09

Formato de visualización como datos de Formato de visualización como datos de cifras enteras sin signocifras enteras sin signo

Y así se verán los datos según esta forma

Page 86: Proteus c09

Ventana de EEPROM de DatosVentana de EEPROM de Datos

Esta ventana se obtiene al pinchar la opción Esta ventana se obtiene al pinchar la opción de la figura.de la figura.

Page 87: Proteus c09

Ventana de EEPROM de DatosVentana de EEPROM de Datos

Y esta es la imagen obtenida de los 256 Y esta es la imagen obtenida de los 256 bytes de la EEPROM de datos interna.bytes de la EEPROM de datos interna.

Como no se ha grabado nada en ella los Como no se ha grabado nada en ella los datos permanecen en FFh.datos permanecen en FFh.

Page 88: Proteus c09

Ventana de EEPROM de ProgramaVentana de EEPROM de Programa

Esta ventana se obtiene al pinchar la opción Esta ventana se obtiene al pinchar la opción 7, según la figura.7, según la figura.

Page 89: Proteus c09

Ventana de EEPROM de ProgramaVentana de EEPROM de Programa

Estas son las instrucciones del programa Estas son las instrucciones del programa (empezando por el LSB)(empezando por el LSB)

Observad que las posiciones no grabadas están a “1”. Por eso, con los 14 bits de la instrucción la cantidad visualizada sería el

“3FFFh”, pero empezando por el LSB, “FF3Fh”

Page 90: Proteus c09

Ventana de EEPROM de ProgramaVentana de EEPROM de Programa

Aspecto de la ventana, visualizando las Aspecto de la ventana, visualizando las instrucciones completas con el byte de menor peso instrucciones completas con el byte de menor peso delante.delante.

Así es como nosotros leeríamos los códigos de operación de las

instrucciones

Page 91: Proteus c09

Ventana de PilaVentana de Pila

Seleccionando la opción 8 se obtiene la Seleccionando la opción 8 se obtiene la ventana de pila.ventana de pila.

Page 92: Proteus c09

Ventana de PilaVentana de Pila

Aspecto de la ventana de la Pila interna del Aspecto de la ventana de la Pila interna del micro. La entrada última es la que está micro. La entrada última es la que está marcada con la flecha. Es a la dirección que marcada con la flecha. Es a la dirección que saltará la CPU cuando encuentre una saltará la CPU cuando encuentre una instrucción de retorno, o donde se grabará la instrucción de retorno, o donde se grabará la dirección con un nuevo salto a subrutina.dirección con un nuevo salto a subrutina.

Última entrada en pila

Page 93: Proteus c09

Ventana de observaciónVentana de observación

Esta ventana se obtiene al seleccionar la Esta ventana se obtiene al seleccionar la opción 2.opción 2.

Page 94: Proteus c09

Ventana de observaciónVentana de observación

Tiene el aspecto de la figura, con un mínimo Tiene el aspecto de la figura, con un mínimo de dos columnas de observación.de dos columnas de observación.

Nos servirá para seleccionar los registros y Nos servirá para seleccionar los registros y variables que deseamos observar durante la variables que deseamos observar durante la depuración.depuración.

Como mínimo tendremos dos columnas en la

ventana: “Name” y “Value”

Page 95: Proteus c09

Separación de columnasSeparación de columnas

Si llevamos el cursor a la línea de separación Si llevamos el cursor a la línea de separación entre columnas, cambiará de aspecto y entre columnas, cambiará de aspecto y podemos arrastrar para variar la separación podemos arrastrar para variar la separación entre aquéllas.entre aquéllas.

Page 96: Proteus c09

Edición de ventana de observaciónEdición de ventana de observación

Si pincháis con secundario dentro de la ventana Si pincháis con secundario dentro de la ventana aparecerán las opciones de ediciónaparecerán las opciones de edición

Page 97: Proteus c09

Edición de ventana de observaciónEdición de ventana de observación

Añadid todas las opciones de la ventana Añadid todas las opciones de la ventana activando las casillas como en la figura.activando las casillas como en la figura.

Pinchad para validar

Page 98: Proteus c09

Edición de ventana de observaciónEdición de ventana de observación

Así quedará la ventana de observación:Así quedará la ventana de observación:

Hemos añadido una cuadrícula

Columna para ver la dirección de las variables

Columna para ver el tipo de las

variables elegidas

Columna para ver el valor de

la variable antes del cambio

Valor actual de la variable

Columna para comentarios sobre

las variables

Page 99: Proteus c09

Edición de ventana de observaciónEdición de ventana de observación

Y así quedará minimizada:Y así quedará minimizada:

Pinchamos aquí, o pulsamos espacio, para

minimizar la ventana

Así queda minimizada

Page 100: Proteus c09

Disponemos de las opciones conocidas para Disponemos de las opciones conocidas para modificar el aspecto de datos.modificar el aspecto de datos.

Edición de ventana de observaciónEdición de ventana de observación

Page 101: Proteus c09

Tipo de letras y coloresTipo de letras y colores

También aquí podemos cambiar el tipo y También aquí podemos cambiar el tipo y color de letra de la ventana.color de letra de la ventana.

Page 102: Proteus c09

Utilidad de la ventana de Utilidad de la ventana de observaciónobservación

Esta ventana es muy útil para extraer aparte Esta ventana es muy útil para extraer aparte ciertos registros, que son de especial interés ciertos registros, que son de especial interés en su observación.en su observación.

Vamos a sacar a la ventana tres registros de Vamos a sacar a la ventana tres registros de todos los posibles observables.todos los posibles observables.

Page 103: Proteus c09

Utilidad de la ventana de Utilidad de la ventana de observaciónobservación

Esta ventana es muy útil para extraer aparte Esta ventana es muy útil para extraer aparte ciertos registros, que son de especial interés ciertos registros, que son de especial interés en su observación.en su observación.

Vamos a sacar a la ventana dos registros de Vamos a sacar a la ventana dos registros de todos los posibles observables.todos los posibles observables.

En primer lugar vamos a dejar la ventana con En primer lugar vamos a dejar la ventana con tres columnas de observación, tal y como se tres columnas de observación, tal y como se ve en la siguiente diapositiva.ve en la siguiente diapositiva.

Page 104: Proteus c09

Utilidad de la ventana de Utilidad de la ventana de observaciónobservación

Recordad que las columnas Recordad que las columnas NameName y y ValueValue siempre aparecen por defecto. Es la siempre aparecen por defecto. Es la visualización mínima que se puede desear.visualización mínima que se puede desear.

Pincharemos aquí para añadir esta

columna

Pincharemos aquí para añadir

la rejilla

Así queda la ventana

Page 105: Proteus c09

Elección de registro observableElección de registro observable

Pinchad con secundario encima de la Pinchad con secundario encima de la ventana de observación y, en las opciones ventana de observación y, en las opciones desplegadas, elegid la de la figura.desplegadas, elegid la de la figura.

Page 106: Proteus c09

Elección de registro observableElección de registro observable

La acción anterior nos lleva a la ventana de la La acción anterior nos lleva a la ventana de la figura.figura.

Conjunto de registros observables en la

ventana

Aquí podemos elegir de entre dos grupos de

registros observables

Page 107: Proteus c09

Elección de registro observableElección de registro observable

Elección del otro grupo de registros.Elección del otro grupo de registros.

Page 108: Proteus c09

Elección de registro observableElección de registro observable

Elección del otro grupo de registros.Elección del otro grupo de registros.

Page 109: Proteus c09

Elección de registro observableElección de registro observable

Elección del registro PCL.Elección del registro PCL.Aquí seleccionamos el bloque de Memoria de

Datos de la CPU

Y aquí pinchamos dos veces para seleccionarlo

Page 110: Proteus c09

Elección de registro observableElección de registro observable

Así nos quedará el registro insertado en la Así nos quedará el registro insertado en la ventana de observación.ventana de observación.

La dirección del PCL dentro del banco de

registros internos es la 2hex

Como el programa se encuentra en el inicio, el PCL tendrá el valor 0. Tenemos el

valor en binario pero podemos cambiarlo a hexadecimal, si es

más cómodo

Page 111: Proteus c09

Elección de registro observableElección de registro observable

Si deseamos borrar o manipular este registro Si deseamos borrar o manipular este registro seleccionado, recordad que hay que pinchar seleccionado, recordad que hay que pinchar encima de él con secundario para desplegar encima de él con secundario para desplegar todas las posibilidades. Probadlo y lo dejáis todas las posibilidades. Probadlo y lo dejáis visualizado en valor hexadecimal. visualizado en valor hexadecimal.

En hexadecimal

Page 112: Proteus c09

Elección de registro observableElección de registro observable

Ahora vamos a extraer a ventana de Ahora vamos a extraer a ventana de observación el puerto B, pero siguiendo otra observación el puerto B, pero siguiendo otra posibilidad.posibilidad.

Pinchad con secundario en la ventana de Pinchad con secundario en la ventana de observación y elegid la opción de la figura.observación y elegid la opción de la figura.

Page 113: Proteus c09

Elección de registro observableElección de registro observable

Desplegando la ventana Desplegando la ventana MemoryMemory se puede se puede elegir el bloque de registros del que extraer.elegir el bloque de registros del que extraer.

Aquí podemos elegir el bloque a tratar

Opciones de visualización

Opciones de visualización

Page 114: Proteus c09

Elección de registro observableElección de registro observable

Pinchando en la ventana Pinchando en la ventana AddressAddress se se despliega el conjunto de registros.despliega el conjunto de registros.

Page 115: Proteus c09

Elección de registro observableElección de registro observable

Y pinchamos sobre Y pinchamos sobre PORTBPORTB..

Page 116: Proteus c09

Elección de registro observableElección de registro observable

En la ventana vemos que En la ventana vemos que PORTBPORTB posee la dirección 6h y se posee la dirección 6h y se va a visualizar en forma de byte y en binario.va a visualizar en forma de byte y en binario.

Añadimos y aceptamos

Page 117: Proteus c09

Elección de registro observableElección de registro observable

Y así queda la ventana de observación.Y así queda la ventana de observación.

Page 118: Proteus c09

Edición de ventana de código fuenteEdición de ventana de código fuente

Volvamos a visualizar el Código Fuente y Volvamos a visualizar el Código Fuente y editémoslo para que se vea como en la figura.editémoslo para que se vea como en la figura.

Page 119: Proteus c09

Búsqueda de línea de Código Búsqueda de línea de Código FuenteFuente

La primera opción activa de que disponemos La primera opción activa de que disponemos es:es:

Que nos permite ir a una línea determinada.Que nos permite ir a una línea determinada.

Pinchad aquí

Page 120: Proteus c09

Búsqueda de línea de Código Búsqueda de línea de Código FuenteFuente

Se abrirá la ventana de la figura que nos pide Se abrirá la ventana de la figura que nos pide el número de línea a ir.el número de línea a ir.

Escribid “5” en la ventana y aceptad

El resultado es que se resaltará la línea 5 del programa. Atención, que es línea 5, no dirección 5

Page 121: Proteus c09

Búsqueda de direcciónBúsqueda de dirección

Si deseamos ir a una determinada Si deseamos ir a una determinada instrucción, tendremos que editar la ventana instrucción, tendremos que editar la ventana del programa y seleccionar la opción de la del programa y seleccionar la opción de la figura.figura.

Page 122: Proteus c09

Búsqueda de direcciónBúsqueda de dirección

Este es el resultado:Este es el resultado:

Ésta sí es la instrucción 5ª del

programa, que está en la dirección 5

Page 123: Proteus c09

Búsqueda de palabraBúsqueda de palabra La siguiente opción se emplea para localizar una La siguiente opción se emplea para localizar una

determinada palabra del texto. Para empezar a determinada palabra del texto. Para empezar a buscar la palabra desde el principio será necesario buscar la palabra desde el principio será necesario llevar el cursor de la pantalla del programa al inicio.llevar el cursor de la pantalla del programa al inicio.

Pinchamos aquí para poner el cursor de búsqueda al inicio

Page 124: Proteus c09

Búsqueda de palabraBúsqueda de palabra

Ahora editamos y elegimos la opción de Ahora editamos y elegimos la opción de búsquedabúsqueda

Pinchamos en esta opción

Page 125: Proteus c09

Búsqueda de palabraBúsqueda de palabra

Con la acción anterior se abrirá una ventana Con la acción anterior se abrirá una ventana que nos pedirá la palabra a buscar, con que nos pedirá la palabra a buscar, con algunas condiciones de búsqueda.algunas condiciones de búsqueda.

1 Escribimos aquí el texto que se ve.

2 Activamos esta opción

Esta opción dice que va a buscar cualquier palabra

que contenga exactamente lo que hemos escrito. Y al

decir exactamente se tendrá en cuenta las

mayúsculas o minúsculas

Pinchamos

Page 126: Proteus c09

Búsqueda de palabraBúsqueda de palabra

El resultado es:El resultado es:

En la línea 4 ha encontrado el

término “contador”, que tiene los caracteres

exactamente que le hemos puesto en el texto de búsqueda.Observad cómo no

se ha detenido en la línea 2, porque la

palabra es la misma pero la “C” es mayúscula.

Aquí nos avisa en qué línea ha encontrado lo que buscamos

Pinchando aquí continuará la búsqueda

hacia atrásPinchando aquí continúa la búsqueda

hacia adelante

Page 127: Proteus c09

Búsqueda de palabraBúsqueda de palabra Si optamos por encontrar una palabra completa deberemos Si optamos por encontrar una palabra completa deberemos

escribir la palabra deseada y activar la casilla escribir la palabra deseada y activar la casilla Only Whole Only Whole Words?Words? En el ejemplo se ha buscado la palabra En el ejemplo se ha buscado la palabra contadorcontador..

Palabra a buscar. Ahora sólo importa la palabra, no las

mayúsculas

1 Al pinchar aquí…

2 …da como resultado la

detención en esta línea

Page 128: Proteus c09

Búsqueda de palabraBúsqueda de palabra

Pinchando repetidamente sobre Pinchando repetidamente sobre NextNext iremos iremos viendo las siguientes líneas que cumplen la viendo las siguientes líneas que cumplen la condición de búsqueda; si pinchamos sobre condición de búsqueda; si pinchamos sobre PreviousPrevious iremos viendo las líneas anteriores. iremos viendo las líneas anteriores.

Page 129: Proteus c09

Búsqueda de palabraBúsqueda de palabra

La ventana de búsqueda memoriza los La ventana de búsqueda memoriza los términos introducidos.términos introducidos.

En la figura se aprecian varias entradas En la figura se aprecian varias entradas empleadas como prueba.empleadas como prueba.

Pinchando aquí se despliega el listado

de búsquedas realizadas

Page 130: Proteus c09

Búsqueda de palabraBúsqueda de palabra

Si deseamos hacer búsquedas sucesivas Si deseamos hacer búsquedas sucesivas podemos optar por la solución rápida del podemos optar por la solución rápida del teclado, pulsando teclado, pulsando Ctrl + GCtrl + G, o mediante la , o mediante la opción desplegadaopción desplegada

Page 131: Proteus c09

Análisis de la ejecuciónAnálisis de la ejecución

Vistas las opciones de edición, vamos a Vistas las opciones de edición, vamos a entrar en el análisis de la ejecución del entrar en el análisis de la ejecución del programa.programa.

Vamos a visualizar en pantalla los siguientes Vamos a visualizar en pantalla los siguientes elementos: el esquema, el código fuente, los elementos: el esquema, el código fuente, los registros internos del micro, la RAM de registros internos del micro, la RAM de registros y la pila.registros y la pila.

Page 132: Proteus c09

Análisis de la ejecuciónAnálisis de la ejecución

Parad la simulación paso a paso y volvedla a Parad la simulación paso a paso y volvedla a arrancar.arrancar.

Ctrl+F12Ctrl+F12 para iniciar paso a paso, o con ratón para iniciar paso a paso, o con ratón el botón de la figura.el botón de la figura.

Pinchamos para detener

Page 133: Proteus c09

Pantalla de ejecución y análisisPantalla de ejecución y análisis

Page 134: Proteus c09

Pantalla de ejecución y análisisPantalla de ejecución y análisis

Pinchamos en la primera instrucción del Pinchamos en la primera instrucción del programa para que se activen los iconos de la programa para que se activen los iconos de la esquina superior derecha.esquina superior derecha.

Pinchamos en la instrucción de la

dirección 0h

Se activan

Page 135: Proteus c09

Icono de ejecución continuaIcono de ejecución continua

Si pinchamos este icono se arrancará la simulación continua.

Aunque nuestro objetivo es simular paso a paso, vamos a

pinchar aquí para ver la respuesta a la simulación continua. Pinchad

Pulsad Pulsad F12F12 o pinchad el icono de la figura. o pinchad el icono de la figura.

Page 136: Proteus c09

Ejecución paso a pasoEjecución paso a paso

El resultado es que desaparecen las ventanas El resultado es que desaparecen las ventanas de código, de los registros y de la pila, y que el de código, de los registros y de la pila, y que el programa se ejecuta en modo continuo. Esto programa se ejecuta en modo continuo. Esto ya lo conocemos y, por lo tanto, vamos a ya lo conocemos y, por lo tanto, vamos a volver al modo paso a paso.volver al modo paso a paso.

Detened e iniciad el paso a paso.Detened e iniciad el paso a paso.

Page 137: Proteus c09

Iconos para paso a pasoIconos para paso a paso

Los tres iconos que se emplean en la Los tres iconos que se emplean en la simulación paso a paso se describen a simulación paso a paso se describen a continuación.continuación.

El de la figura se emplea para que la El de la figura se emplea para que la simulación no se detenga en las subrutinassimulación no se detenga en las subrutinas

Pinchando sobre este botón, cuando el programa encuentra una subrutina la ejecuta rápidamente de forma continua, no se detiene en ella y la salva. Es muy útil para evitar las subrutinas que ya han

sido probadas y no hay duda sobre su correcto funcionamiento

Page 138: Proteus c09

Iconos para paso a pasoIconos para paso a paso

El segundo icono permite entrar en las El segundo icono permite entrar en las subrutinas. Sería la simulación completa paso subrutinas. Sería la simulación completa paso a paso.a paso.

Pinchando sobre este botón se ejecutan todas las instrucciones

paso a paso, incluidas las contenidas en subrutinas

Page 139: Proteus c09

Iconos para paso a pasoIconos para paso a paso

El tercer icono permite salir de las subrutinas El tercer icono permite salir de las subrutinas unas vez se ha entrado en ellas.unas vez se ha entrado en ellas.

Pinchando sobre este botón se ejecuta rápidamente lo que quede de subrutina. Es útil para probar subrutinas que provocan que el programa “dé

muchas vueltas” sobre un mismo bucle

Page 140: Proteus c09

Puntos de detenciónPuntos de detención

Con el icono de la figura podemos colocar Con el icono de la figura podemos colocar puntos de detención en las instrucciones que puntos de detención en las instrucciones que deseemos.deseemos.

Cuando el simulador encuentra un punto de Cuando el simulador encuentra un punto de detención sobre una instrucción, provoca la detención sobre una instrucción, provoca la detención del Contador de Programa en esa detención del Contador de Programa en esa instrucción (antes de que se ejecute).instrucción (antes de que se ejecute).

Page 141: Proteus c09

Puntos de detenciónPuntos de detención

Con esta utilidad podremos hacer que el Con esta utilidad podremos hacer que el programa funcione de forma continua hasta programa funcione de forma continua hasta encontrar el punto de detención.encontrar el punto de detención.

Es una forma muy útil de depuración el Es una forma muy útil de depuración el ejecutar rápidamente todo lo que está ejecutar rápidamente todo lo que está probado y, únicamente detener el programa probado y, únicamente detener el programa en las zonas de dudas.en las zonas de dudas.

Page 142: Proteus c09

Puntos de detenciónPuntos de detención

Colocaremos un punto de detención en la Colocaremos un punto de detención en la instrucción de la dirección 0006h.instrucción de la dirección 0006h.

La forma más rápida es pinchar dos veces La forma más rápida es pinchar dos veces sobre la instrucción de la dirección deseada. sobre la instrucción de la dirección deseada. Doble clic sobre la dirección 0006h.Doble clic sobre la dirección 0006h.

Aparece un punto rojo sobre esa línea que

indica punto de detención.

Page 143: Proteus c09

Puntos de detenciónPuntos de detención

Otra forma de colocar el punto es situar el Otra forma de colocar el punto es situar el cursor en la instrucción deseada y pinchar cursor en la instrucción deseada y pinchar sobre el icono del punto de detenciónsobre el icono del punto de detención

Colocamos el cursor

Y pinchamos aquí

Page 144: Proteus c09

Borrado de puntos de detenciónBorrado de puntos de detención

Volved a pinchar dos veces sobre la misma línea.Volved a pinchar dos veces sobre la misma línea. A desaparecido el relleno del punto pero queda el A desaparecido el relleno del punto pero queda el

contorno. Esto nos indica que el punto se ha contorno. Esto nos indica que el punto se ha cancelado pero deja la huella de que alguna vez cancelado pero deja la huella de que alguna vez estuvo ahí. Es una ayuda muy útil para hacer un estuvo ahí. Es una ayuda muy útil para hacer un seguimiento de hasta dónde llevamos el control.seguimiento de hasta dónde llevamos el control.

Page 145: Proteus c09

Borrado de puntos de detenciónBorrado de puntos de detención

Si volvemos a pinchar dos veces sobre la Si volvemos a pinchar dos veces sobre la misma línea desparecerán el punto y la misma línea desparecerán el punto y la huella.huella.

También el borrado puede hacerse con el También el borrado puede hacerse con el iconoicono

Page 146: Proteus c09

Arrancando el análisisArrancando el análisis

Con la pantalla del circuito en paso a paso Con la pantalla del circuito en paso a paso visible pulsemos visible pulsemos F12F12 para iniciar la simulación para iniciar la simulación desde la primera instrucción.desde la primera instrucción.

El simulador se detiene en el punto de El simulador se detiene en el punto de detención que hemos fijado y nos muestra detención que hemos fijado y nos muestra una cantidad en el display.una cantidad en el display.

Analicemos el programa y lo mostrado por la Analicemos el programa y lo mostrado por la simulación.simulación.

Page 147: Proteus c09

Programación de TRISBProgramación de TRISB

En las dos primeras instrucciones En las dos primeras instrucciones seleccionamos el banco 1 de registros RAM seleccionamos el banco 1 de registros RAM de la CPU para, con ello, poder borrar el de la CPU para, con ello, poder borrar el registro TRISB que nos programa el puerto B registro TRISB que nos programa el puerto B como ocho líneas de salida. Esto último se como ocho líneas de salida. Esto último se programa en la tercera instrucción.programa en la tercera instrucción.

Si observamos TRISB, en la ventana de Si observamos TRISB, en la ventana de registros internos de la CPU, veremos que registros internos de la CPU, veremos que tiene sus ocho líneas a 0. O sea, sea ha tiene sus ocho líneas a 0. O sea, sea ha programado correctamente el registro de programado correctamente el registro de dirección del puerto Bdirección del puerto B

Page 148: Proteus c09

Explicación a la visualizaciónExplicación a la visualización

¿Por qué se ve ese número en el display al inicio?¿Por qué se ve ese número en el display al inicio? Porque al programar el puerto B como salida, en sus Porque al programar el puerto B como salida, en sus

líneas saldrá el contenido del registro PORTB, que líneas saldrá el contenido del registro PORTB, que tiene ese valor tras el reset inicial puesto que aún no tiene ese valor tras el reset inicial puesto que aún no lo hemos tocado.lo hemos tocado.

Aunque este valor dure muy poco (porque tras unas Aunque este valor dure muy poco (porque tras unas pocas instrucciones ya saldrá el cero), puede ser pocas instrucciones ya saldrá el cero), puede ser una buena costumbre cargar PORTB con el valor una buena costumbre cargar PORTB con el valor deseado antes de programar la dirección. Pero todo deseado antes de programar la dirección. Pero todo esto es meterse en el micro, que no es el objetivo de esto es meterse en el micro, que no es el objetivo de este curso.este curso.

Page 149: Proteus c09

Programación de TRISBProgramación de TRISB

En la figura se observan todos los registros En la figura se observan todos los registros internos de la CPU.internos de la CPU.

Puerto B como salida

Page 150: Proteus c09

Variable “Variable “Conta”Conta”

En la cuarta y quinta instrucción (direcciones 3 y 4) En la cuarta y quinta instrucción (direcciones 3 y 4) se vuelve al banco 0 de registros RAM.se vuelve al banco 0 de registros RAM.

En la instrucción sexta se borra el registro “En la instrucción sexta se borra el registro “Conta” ,Conta” , que en la línea 36 del programa se definió como que en la línea 36 del programa se definió como registro con dirección 20h.registro con dirección 20h.

Observad cómo el registro 20h está a 0. Y no está Observad cómo el registro 20h está a 0. Y no está resaltado porque tenía ese valor por defecto en la resaltado porque tenía ese valor por defecto en la conexión y no ha cambiado.conexión y no ha cambiado.

Variable “Conta” a cero

Page 151: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

En la instrucción séptima se ha detenido el En la instrucción séptima se ha detenido el programa, por lo tanto no se ha ejecutado esa programa, por lo tanto no se ha ejecutado esa instrucción.instrucción.

Esa instrucción carga el registro de trabajo W con el Esa instrucción carga el registro de trabajo W con el valor de la variable “valor de la variable “ContaConta”. Por la tanto, cuando se ”. Por la tanto, cuando se ejecute, pondrá a 0 el W.ejecute, pondrá a 0 el W.

Para ver si la realiza correctamente añadimos otro Para ver si la realiza correctamente añadimos otro punto de detención en la instrucción de la línea 51.punto de detención en la instrucción de la línea 51.

Añadimos punto de detención

Page 152: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

Observad que la flecha roja de la izquierda Observad que la flecha roja de la izquierda nos indica que el cursor del programa está nos indica que el cursor del programa está detenido en la instrucción de la dirección 6h.detenido en la instrucción de la dirección 6h.

Aunque hayamos manipulado la pantalla para Aunque hayamos manipulado la pantalla para colocar otro punto de detención, y la banda colocar otro punto de detención, y la banda azul esté en otra posición, el cursor no se azul esté en otra posición, el cursor no se altera, por lo que no hace falta volver a altera, por lo que no hace falta volver a pinchar sobre la instrucción en la que se pinchar sobre la instrucción en la que se detuvo la simulación para que se coloree esa detuvo la simulación para que se coloree esa dirección. Una cosa es el coloreado, que dirección. Una cosa es el coloreado, que resalta la última acción, y otra el cursor.resalta la última acción, y otra el cursor.

Page 153: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

Volved a pulsar Volved a pulsar F12F12 para continuar con la para continuar con la ejecución.ejecución.

Ahora se ha detenido el programa en el Ahora se ha detenido el programa en el segundo punto de detención, por lo que se ha segundo punto de detención, por lo que se ha ejecutado la instrucción de la dirección 6h. El ejecutado la instrucción de la dirección 6h. El registro W se ha borrado.registro W se ha borrado.

Page 154: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

Vamos a añadir los puntos de detención que Vamos a añadir los puntos de detención que muestra la figura y ejecutemos la simulación.muestra la figura y ejecutemos la simulación.

Poned punto aquí

Poned punto aquí

Por aquí va el programa

Page 155: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

La instrucción de la dirección 8h se ejecutará La instrucción de la dirección 8h se ejecutará rápidamente y el programa se detiene en la rápidamente y el programa se detiene en la dirección 9h.dirección 9h.

La instrucción “La instrucción “call CODcall COD” es una subrutina ” es una subrutina que pone en el registro W el código de siete que pone en el registro W el código de siete segmentos correspondiente al valor hexa con segmentos correspondiente al valor hexa con el que entró W.el que entró W.

El código siete segmentos correspondiente al El código siete segmentos correspondiente al valor hexa cero, tal y como hemos conectado valor hexa cero, tal y como hemos conectado el display al puerto B, será el X0111111.el display al puerto B, será el X0111111.

Page 156: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

Y observad que ese valor es el que tiene en Y observad que ese valor es el que tiene en este momento W, y que sacará, en la próxima este momento W, y que sacará, en la próxima instrucción, por el puerto B.instrucción, por el puerto B.

Código de siete segmentos del cero hexadecimal

Page 157: Proteus c09

Siguiendo con el análisisSiguiendo con el análisis

Y observad que ese valor es el que tiene en Y observad que ese valor es el que tiene en este momento W, y que sacará, en la próxima este momento W, y que sacará, en la próxima instrucción, por el puerto B.instrucción, por el puerto B.

Pulsamos F12 para seguir con la simulación.Pulsamos F12 para seguir con la simulación. Y ahora se han ejecutado de forma Y ahora se han ejecutado de forma

continuada las instrucciones de las continuada las instrucciones de las direcciones 09h, 0Ah y 0Bh. Veamos qué han direcciones 09h, 0Ah y 0Bh. Veamos qué han hecho cada una de ellas.hecho cada una de ellas.

Page 158: Proteus c09

Instrucción de la dirección 09hInstrucción de la dirección 09h

En la dirección 09h sacamos el valor que En la dirección 09h sacamos el valor que tenía el registro de trabajo W por el puerto B.tenía el registro de trabajo W por el puerto B.

El valor siete segmentos del cero, que presentaba W en la

diapositiva 156, ahora lo tiene PORTB

Page 159: Proteus c09

Instrucción de la dirección 0AhInstrucción de la dirección 0Ah

En la dirección 0Ah se ejecuta una subrutina En la dirección 0Ah se ejecuta una subrutina que provoca un retardo de un segundo.que provoca un retardo de un segundo.

Esto también se ha realizado, como ha podido Esto también se ha realizado, como ha podido observarse. Esta subrutina alterará el valor de observarse. Esta subrutina alterará el valor de algunos registro, entre ellos el W.algunos registro, entre ellos el W.

Page 160: Proteus c09

Instrucción de la dirección 0BhInstrucción de la dirección 0Bh

En la dirección 0Bh se ejecuta una instrucción En la dirección 0Bh se ejecuta una instrucción que provoca el incremento de la variable que provoca el incremento de la variable ““ContaConta”.”.

Observad cómo se ha ejecutado Observad cómo se ha ejecutado correctamente.correctamente.

“Conta”, que la definimos como el registro de dirección 20h, se ha incrementado, y se muestra resaltada

Page 161: Proteus c09

Continuación de simulaciónContinuación de simulación

Y así podríamos seguir hasta detectar el Y así podríamos seguir hasta detectar el problema en nuestro programa.problema en nuestro programa.

Pero modifiquemos el programa para añadir Pero modifiquemos el programa para añadir un error y poder detectarlo.un error y poder detectarlo.

El error introducido va a provocar que el El error introducido va a provocar que el número siguiente al 3 no sea el 4 no sea el número siguiente al 3 no sea el 4 no sea el cero.cero.

A este programa defectuoso le llamaremos A este programa defectuoso le llamaremos “contadorf.asm”.“contadorf.asm”.

Page 162: Proteus c09

Detección de fallo 1Detección de fallo 1

Paremos la simulación que teníamos en Paremos la simulación que teníamos en marcha.marcha.

Preparemos el nuevo programa para ser Preparemos el nuevo programa para ser ensamblado.ensamblado.

De nuevo vamos al menú apropiado para cargar el

programa objeto de análisis.

Page 163: Proteus c09

Detección de fallo 2Detección de fallo 2

En la ventana de la figura podemos ver el En la ventana de la figura podemos ver el programa que teníamos ensamblado. programa que teníamos ensamblado.

Pulsemos aquí para cambiar el programa “contador.asm” por el

erróneo “contador_fallo.asm”

Page 164: Proteus c09

Detección de fallo 3Detección de fallo 3

Buscamos el programa y lo abrimos. Buscamos el programa y lo abrimos.

Page 165: Proteus c09

Detección de fallo 4Detección de fallo 4

En la ventana siguiente aceptamos. En la ventana siguiente aceptamos.

Ya se ve el nuevo programa

Aceptamos

Page 166: Proteus c09

Detección de fallo 5Detección de fallo 5

En el menú En el menú SourceSource ya puede verse el nuevo ya puede verse el nuevo programa a ensamblar. programa a ensamblar.

Page 167: Proteus c09

Detección de fallo 6Detección de fallo 6

Ahora ensamblamos el nuevo programa y, si Ahora ensamblamos el nuevo programa y, si todo va bien, ya tenemos todos los ficheros todo va bien, ya tenemos todos los ficheros que necesita Proteus para la simulación.que necesita Proteus para la simulación.

Ahora grabaremos el fichero “contadorf.HEX” Ahora grabaremos el fichero “contadorf.HEX” en el micro y arrancamos la simulación para en el micro y arrancamos la simulación para poder quitar los puntos de detención. Borrad, poder quitar los puntos de detención. Borrad, también, las huellas de los puntos anteriores.también, las huellas de los puntos anteriores.

Detened la simulación y volved a iniciarla. Detened la simulación y volved a iniciarla. Observad el comportamiento.Observad el comportamiento.

El error es que viene el 9 en lugar del 4.El error es que viene el 9 en lugar del 4.

Page 168: Proteus c09

Detección de fallo 7Detección de fallo 7

Analizando detenidamente el comportamiento, Analizando detenidamente el comportamiento, podemos deducir que hay partes que no podemos deducir que hay partes que no fallan. fallan.

Entonces nos centraremos en detener el Entonces nos centraremos en detener el programa en la parte de la decodificación en programa en la parte de la decodificación en siete segmentos de la cantidad de la variable siete segmentos de la cantidad de la variable ““ContaConta”. Pondremos un punto de detención ”. Pondremos un punto de detención antes de entrar en la decodificación y otro antes de entrar en la decodificación y otro cuando ya ha decodificado y enviado al cuando ya ha decodificado y enviado al puerto B.puerto B.

Page 169: Proteus c09

Detección de fallo 8Detección de fallo 8

Dejaremos los puntos tal y como aparecen en Dejaremos los puntos tal y como aparecen en la figura.la figura.

En esta línea ya tenemos el valor del contador en BCD y

está a punto de convertirlo en 7 segmentos

En esta línea ya ha convertido en 7 segmentos el valor BCD y lo ha

visualizado en el display

Page 170: Proteus c09

Detección de fallo 9Detección de fallo 9

Comparando los resultados de los dos pasos Comparando los resultados de los dos pasos en las dos detenciones podremos cercar más en las dos detenciones podremos cercar más el problema.el problema.

Arranquemos la simulación e id pulsando Arranquemos la simulación e id pulsando F12F12 hasta que aparezca el 3 en el display.hasta que aparezca el 3 en el display.

En este momento deberemos tener la pantalla En este momento deberemos tener la pantalla de la figura siguiente.de la figura siguiente.

Page 171: Proteus c09

Detección de fallo 10Detección de fallo 10

Page 172: Proteus c09

Detección de fallo 11Detección de fallo 11

Hasta aquí todo correcto, y estamos a punto Hasta aquí todo correcto, y estamos a punto de temporizar el segundo, incrementar de temporizar el segundo, incrementar ““ContaConta”, comprobar si es mayor que nueve ”, comprobar si es mayor que nueve para poner a cero y detenerse antes de para poner a cero y detenerse antes de decodificar a 7 segmentos y enviar al display.decodificar a 7 segmentos y enviar al display.

Veamos si “Veamos si “ContaConta” tiene su valor correcto.” tiene su valor correcto.

Valor correcto

Page 173: Proteus c09

Detección de fallo 12Detección de fallo 12

Pulsemos Pulsemos F12F12 para que temporice 1 segundo para que temporice 1 segundo y realice el resto de instrucciones hasta y realice el resto de instrucciones hasta detenerse de nuevo.detenerse de nuevo.

Todo correcto.Todo correcto. Veamos si la variable “Veamos si la variable “ContaConta” se ha ” se ha

incrementado correctamente para mostrar el incrementado correctamente para mostrar el cuatro.cuatro.

Correcto

Page 174: Proteus c09

Detección de fallo 13Detección de fallo 13

Según el programa que hemos realizado, Según el programa que hemos realizado, antes de entrar en la subrutina “antes de entrar en la subrutina “CODCOD”, el ”, el registro registro WW debe tener el valor BCD para ser debe tener el valor BCD para ser transformado en código de siete segmentos.transformado en código de siete segmentos.

Observemos qué valor tiene Observemos qué valor tiene WW..Correcto: el 4.

Page 175: Proteus c09

Detección de fallo 14Detección de fallo 14

Pues volvamos a pulsar Pues volvamos a pulsar F12F12 para que se para que se realice la decodificación y el envío del dato realice la decodificación y el envío del dato siete segmentos al puerto B.siete segmentos al puerto B.

Ahí tenemos el error. Eso quiere decir que de Ahí tenemos el error. Eso quiere decir que de la subrutina “la subrutina “CODCOD” ha salido el dato erróneo.” ha salido el dato erróneo.

Pues vayamos a analizar los pasos que se Pues vayamos a analizar los pasos que se realizan en la subrutina, colocando en ella un realizan en la subrutina, colocando en ella un punto de detención en las instrucciones que punto de detención en las instrucciones que intervienen hasta llegar a la salida con el valor intervienen hasta llegar a la salida con el valor 4.4.

Page 176: Proteus c09

Detección de fallo 15Detección de fallo 15

Puntos añadidos en la subrutina.Puntos añadidos en la subrutina.

Detengamos la simulación y volvamos a Detengamos la simulación y volvamos a arrancar. arrancar.

Page 177: Proteus c09

Detección de fallo 16Detección de fallo 16

Dejemos el programa cuando el display Dejemos el programa cuando el display muestra el 3 y se está a punto de entrar en la muestra el 3 y se está a punto de entrar en la subrutina de decodificación 7 segmentos.subrutina de decodificación 7 segmentos.

Pulsemos nuevamente Pulsemos nuevamente F12F12. Ahora se ha . Ahora se ha detenido el simulador en la primera detenido el simulador en la primera instrucción de la subrutina. Observa que la instrucción de la subrutina. Observa que la próxima instrucción es sumarle próxima instrucción es sumarle WW al al contenido del contenido del PCLPCL, que en este momento , que en este momento tiene la dirección 0011h. Y aquí hay que tiene la dirección 0011h. Y aquí hay que explicar cómo trabaja el explicar cómo trabaja el PCLPCL para entenderlo. para entenderlo.

Page 178: Proteus c09

Detección de fallo 17Detección de fallo 17

El El PCLPCL se incrementa nada más decodificar la se incrementa nada más decodificar la instrucción, antes de ejecutarla. Eso quiere instrucción, antes de ejecutarla. Eso quiere decir que cuando vaya a sumar decir que cuando vaya a sumar WW, el PCL , el PCL tendrá la dirección 0012h, lo que quiere decir tendrá la dirección 0012h, lo que quiere decir que el programa continuará en la dirección que el programa continuará en la dirección 0012h + 0012h + WW = 0012h + 4h = 0016h. = 0012h + 4h = 0016h.

Pero asegurémonos que W tiene el valor Pero asegurémonos que W tiene el valor correcto y que el programa continúa en la correcto y que el programa continúa en la dirección prevista. Pulsad dirección prevista. Pulsad F12F12 y observad. y observad.

Page 179: Proteus c09

Detección de fallo 18Detección de fallo 18

Todo correcto: el programa ha saltado a la Todo correcto: el programa ha saltado a la dirección 0016h.dirección 0016h.

Lo que hace la próxima instrucción es retornar Lo que hace la próxima instrucción es retornar de subrutina pero cargando de subrutina pero cargando WW con el valor con el valor literal que lleva la instrucción en su código. literal que lleva la instrucción en su código. Esto significa que al retornar, Esto significa que al retornar, WW debería salir debería salir con el código 7 segmentos del 4.con el código 7 segmentos del 4.

Ejecutemos la instrucción y observemos.Ejecutemos la instrucción y observemos. Ahí tenemos el fallo.Ahí tenemos el fallo.

Page 180: Proteus c09

Detección de fallo 19Detección de fallo 19

Tal y como hemos conectado el display al Tal y como hemos conectado el display al puerto B, para que se vea el 4 las líneas del puerto B, para que se vea el 4 las líneas del puerto deberían estar así:puerto deberían estar así:

x 1 1 0 0 1 1 0x 1 1 0 0 1 1 0 Sin embargo el puerto B, y por lo tanto W, no Sin embargo el puerto B, y por lo tanto W, no

tienen ese valor; falla el bit de menos peso, tienen ese valor; falla el bit de menos peso, como puede apreciarse en las dos figuras de como puede apreciarse en las dos figuras de la diapositiva siguiente. la diapositiva siguiente.

Page 181: Proteus c09

Detección de fallo 20Detección de fallo 20

Falla el LSB, que es el que provoca el encendido del

segmento superior del display

El bit de menor peso debería ser un 0

Page 182: Proteus c09

Detección de fallo 21Detección de fallo 21

Repasamos la subrutina y vemos que el valor Repasamos la subrutina y vemos que el valor con que se carga con que se carga WW para la salida debería ser para la salida debería ser

0 1 1 0 0 1 1 00 1 1 0 0 1 1 0

Sin embargo es 0 1 1 0 0 1 1 1Sin embargo es 0 1 1 0 0 1 1 1Ahí está el error

Page 183: Proteus c09

FINALFINAL

En el próximo capítulo se estudian los En el próximo capítulo se estudian los dispositivos que provocan detención en la dispositivos que provocan detención en la

simulaciónsimulación

José Luis Sánchez Calero 2007