Prácticas de Microcontroladores.

En este tema realizaremos las prácticas de Microcontroladores en Lenguaje Ensamblador.


Después ensamblaremos y simularemos dichos ficheros en el programa SimuPic84.
 
El microcontrolador que utilizaremos en clase es el Pic16F84 de Microchip.

                                                    
Ficheros en Lenguaje Ensamblador:

; Prácticas Microcontroladores.    Práctica 1ª.                
;
;
; PRIMERO.ASM: Este programa suma el contenido de las posiciones 0x0c y 0x0d
; de memoria y almacena el resultado en la posición 0e.
 

        LIST p= 16c84           ;Indica el modelo de PIC que se usa
                                           ;Es una directiva del ensamblador.

;--------------------------------------------------------------------------
                                ;Zona para etiquetas.
        OPERANDO1 EQU 0x0c      ;Define la posición del operando1
        OPERANDO2 EQU 0x0d      ;Define la posición del operando2
        RESULTADO EQU 0x0e       ;Define la posición del resultado

;---------------------------------------------------------------------------

        ORG 0             ;Comando que indica al Ensamblador
                                ;la dirección de la memoria de programa
                                ;donde situar  la siguiente instrucción

;---------------------------------------------------------------------------

        movlw   05            ; 5 -> W (Primera instrucción)  
        movwf   OPERANDO1     ; W -> OPERANDO1
        movlw   02            ; 2 -> W
        movwf   OPERANDO2     ; W -> OPERANDO2
        movfw   OPERANDO1     ; OPERANDO1 -> W
        addwf   OPERANDO2,0   ; W + OPERANDO2 -> W
        movwf   RESULTADO     ; W -> RESULTADO

        END                   ; Directiva de fin de programa


Para ver el tema completo haz clic aquí

Simulador de Microcontroladores SimuPic84


ÍNDICE:                                                                            

1. INTRODUCCIÓN

2. INSTALACIÓN Y EJECUCIÓN DEL PROGRAMA
            2.1. INSTALACIÓN
            2.2. EJECUCIÓN

3. LA VENTANA DE MENÚ PRINCIPAL
            3.1. ASIGNAR NOMBRE
            3.2. LLAMAR AL EDITOR
            3.3. ENSAMBLAR
            3.4. CARGAR FICHERO HEX
            3.5. OPCIONES DE SIMULACIÓN
            3.6. EJECUTAR
            3.7. TRAZAR
            3.9. ALTERAR REGISTROS
            3.10. MENÚ SALIR AL DOS
            3.11. USO DE LA AYUDA

           
4. RESTO DE VENTANAS
            4.1. VENTANA DE VISIÓN EXTERNA
            4.2. VENTANA DE VISUALIZACIÓN DE REGISTROS
            4.3. VENTANA DE MEMORIA ROM
            4.4. VENTANA DE CONTADORES


SIMULADOR SIMUPIC’84
                                                                                                              
1. INTRODUCCIÓN

SIMUPIC es un programa que simula un microcontrolador PIC16F84 de la  casa Microchip. Esto quiere decir que mediante esta aplicación se pueden desarrollar programas para este tipo de CPU y probarlos cómodamente, sin necesidad de grabarlo un chip real ni implementar el circuito físicamente, con lo que se gana tiempo y se pueden depurar mejor los errores.

La simulación le permitir utilizar su software en una CPU simulada, con la ventaja de poder trazar sus programas, establecer puntos de ruptura y ver como la memoria RAM del PIC va modificándose dinámicamente. SIMUPIC, además le permitir tener una visión clara de las señales que el chip saca por sus salidas en todo momento.

Otra característica interesan es que opera en un entorno de trabajo en el que están integrados todas las herramientas necesarias para el desarrollo de un programa. Se puede llamar al Editor para escribirlo, al Ensamblador y una vez obtenido el código ejecutable, simularlo.

Por ser un simulador software la velocidad de ejecución de los programas es inferior a la
velocidad del PIC real. El programa dispone de herramientas como los controladores de tiempo e instrucciones y no es posible utilizar periféricos reales, pero sí simular mediante el teclado las entradas al sistema.



2. INSTALACIÓN Y EJECUCIÓN DEL PROGRAMA

2.1. INSTALACIÓN

Para instalar Sim84 en el disco duro se debe ejecutar el fichero Instalar.bat que acompaña al simulador. Este programa instalará en el disco duro el Sim84 junto con el ensamblador MPASM y algunos programas de ejemplo. Sin argumentos, el programa Instalar.bat asumirá que el disco de instalación se encuentra en la unidad A: y que el directorio de destino es C:\SIM84, sin embargo, si lo desea puede especificar estos parámetros manualmente. Por ejemplo el comando:

INSTALAR B: D:\SIM84

instala el programa en el directorio SIM84 de la unidad D partiendo de un disco insertado en la unidad B.

El editor y el ensamblador utilizados son el EDIT.COM del DOS y el MPASM
respectivamente. Si se desea utilizar otro software este se ha de especificar en el fichero de configuración Simupic.cfg. La estructura del fichero Simupic.cfg es la siguiente:

Editor= 'RUTA_Y_NOMBRE_DEL_EDITOR"
Ensamblador= 'RUTA_Y_NOMBRE _DEL_ENSAMBLADOR'
2.2. EJECUCIÓN

Para ejecutar el Simupic 84 basta con teclear en el directorio Sim84: Sim84  <Intro>.



3. LA VENTANA DE MENÚ PRINCIPAL

Las opciones que presenta esta ventana son las siguientes:

1. Asignar nombre
2. Llamar al editor
3. Ensamblar
4. Cargar fichero HEX
5. Opciones de simulación
6. Ejecutar
7. Trazar
8. Visualizar Registros
9. Alterar registros
ESC. Salida al DOS

Estas opciones pueden ser seleccionadas situando la barra sombreada sobre cada una de
ellas, mediante los cursores, y pulsando <Intro>. También puede utilizarse el ratón o los números que tienen asignadas cada una de ellas. En las siguientes secciones se explican las diferentes opciones detalladamente:



3.1. ASIGNAR NOMBRE

Con esta opción se asignan un nombre a su proyecto. No es necesario el uso de extensión y en caso de que sea especificada alguna se ignorará tomándose por defecto las extensiones ASM para el fichero fuente y HEX para el ejecutable en formato Intel generado por el ensamblador.

En caso de que quiera recuperar un proyecto anteriormente guardado puede dejar en blanco
el cuadro de diálogo y pulsar ENTER. A continuación se le presentar un menú en el que podrá seleccionarlo. Búsquelo primero entre las páginas del menú con las teclas RePag y AvPag y una vez localizado pulse ENTER para seleccionarlo dentro de una página.


3.2. LLAMAR AL EDITOR
                                 
La función de esta opción es llamar al editor de textos que se haya especificado con anterioridad en el fichero SIMUPIC.CFG en su línea "Editor = c:\path\prog.exe ". Con esta opción el usuario podrá editar el código fuente o hacer cambios en el programa según sea necesario.

Para ver el tema completo haz clic aquí

Programación de PLD´s


Circuitos combinacionales mediante
elementos programables (PLDs)
 1. Objetivos.
Los PLD son pequeños ASICs (“Application Specific Integrated Circuit”) configurables por el usuario y capaces de realizar una determinada función lógica. La mayoría de los PLD consisten en una matriz de puertas AND seguida de otra matriz de puertas OR (ver figura al margen). Mediante esta estructura puede realizarse cualquier función como suma de términos producto.
Dentro de esta familia de componentes aparecen las GAL (“Generic Array Logic”) que es una marca registrada de
Lattice Semiconductor con la que se designa a dispositivos borrables por medios eléctricos, que han sido diseñados
para sustituir a la mayoría de las PAL de la serie general (no reprogramables) manteniendo la compatibilidad patilla a
patilla.
El objetivo de estos ejercicios prácticos es introducir al alumno en el manejo de software específico para el diseño, la simulación y posterior programación de elementos lógicos programables (PLDs) para lo que se realizarán diseños de sistemas combinacionales y secuenciales.
Como programa base para la realización de estos ejercicioss se va a emplear el programa OrCAD/PLD de fácil utilización y que permite la obtención de los ficheros JED para la posterior implementación física del diseño.

2. Descripción: El compilador OrCAD/PLD.

OrCAD/PLD es una herramienta de diseño de lógica programable para PALs y PROMs. Contiene un lenguaje para descripción de hardware, un compilador para este lenguaje (PLD.EXE) y un software de simulación (VECTORS.EXE) que puede generar vectores de test.
OrCAD/PLD permite especificar la lógica de los circuitos mediante el editor de esquemas (OrCAD/SDT) o un editor de texto. El compilador recibe como entrada un fichero ASCII, bien escrito con editor de texto o creado a partir de una lista de conexiones generada por el capturador de esquemas. En nuestro caso usaremos los ficheros texto, por lo que es necesario conocer la sintaxis del lenguaje utilizado. Vamos a empezar describiendo los elementos que se emplean en los ficheros fuente. 
En clase programaremos le dispositivo GAL 22V10 

Semáforo Programable

Semáforo Programable con microcontrolador PIC16f84A.
En este proyecto realizaremos la programación de un semáforo con cuatro programas diferentes.
La programación se realizara primero en Lenguaje Ensamblador y posteriormente en Lenguaje C++
(Para procesos microcontrolados)

Dichos ficheros se ejecutaran en la maqueta realizada en clase y que tiene la siguiente configuración de entradas y salidas:



 SEMÁFORO PROGRAMABLE. 
SISTEMAS DE REGULACIÓN Y CONTROL AUTOMÁTICO
                   
 Selección de programa:
  RA0 = 0 y RA1 = 0 => PROGRAMA 2
  RA0 = 0 y RA1 = 1 => AMBAR INTERMITENTE
  RA0 = 1 y RA1 = 0 =>   "       "
  RA0 = 1 y RA1 = 1 => PROGRAMA 1

  PINES DE ENTRADA Y SDALIDA:
      RB0   Rojo semáforo 1 y 2
      RB1   Ambar semáforo 1 y 2
      RB2   Verde semáforo 1 y 2
      RB3   Rojo semáforo 3 y 4
      RB4   Ambar semáforo 3 y 4
      RB5   Verde semáforo 3 y 4
      RB6   Peatonal 1 y 2
      RB7   Peatonal 3 y 4 Rojo
      RA2   Peatonal 1 y 2 Verde
      RA3   Peatonal 3 y 4 Verde
      RA0   Interruptor de selección de programa
      RA1   Interruptor de selección de programa

Programación de Motores Paso a Paso





Para ver el tema completo haz clic aquí 

Control del sentido de giro de motores Paso a Paso Organigrama
Programación en lenguaje ensamblador
Programación en leguaje ‘C’

Motores Paso a Paso 2:
Control de velocidad de motores Paso a Paso
Organigrama
Programación en lenguaje ensamblador
Programación en leguaje ‘C’



Programación de Motores de corriente continua



            Para ver el tema completo haz clic aquí
Conexión y desconexión de un motor de       corriente continúa. (Marcha-Paro)
Organigrama
Programación en lenguaje ensamblador
Programación en leguaje ‘C’

Motores de CC 2: 
Control del sentido de giro de motores de corriente continua 
Organigrama
Programación en lenguaje ensamblador
Programación en leguaje ‘C’

Motores de C.C. 3: 
Control de velocidad de motores de corriente continua
Organigrama
Programación en lenguaje ensamblador
Programación en leguaje ‘C’

Prácticas de E.D.

Práctica de Electrónica Digital y Microprogramable

Relación de prácticas que realizaremos en clase con el entrenador digital Universal Trainer de
Microsystems Engineering

Para ver la colección de práticas de electrónica digital haz clic aquí

Programación del Puerto paralelo en lenguaje 'C'

ENVIÓ Y LECTURA DE DATOS DEL PUERTO

Envío de datos al puerto.

El puerto paralelo puede ser usado como una comunicación directa con el PC, de este modo es posible desarrollar aplicaciones en tiempo-real que necesiten un rápido tiempo de respuesta.
El acceso se realiza escribiendo un byte (8 bits) en registro determinado. Este byte debe referirse a cada uno de los bits del registro. Esto significa que se debe definir el byte a escribir en sistema binario.

Por ejemplo si queremos escribir en el registro de datos el bit D0 y el bit D2 entonces el byte es:


0
0
0
0
0
1
0
1
= 5  En decimal
D7
D6
D5
D4
D3
D2
D1
D0
Registro de datos



Luego, se debe escribir 5 en el registro de datos (dirección base):

En C la sentencia utilizada es:

Outport(dir_base, 5);

Lectura de datos del puerto

La lectura de datos se realiza accesando un byte del registro determinado. Al hacer la lectura se debe convertir el byte a binario para determinar él o los bits que interesen. Note que sólo se debe leer el registro de estado, o sea, la dirección base+1.

En C la sentencia utilizada es:

unsigned int dato;
dato=inport(dir_estado);

Por ejemplo, si el dato leído es igual a 96, significa que los bits S5 y S6 están activos (tienen un nivel alto, un 1).



0
1
1
0
0
0
0
0
= 96  En decimal
S7
S6
S5
S4
S3
S2
S1
S0
Registro de estado

La sintaxis de las instrucciones para la escritura en el puerto en los diversos lenguajes es similar aunque, obviamente, existen ciertas diferencias. Veamos cómo se procede en el lenguaje “C”.
 En "C" se utiliza la instrucción outport, o bien outportb, ambas incluidas en la cabecera "dos.h". Un ejemplo muy simple de cómo escribir un 0xFF en el puerto es el siguiente:

#include <dos.h>
void main(void)
{
outport(0x378,0xFF);
}

En este ejemplo simplemente colocamos las salidas D0 a D7 en uno.

Esto lo podemos comprobar si medimos dichas salidas con un multímetro, observando que el valor de tensión respecto de masa es de 5V aproximadamente.


 Haz clic aquí para ver el tema completo

Programación en lenguaje 'C'

ALGORITMOS y PROGRAMAS          Haz clic aquí si quieres ver el tema completo

LENGUAJES DE PROGRAMACIÓN

El lenguaje máquina
El lenguaje ensamblador
Lenguajes de alto nivel
Lenguajes de cuarta generación
Lenguajes orientados a objetos

CREACIÓN DE UN PROGRAMA

Análisis del problema
Búsqueda del algoritmo
Representación gráfica de los algoritmos
Codificación del programa
Compilación del programa
Montaje o linkado
Fase de pruebas
Fase de explotación y mantenimiento

ENTORNO DE PROGRAMACIÓN  DE BORLAND TURBO C++

Escritura del programa
Obtención del programa ejecutable
1º  Compilación del fichero
2º  Montaje del fichero.
3º  Ejecución del programa
Corrección de errores

CÓDIGO FUENTE y CÓDIGO OBJETO

ALGORITMOS Y PROGRAMAS

La palabra programa resulta muy cercana y familiar; se puede relacionar con un programa de televisión, con un programa político electoral, con la  programación de películas en un cine, con una programación de horas de estudio, etc.

Al fijarnos en los ejemplos anteriores, vemos que todos ellos tienen algo en  común: intentan realizar una determinada actividad de un modo ordenado. Cuando se especifican y determinan los pasos que se deben dar, así como el orden en que han de realizarse para poder llevar a cabo cualquier actividad, estamos especificando lo que se define, desde el punto de vista informático, como algoritmo.

Supongamos que queremos preparar la cena y decidimos hacer una tortilla a la francesa. Para elaborarla, necesitamos una serie de ingredientes o utensilios (datos): una sartén, un plato hondo, un tenedor, una cuchara sopera í de aceite de oliva, dos huevos y una pizca de sal.

Los pasos que se deben seguir para prepararla constituirían su algoritmo:

1.- Cascar los dos huevos en el plato hondo.
2.-  Añadirles la sal a gusto.
3.- Remover los huevos enérgicamente con el tenedor hasta que queden perfectamente batidos
4.-. Encender el fuego de la cocina. :
5.- Echar el aceite de oliva en la sartén.
5.- Poner la sartén con el aceite a calentar.
7. Verter, cuando el aceite esté caliente, el contenido del plato hondo en la sartén.
8.- Esperar unos segundos mientras se fríe la base de los huevos batidos.
9.- Doblar al centro la base de los huevos batidos. 
10.- Esperar unos segundos y volver a doblarla sobre sí misma.
11.- Aplastar ligeramente con el tenedor para compactar la tortilla.
12.-. Esperar unos segundos hasta que se termine de freír.
13.- Sacar la tortilla de la sartén y servir.

Se puede definir un algoritmo como la sucesión de pasos que se deben  realizar desde que se plantea un problema hasta que éste queda perfecta- mente resuelto.

Un programa es similar aun algoritmo; la gran diferencia es que los pasos t que permiten resolver el problema deben escribirse en un determinado lenguaje de programación para que el ordenador pueda ejecutarlos y encontrar así la solución.
 

LENGUAJES DE PROGRAMACIÓN 

 La programación es la rama de la informática que permite crear programas , propios para resolver distintos problemas. Para ello es necesario utilizar un F software especial, denominado, genéricamente, lenguajes de programación. .
Existen distintos criterios para clasificar los lenguajes de programación; uno  de ellos permite dividirlos en cuatro grandes grupos: 

Lenguajes de bajo nivel.
Lenguajes de alto nivel.
Lenguajes de cuarta generación.
Lenguajes orientados a objetos
Lenguajes de bajo nivel 

Los principales lenguajes de bajo nivel son el lenguaje máquina y el lenguaje ensamblador.

El lenguaje máquina

Este es el único lenguaje que entiende el ordenador, ya que utiliza el alfabeto binario, es decir, O y 1.

Fue el primer lenguaje que se empleó en la programación de ordenadores, pero dejó de utilizarse, ya que era muy frecuente cometer errores y resultaba difícil memorizar las distintas instrucciones.

Hay que resaltar que el lenguaje máquina no es portable; es decir, un mismo programa no puede ser utilizado en ordenadores de características diferentes.

El lenguaje ensamblador


El lenguaje ensamblador fue el primer intento de sustituir el lenguaje máquina por otro más parecido a los que utilizan las personas. En este lenguaje, cada instrucción está formada por un conjunto de hasta cuatro caracteres más los operadores, lo cual resulta más sencillo de recordar que una cadena de ceros y unos (bits); además, se disminuye la probabilidad de cometer errores durante su escritura.

Debido a que utiliza instrucciones, el lenguaje ensamblador necesita un compilador, es decir, un programa que traduzca las instrucciones escritas al lenguaje máquina, único lenguaje que el ordenador puede entender.

Lenguajes de alto nivel


Estos lenguajes son posteriores a los de bajo nivel, y se crearon con los siguientes objetivos:

- Lograr la independencia del ordenador, ya que estos lenguajes sí son portables.

- Aproximar aún más sus instrucciones al lenguaje humano, de modo que los programas se puedan leer y escribir más fácilmente. Para ello utilizan palabras en lugar de cadenas de símbolos sin aparente significado, reduciendo así las posibilidades de cometer errores.

- Suministrar librerías de rutinas, con las funciones de uso frecuente: entrada/salida, manejo de tablas, manejo de ficheros, etc. de este modo se evita tener que crearlas cada vez que se necesiten. .


Los lenguajes de alto nivel no son inteligibles directamente para el ordenador, sino que necesitan ser compilados para obtener el programa en código máquina.  

Algunos lenguajes de alto nivel, por ejemplo, BASIC, no compilan sus programas, sino que utilizan un intérprete que va traduciendo el programa  para que el ordenador pueda ejecutarlo. Las diferencias entre un compilador y un intérprete se pueden resumir en:

-          El intérprete traduce y ejecuta cada línea del programa siguiendo la secuencia del mismo; por el contrario, el compilador traduce el programa completo, creando uno nuevo ya inteligible para el ordenador, llamado programa objeto. Posteriormente, éste debe ser montado (linkado), operación que consiste en enlazarlo con las librerías de rutinas, para crear así un nuevo fichero ejecutable por el ordenador, denominado programa ejecutable.

-     Otra diferencia entre un compilador y un intérprete es que este último ejecuta el programa, paso a paso, hasta el final o hasta encontrar un error, en cuyo caso se detendría la ejecución. Por el contrario, el compilador traduce el programa completo antes de que se pueda ejecutar, y si durante dicha traducción se producen errores, informará de su posición para que puedan ser corregidos.

El principal problema que presentan los lenguajes de alto nivel es la gran variedad existente en la actualidad (algunos cientos), además de las diferentes versiones de algunos de ellos, por lo que dominarlos todos en profundidad resulta casi imposible. ,
 

Lenguajes de cuarta generación


Los lenguajes de cuarta generación nacieron para solucionar problemas  muy concretos. Hasta ese momento, se habían creado únicamente lenguajes específicos; por ello se comenzaron a crear lenguajes más especializados.

Para el usuario, estos lenguajes son muy intuitivos, ya que se centran en necesidades muy específicas. En la mayoría de los casos suelen estar formados por una serie de precompiladores, llamados así porque traducen previa- 1 mente su código aun lenguaje de alto nivel (normalmente lenguaje C) y posteriormente a lenguaje máquina para obtener el fichero ejecutable.

Entre los lenguajes de cuarta generación podemos destacar:

SQL


Se trata de un lenguaje que permite realizar consultas en una base de datos.

4GL


Permite generar aplicaciones con ayuda de una gran cantidad de módulos
preprogramados en lenguaje C. .

Lenguajes orientados a objetos

Los lenguajes de alto nivel se basaban principalmente en la programación estructurada; sin embargo, los lenguajes orientados a objetos se centran en los datos, objetos, indicando cómo han de ser y definiendo las operaciones a las que se les va a someter.
Existen varios lenguajes que soportan programación orientada a objetos: Visual Basic, Object Pascal, Smalltalk, C++, Visual C++, Visual, etc.

Definición de la Calidad

Presentación de lo que es el tema de calidad

Programación de Microcontroladores

En este tema estudiaremos la arquitectura y programación en ensamblador del microcontrolador PIC16F84 del
fabricante Microchip.


Haz clic aquí para ver el tema completo

Actividades Electrónica Digital

                                              
Tema 1 
                Evaluación 1ª 

 
Tema 2
Tema 3




Examen día 23 de Febrero:
1º .............................................................................
2º ..........................................................................................
3º Diseñar un registro de desplazamiento de tre bits, entrada serie salida paralelo
    sincrono, con biestables tipo "D".
4º Obtener el cronograma de salida de siguiente circuito:
   
       CHICOS HAY QUE ESTUDIAR UN POQUITO MÁS