NOMBRE: FIERRO AGUILAR CESAR OMAR
NOMBRE: DEL PROFESOR: JOSE ANTONIO GOMEZ CASTELLANOS
ACTIVIDAD: Resumen del libro
MATRICULA: 5122220003
MATERIA: ELECTRONICA DOGITAL
GRADO: Y GRUPO: 3 A
ISIS de PROTEUS VSM
ofrece la posibilidad de simular código microcontrolador de alto y bajo nivel y, simultáneamente, con la simulación
en modo mixto de SPICE. Esto permite el diseño tanto a nivel hardware como software y realizar la simulación en un
mismo y único entorno. Para ello, se suministran tres potentes subentornos como son el ISIS para el diseño gráfico
1.2 Captura electrónica: entorno gráfico ISIS
Posee una muy buena colección de librerías de modelos tanto para dibujar, simular o para las placas. Además,
permite la creación de nuevos componentes, su mode lización para su simulación e, incluso, la posibilidad de solicitar
al fabricante (Labcenter Electronics) que cree un nuevo modelo
Para situar un componente en el esquema tan sólo debemos seleccionarlo de la lista. Al hacerlo se puede comprobar su
orientación (tal como se representará en el esquema) en la ventana de edición (figura 8). Si deseamos modificar la
rotación o la reflexión del componente podemos acceder a ello a través de la barra de herramientas correspondiente
Una vez situados los componentes en el área de trabajo se pueden mover, al pasar por encima del componente el
cursor se convierte en una mano (figura 11) y al realizar una pulsación, el cursor se transforma en una mano con una
cruz, indicando que se puede mover el componente (quedan seleccionados al ponerse en rojo) y se puede arrastrar
Tan sólo queda modificar las características de los componentes que lo requieran, por ejemplo, modificando el valor
de los componentes pasivos. Para ello, se selecciona un componente realizando una pulsación con el botón derecho,
aparece el menú contextual y se selecciona la opción EDIT PROPERTIES; también se puede utilizar el modo edición
1.3 Depuración de los sistemas basados en PICmicro
En el caso del compilador CCS C, después de compilar se generan, entre otros, los archivos *.HEX y *.COF, los
cuales se pueden utilizar para trabajar con el entorno PROTEUS VSM. Para ejecutar el programa desde ISIS se debe
abrir la ventana de edición del microcontrolador
Figura 34. Barra de simulación
Con la opción MARCHA la simulación Se inicia (el botón se vuelve verde) y funciona en modo continuo. La
simulación NO es en tiempo real y dependerá de la carga de trabajo del PC. En la barra de estado se indica la carga de
la CPU del PC
La opción STOP para tofalmente la simulación mientras que PAUSE la para de forma momentánea permitiendo hacer
uso de las herramientas de depuración
En este punto se puede simular (y animar) un sistema con el PICmicro (figura 37). Lo más interesante de la
simulación con microcontroladores es la utilización de las herramientas de depuración- Es decir, visualizar mediante
ventanas -las distintas partes internas del microcontrolador: memoria de programa, memoria de datos, pila, etc. La
mayor parte de estas ventanas sólo se pueden visualizar durante una PAUSA.
Capítulo 2
Compilador CCS C
2.1 Introducción
El Compilador C de CCS ha sido desarrollado específicamente para PIC MCLI, obteniendo la máxima optimización
del compilador con estos dispositivos. Dispone de una amplia librería de funciones predefinidas, comandos de
preprocesado y ejemplos. Además, suministra los controladores (drivers) para diversos dispositivos como LCD,
convertidores AD, relojes en tiempo real, EEPROM serie, etc. Las características generales de este compilador y más
información adicional se pueden encontrar en la dirección [Link]
Un compilador convierte el lenguaje de alto nivel a instrucciones en código máquina; un cross-compiler es un
compilador que funciona en un procesador (normalmente en un PC) diferente al procesador objeto. El compilador
CCS C es un crosscompiler. Los programas son editados y compilados a instrucciones máquina en el entorno de
trabajo del PC, el código máquina puede ser cargado del PC al sistema PIC mediante el ICD2 (o mediante cualquier
programador) y puede ser depurado (puntos de ruptura, paso a paso, etc.) desde el entorno de trabajo del PC.
2.2 Estructura de un programa
Nos muestras como se escribe en un programa en C con el CCS que se deben tener en cuenta una ssrie de
elementos básicos de su estructura.
Directivas de preprocesador, controlan la parte del compilador de la máquina
PROGRAMAS o FUNCIONES: conjunto de instrucciones. Puede haber uno o varios; en cualquier caso siempre debe
haber uno definido como principal mediante la inclusión de la llamada main().
INSTRUCCIONES: indican como debe comportar el PIC en todo momento.
COMENTARIOS: permiten describir lo que significa cada línea del programa.
2.3 TIPOS DE DATOS
Se muestran algunas tablas de CCS C donde se muestran los tipos de datos que acepta
2.4 Las constantes
Se muestran Las constantes que se pueden especificar en decimal, octal, hexadecimal, o en binario.
2.5 Variables
Las variables se utilizan para nombrar posiciones de memoria RAM; se deben declarar, obligatoriamente, antes de
utilizarlas; para ello se debe indicar el nombre y el tipo de dato que se manejará. Se definen de la siguiente forma:
TIPO NOMBRE_VARIABLE 1=VALOR INICIALI
TIPO hace referencia a cualquiera de los tipos de datos vistos en el punto 2.3. El NOMBRE_VARIABLE puede ser
cualquiera y el valor inicial es opcional. Veamos un ejemplo:
Las variables definidas en un programa pueden ser de tipo LOCAL o GLOBAL. Las variables locales sólo se utilizan
en la función donde se encuentran declaradas; las variables globales se pueden utilizar en todas las funciones del
programa. Ambas deben declararse antes de ser utilizadas y las globales deben declararse antes de cualquier función y
fuera de ellas. Las variables globales son puestas a cero cuando se inicia la función principal.
2.6 Operadores
Se muestran algunas tablas de asuignacion con los signos que llevan en la programación.
Aritméticos, Relacionales, Lógicos, de bits, punteros.
2.7 Funciones
Las funciones son bloques de sentencias; todas las sentencias se deben enmarcar dentro de las funciones. Al igual que
las variables, las funciones deben definirse antes de utilizarse.
Una función puede ser invocada desde una sentencia de otra función. Una función puede devolver un valor a la
sentencia que la ha llamado. El tipo de dato se indica en la definición de la función; en el caso de no indicarse nada se
entiende que es un int8 y en el caso de no devolver un valor se debe especificar el valor VOID. La función, además de
devolver un valor, puede recibir parámetros o argumentos.
Donde expresión debe manejar el mismo tipo de dato que el indicado en la definición de la función. En el caso de no
devolver nada se finaliza con RETI-IRN, al encontrar esta sentencia el compilador vuelve a la ejecución de la
sentencia de llamada. También se puede finalizar la función sin RETURN, tan sólo con la llave de cierre I
2.8 Declaraciones de control
En las expresiones del FOR la inicialización es una variable a la cual se le asigna un valor inicial con el que controlar
el bucle. La condición de finalización sirve para evaluar ANTES de ejecutar las sentencias si es cierta o no, en el caso
de ser cierta se ejecutan las sentencias y en caso contrario se sale del FOR. Por último, la expresión de incremento o
decremento modifica la variable de control DESPUÉS de ejecutar el bucle.
La expresión se evalúa y la sentencia se ejecuta mientras la expresión es verdadera, cuando es falsa se sale del
WHILE.
DO-WHILE se diferencia del WHILE y del FOR en la condición de finalización, la cual se evalúa al final del bucle,
por lo que las sentencias se ejecutan al menos una vez.
2.9 Comentarios
LOS comentarios en el programa facilitan la compresión de las distintas expresiones tanto para el programador como
para quién tiene que interpretar dicho programa. No afectan a la compilación por lo que pueden ser tan extensos como
el programador quiera. Se pueden colocar en cualquier parte del programa y con dos formatos
2.10.1 Directivas
Las directivas de pre-procesado comienzan con el simbolo # y continúan con un comando específico. La sintaxis
depende del comando. Algunos comandos no permiten otros elementos sintácticos en la misma expresión. Muchas de
las directivas utilizadas por CCS son extensiones del C eståndar.
2.12.2 Entorno de trabajo
El entorno de trabajo del CCS en PCWy PCWH permite compilar y también suministra una gran variedad de
herramientas auxiliares. En la figura 2 se muestra los distintos elementos básicos del entorno de trabajo. Existen dos
formas de iniciar una sesión: abriendo un fichero de código fuente o creando un proyecto.
Capítulo 3
La gestión de los puertos
3.1 Introducción
Los microcontroladores PIC tienen terminales de entrada/salida divididos en puertos, que se encuentran nombrados
alfabéticamente A, B, C, D, etc. Cada puerto puede tener hasta 8 terminales que, de forma básica, se comportan como
una entrada/ salida digital. Según las características del PIC, cada puerto puede tener, además, asignado un bloque
funcional: convertidor AD, USAR T, 12C, etc.
Considerando a los puertos como entradas/salidas digitales, los puertos se caracterizan por ser independientes, es
decir, se puede programar cada terminal del puerto para que se comporte como una entrada o una salida digital (figura
2). La habilitación como entrada o salida se realiza a través del registro TRISx (TRISA: 85h, TRISB: 86h, TRISC:
87h, TRISD: 88h o TRISE: 89h en el BANCO 1 de la memoria RAM).
En el puerto A, el terminal RA4 tiene salida en drenador abierto lo que obliga a utilizar una resistencia de pull-up en
el caso de funcionar como salida. Este terminal tiene entrada en trigger-schmitt Io que permite su utilización como
entrada de contador de eventos externos en conjunción con un modulo temporizador (TIMER.
3.2 Gestión de puertos en C
En lenguaje C se pueden gestionar los puertos de dos formas:
Se declaran los registros TRISX y PORTX definiendo su posición en la memoria RAM como variables de C.
Utilizando las directivas específicas del compilador GLISE FAST_IO, *USE FIXED 10, #USE STANDARD_IO).
3.2.1 A través de la RAM
Se definen los registros PORTx y TRISx como bytes y se sitúan en la posición correspondiente de la memoria RAM.
La directiva utilizada de C es #BYTE:
Ejemplo 1: Se configuran los terminales RBI como salida y el RBO como entrada (con resistencia de pull-up). La salida
debe tener el mismo valor que la entrada. Se utiliza un interruptor en la entrada y un led en la salida (figura 5).
Componentes ISIS: PIC16F876, RES, LED-BLUE y SW-SPST-MOM
3.2.2 A través de las directivas
El compilador ofrece funciones predefinidas para trabajar con los puertos. Estas funciones son:
Con la función output_x() el compilador se asegura de que el terminal, o terminales correspondientes, sean de salida
mediante la modificación del TRIS correspondiente. Con la función input_x() ocurre lo mismo pero asegurando el
terminal (terminales) como entrada. Es la directiva por defecto. Entonces, el ejemplo I quedaría:
3.2.3 Con punteros
En C Se puede acceder a la memoria de datos mediante punteros. Los punteros Se deben definir como IN T:
Si es O enciende el LED IRBI
Ejemplo 2: Realizar un contador de 0 a 99 con un doble display de 7 segmentos de cátodo común. La cuenta debe ser
continua y de O a 9 el digito de las decenas debe estar apagado. Componentes ISIS: PIC16F876, RX8 y 7SEG-MPX2-
CA-BLUE.
Los terminales de los dos displays son comunes por Io que el dato es común; para que aparezca el digito sólo en las
unidades, o sólo en las decenas, se debe apagar el otro display mediante el terminal de cátodo. Es decir, si se desea
visualizar las unidades se pasa el código "10" al display y si son las decenas se pasa el "01" (con un 1 el display está
apagado y con un 0 está encendido). La alternancia entre los dos cátodos debe ser tan rápida que el ojo no se de cuenta
del parpadeo. En el caso que las decenas sean cero, su display se apagará.
3.3 Entradas y salidas
3.3.1 LCD
Se acostumbran ha utilizar LCD del tipo HD44780, con un nÚmero de líneas variable y un número de caracteres por
línea también variable (por ejemplo, con 2 x 16 se trabaja con dos líneas de 16 caracteres cada una)
Debemos observar que el valor leído en el teclado y el visualizado en el LCD es un carácter ASCII. Si deseamos
convertirlo a su valor numérico correspondiente deberemos restarle el valor 48 (30 en hexadecimal); esto se debe a
que el carácter O en ASCII es 30h, el 1 es 31h, etc.
Ejemplo 6: Diseñar un sistema básico para el control de accesos; a través de un teclado de 3x4 introducir una clave de
3 dígitos que cuando sea correcta abra una puerta (con un pulso a un relé) y lo indique en una pantalla de LCD.
Guardar la clave de acceso en la memoria EEPROM (figura 26). Se dispone de los siguientes componentes ISIS:
PIC18F876, KEYPAD-PHONE, RES, 130135, CELL y RELAY}
Ejemplo 7: Introducir los datos, a través de un teclado, de velocidad de un motor y generar una señal modulada en
ancho de pulso proporcional al dato de la velocidad (figura 28). Se dispone de los siguientes componentes ISIS:
PIC18F876, KEYPAD-PHONE, RES, 2SK1058, CELL y MOTOR.