SlideShare una empresa de Scribd logo
ELECTRÓNICA INDUSTRIAL
Ing. Engerbert Mendoza
PROGRAMACIÓN APLICADA
INTRODUCCIÓN
Todos los días, desde que nos levantamos hasta acostarnos,
interactuamos con dispositivos electrónicos: despertadores, cafeteras,
secadoras, hornos microondas, licuadoras, ascensores, alarmas de vehículos,
puertas electrónicas, computadores, móviles, etc. Todos estos dispositivos,
que hacen nuestra vida más cómoda y sencilla, poseen dentro de su
electrónica a varios microcontroladores. Hoy hablaremos de estos circuitos
electrónicos y cómo programarlos.
Todas estas tecnologías involucran el uso de microcontroladores,
dispositivos que poseen la capacidad de interactuar con sensores y
actuadores del entorno físico que los rodea, es por ello que es de
importancia el aprender las bases de su funcionamiento y así poder
comprender cómo funcionan e interactúan con nosotros los usuarios.
¿QUÉ ES UN MICROCONTROLADOR?
Cuando compras un computador, ya sea de escritorio o un laptop, dentro de
las características más importantes de comparación básicas siempre
consideraras:
• El procesador o CPU: El centro de procesamiento del computador, ya sea
de la Gama Intel o AMD, siempre comparando el numero de núcleos y la
velocidad en GHz.
• Memoria Ram: Con navegadores como Chrome, siempre necesitarás esos
Gbytes altos.
• Disco Duro: Para almacenar tus series y películas favoritas en 1080p, sin
duda se necesitaras 1 terabyte.
¿QUÉ ES UN MICROCONTROLADOR?
Ahora imagina tener todo esto en un pequeño chip, sin duda no con las mismas
prestaciones, pero las suficientes para cumplir una tarea en específico, cómo calentar tu
café a la temperatura que prefieres. ¿Lo imaginaste? Esto es lo que define a un
Microcontrolador.
Al igual que un computador, posee dispositivos de entrada (mouse, teclado) y
salida (monitor, parlantes) un microcontrolador se basa en este principio contando como
entradas a sensores (temperatura, luz, sonido, etc.) y como salidas a los actuadores (leds,
motores, relés, etc.).
Volviendo al ejemplo de calentar el café, tendríamos como entrada un sensor de
temperatura y como actuador un interruptor interno que desconectara el
electrodoméstico cuando ha alcanzado la temperatura deseada. Como se mencionó para
realizar estas tareas no se necesita mucho procesamiento computacional.
PROGRAMACIÓN DE UN MICROCONTROLADOR
Existen dos tendencias en la programación de microcontroladores:
1.- Lenguajes de bajo nivel: Seguramente has escuchado del lenguaje ensamblador, uno de
los primeros lenguajes que utiliza mnemónicos (palabras entendibles por un programador
humano). Como mencionamos anteriormente, poseemos recursos de procesamiento y
memoria limitados, este tipo de programación cercana al lenguaje máquina es ideal para
aprovechar estos recursos al máximo.
Un lenguaje de programación de características bajo nivel es aquel en el que sus
instrucciones ejercen un control directo sobre el hardware y están condicionados por la
estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su
denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel,
sino que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo,
se utiliza este tipo de lenguajes para programar tareas críticas de los sistemas operativos,
de aplicaciones en tiempo real o controladores de dispositivos.
PROGRAMACIÓN DE UN MICROCONTROLADOR
2.- Lenguajes de alto nivel: Uno de los lenguajes de alto nivel más
populares para programar microcontroladores es el lenguaje C o
lenguajes basados en este. Poseen sintaxis mucho más amigables con
el lenguaje usado por los humanos lo que hace que su programación
sea más sencilla, En lenguajes de programación de alto nivel, varias
instrucciones en ensamblador se sustituyen por una única sentencia. El
programador ya no tiene que conocer el conjunto de instrucciones o
características del hardware del microcontrolador utilizado.
PROGRAMACIÓN DE UN MICROCONTROLADOR
Un lenguaje de programación de alto nivel se caracteriza por expresar
los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la
capacidad que se la ejecuta de las máquinas.
En los primeros lenguajes, la limitación era que se orientaban a un área específica
y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes
procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de
ciertos conocimientos de programación para realizar las secuencias de instrucciones
lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese
solucionar un problema de procesamiento de datos de una manera más fácil y rápida.
Por esta razón, a finales de los años 1950 fue fundada en 1950 y surgió un nuevo
tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un
poco en las ventajas. Estos lenguajes se llaman de tercera generación o de nivel alto, en
contraposición a los de bajo nivel o de nivel próximo a la máquina.
LENGUAJE ENSAMBLADOR
El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto
se denomina el código ejecutable y está compuesto por una serie de ceros y unos,
aparentemente sin significado. Dependiendo de la arquitectura del
microcontrolador, el código binario está compuesto por palabras de 12, 14 o 16 bits
de anchura.
Cada palabra se interpreta por la CPU como una instrucción a ser ejecutada
durante el funcionamiento del microcontrolador. Todas las instrucciones que el
microcontrolador puede reconocer y ejecutar se les denominan colectivamente
Conjunto de instrucciones. Como es más fácil trabajar con el sistema de
numeración hexadecimal, el código ejecutable se representa con frecuencia como
una serie de los números hexadecimales denominada código Hex. En los
microcontroladores PIC con las palabras de programa de 14 bits de anchura, el
conjunto de instrucciones tiene 35 instrucciones diferentes.
El lenguaje ensamblador, o assembler (en inglés assembly language y la
abreviación asm), es un lenguaje de programación de bajo nivel. Consiste en un conjunto
de mnemónicos que representan instrucciones básicas para
los computadores, microprocesadores, microcontroladores y otros circuitos
integrados programables. Implementa una representación simbólica de los códigos de
máquina binarios y otras constantes necesarias para programar una arquitectura de
procesador y constituye la representación más directa del código máquina específico para
cada arquitectura legible por un programador.
Cada arquitectura de procesador tiene su propio lenguaje ensamblador que
usualmente es definida por el fabricante de hardware, y está basada en
los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones),
los registros del procesador, las posiciones de memoria y otras características del lenguaje.
Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de
computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de
programación de alto nivel, que idealmente son portábles.
LENGUAJE ENSAMBLADOR
Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje
ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción
más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las
instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los
cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina.
Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el
desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración.
Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad
de macro (descrita más abajo), y se llaman macro ensambladores.
Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se
contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza
con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la
manipulación directa de hardware, alto rendimiento, o un uso de recursos controlado y reducido.
También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y en
el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las instrucciones de
la máquina. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el
ensamblador como la única manera de ser manipulados.
LENGUAJE ENSAMBLADOR
• El código escrito en lenguaje ensamblador posee una cierta dificultad de ser
entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un
lenguaje de bajo nivel.
• El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para
un microprocesador, puede necesitar ser modificado, para poder ser usado en
otra máquina distinta. Al cambiar a una máquina con arquitectura diferente,
generalmente es necesario reescribirlo completamente.
• Los programas hechos por un programador experto en lenguaje ensamblador son
generalmente mucho más rápidos y consumen menos recursos del sistema
(memoria RAM y ROM) que el programa equivalente compilado desde un
lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se
pueden crear programas que se ejecutan más rápidamente y ocupan menos
espacio que con lenguajes de alto nivel.
CARACTERÍSTICAS LENGUAJE ENSAMBLADOR
• Con el lenguaje ensamblador se tiene un control muy preciso de las
tareas realizadas por un microprocesador por lo que se pueden crear
segmentos de código difíciles y/o muy ineficientes de programar en
un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje
ensamblador se dispone de instrucciones del CPU que generalmente
no están disponibles en los lenguajes de alto nivel.
• También se puede controlar el tiempo en que tarda una rutina en
ejecutarse, e impedir que se interrumpa durante su ejecución.
CARACTERÍSTICAS LENGUAJE ENSAMBLADOR
Generalmente, un programa ensamblador (assembler en inglés)
moderno crea código objeto traduciendo instrucciones mnemónicas de
lenguaje ensamblador en opcodes, y resolviendo los nombres
simbólicos para las localizaciones de memoria y otras entidades. El uso
de referencias simbólicas es una característica clave del lenguaje
ensamblador, evitando tediosos cálculos y actualizaciones manuales de
las direcciones después de cada modificación del programa. La mayoría
de los ensambladores también incluyen facilidades de macros para
realizar sustitución textual - ej. generar cortas secuencias de
instrucciones como expansión en línea en vez de llamar a subrutinas.
PROGRAMA ENSAMBLADOR
Los ensambladores son generalmente más simples de escribir que
los compiladores para los lenguajes de alto nivel, y han estado disponibles
desde los años 1950. Los ensambladores modernos, especialmente para las
arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC,
así como también para el x86 (-64), optimizan la planificación de
instrucciones para explotar la segmentación del CPU eficientemente.
En los compiladores para lenguajes de alto nivel, son el último paso
antes de generar el código ejecutable.
Número de paso Hay dos tipos de ensambladores basados en cuántos
pasos a través de la fuente son necesarios para producir el programa
ejecutable.
PROGRAMA ENSAMBLADOR
• Los ensambladores de un solo paso pasan a través del código fuente
una vez y asumen que todos los símbolos serán definidos antes de
cualquier instrucción que los refiera.
• Los ensambladores de dos pasos crean una tabla con todos los
símbolos y sus valores en el primer paso, después usan la tabla en un
segundo paso para generar código. El ensamblador debe por lo
menos poder determinar la longitud de cada instrucción en el primer
paso para que puedan ser calculadas las direcciones de los símbolos.
PROGRAMA ENSAMBLADOR
Siempre ha habido debates sobre la utilidad y el desempeño del lenguaje
ensamblador relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene
nichos específicos donde es importante. Pero, en general, los modernos
compiladores de optimización para traducir lenguajes de alto nivel en código que
puede correr tan rápidamente como el lenguaje ensamblador escrito a mano, a
pesar de los contraejemplos que pueden ser encontrados.
La complejidad de los procesadores modernos y del subsistema de memoria
hace la optimización efectiva cada vez más difícil para los compiladores, así como
para los programadores en ensamblador. Adicionalmente, y para la consternación
de los amantes de la eficiencia, el desempeño cada vez mayor del procesador ha
significado que la mayoría de los CPU estén desocupados la mayor parte del
tiempo, con retardos causados por embotellamientos predecibles tales como
operaciones de entrada/salida y paginación de memoria. Esto ha hecho que la
velocidad de ejecución cruda del código no sea un problema para muchos
programadores.
USO ACTUAL
Hay algunas situaciones en las cuales los profesionales pudieran
elegir utilizar el lenguaje ensamblador. Por ejemplo cuando:
• Es requerido un ejecutable binario independiente (stand-alone), es
decir uno que deba ejecutarse sin recursos a componentes de tiempo
de ejecución o a bibliotecas asociadas con un lenguaje de alto nivel;
ésta es quizás la situación más común. Son programas empotrados
que solo almacenan una pequeña cantidad de memoria y el
dispositivo está dirigido para hacer tareas para un simple propósito.
Ejemplos consisten en teléfonos, sistemas de combustible e ignición
para automóviles, sistemas de control del aire acondicionado,
sistemas de seguridad, y sensores.
USO ACTUAL
• Interactuando directamente con el hardware, por ejemplo en
controladores (drivers) de dispositivo y manejadores de interrupción.
• Usando instrucciones específicas del procesador no explotadas o
disponibles por el compilador. Un ejemplo común es la instrucción de
rotación bitwise en el núcleo de muchos algoritmos de cifrado.
• Creando funciones vectorizadas para programas en lenguajes de alto
nivel como C. En el lenguaje de alto nivel esto es a veces ayudado por
funciones intrínsecas del compilador que mapean directamente a los
mnemónicos del SIMD, pero sin embargo resulta en una conversión
de ensamblador de uno a uno para un procesador de vector asociado.
USO ACTUAL
• Es requerida la optimización extrema, ej, en un bucle interno en un
algoritmo intensivo en el uso del procesador. Los programadores de juegos
toman ventaja de las habilidades de las características del hardware en los
sistemas, permitiendo a los juegos correr más rápidamente. También las
grandes simulaciones científicas requieren algoritmos altamente
optimizados, ej, álgebra lineal con BLAS o la transformada de coseno
discreta (ej, la versión SIMD en ensamblador del x264, (una biblioteca para
codificar streams de video).
• Un sistema con severas limitaciones de recursos (ej, un sistema
empotrado) debe ser codificado a mano para maximizar el uso de los
limitados recursos; pero esto está llegando a ser menos común a medida
que el precio del procesador decrece y el desempeño mejora.
USO ACTUAL
C es un lenguaje de programación originalmente desarrollado por Dennis
Ritchie entre 1969 y 1972 en los Laboratorios Bell,​ como evolución del anterior
lenguaje B, a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas
operativos, concretamente Unix. C es apreciado por la eficiencia del código que
produce y es el lenguaje de programación más popular para crear software de
sistemas, aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado,
de medio nivel, ya que dispone de las estructuras típicas de los lenguajes de alto
nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un
control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje
que posibilitan mezclar código en ensamblador con código C o acceder
directamente a memoria o dispositivos periféricos.
LENGUAJE C
Uno de los objetivos de diseño del lenguaje C es que sólo sean necesarias unas
pocas instrucciones en lenguaje máquina para traducir cada elemento del lenguaje, sin que
haga falta un soporte intenso en tiempo de ejecución. Es muy posible escribir C a bajo nivel
de abstracción; de hecho, C se usó como intermediario entre diferentes lenguajes.
En parte a causa de ser de relativamente bajo nivel y de tener un modesto
conjunto de características, se pueden desarrollar compiladores de C fácilmente. En
consecuencia, el lenguaje C está disponible en un amplio abanico de plataformas (más que
cualquier otro lenguaje). Además, a pesar de su naturaleza de bajo nivel, el lenguaje se
desarrolló para incentivar la programación independiente de la máquina. Un programa
escrito cumpliendo los estándares e intentando que sea portátil puede compilarse en
muchos computadores.
C se desarrolló originalmente (conjuntamente con el sistema operativo Unix, con el
que ha estado asociado mucho tiempo) por programadores para programadores. Sin
embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados
de la programación de software de sistema, para la que se diseñó originalmente.
FILOSOFÍA
• Núcleo del lenguaje simple, con funcionalidades añadidas importantes,
como funciones matemáticas y de manejo de archivos, proporcionadas
por bibliotecas.
• Es un lenguaje muy flexible que permite programar con múltiples estilos.
Uno de los más empleados es el estructurado "no llevado al extremo"
(permitiendo ciertas licencias de ruptura).
• Un sistema de tipos que impide operaciones sin sentido.
• Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como
definir macros e incluir múltiples archivos de código fuente.
PROPIEDADES
• Acceso a memoria de bajo nivel mediante el uso de punteros.
• Interrupciones al procesador con uniones.
• Un conjunto reducido de palabras clave.
• Por defecto, el paso de parámetros a una función se realiza por valor. El
paso por referencia se consigue pasando explícitamente a las funciones las
direcciones de memoria de dichos parámetros.
• Punteros a funciones y variables estáticas, que permiten una forma
rudimentaria de encapsulado y polimorfismo.
• Tipos de datos agregados (struct) que permiten que datos relacionados
(como un empleado, que tiene un id, un nombre y un salario) se combinen
y se manipulen como un todo (en una única variable "empleado").
PROPIEDADES
Desde el inicio del lenguaje han surgido varias ramas de evolución que han
generado varios lenguajes:
• Objective-C es un primer intento de proporcionar soporte para
la programación orientada a objetos en C, pero actualmente usado en Mac
OS X, iOS y GNUstep.
• C++ (pronunciado C Plus Plus) diseñado por Bjarne Stroustrup fue el
segundo intento de proporcionar orientación a objetos a C y es la variante
más difundida y aceptada. Esta versión combina la flexibilidad y el acceso
de bajo nivel de C con las características de la programación orientada a
objetos como abstracción, encapsulación y ocultación.
VARIANTES
También se han creado numerosos lenguajes inspirados en la sintaxis
de C, pero que no son compatibles con él:
• Java, que une una sintaxis inspirada en la del C++ con una orientación
a objetos más similar a la de Smalltalk y Objective C.
• JavaScript, un lenguaje de scripting creado en Netscape e inspirado
en la sintaxis de Java diseñado para dar a las páginas web mayor
interactividad. A la versión estandarizada se la conoce
como ECMAScript.
• C# (pronunciado C Sharp) es un lenguaje desarrollado
por Microsoft derivado de C/C++ y Java.
VARIANTES
JERARQUÍA DE UN SISTEMA AUTOMATIZADO
Los sistemas de automatización industrial pueden muy complejos por
naturaleza, teniendo un gran número de dispositivos trabajando en
sincronización con las tecnologías de automatización. La disposición
jerárquica del sistema de automatización consta de diferentes niveles.
• NIVEL DE CAMPO: Es el nivel más bajo. Incluye los dispositivos de campo
como sensores y actuadores. La principal tarea de estos dispositivos de
campo es transferir los datos de procesos y máquinas al siguiente nivel
superior para monitoreo y análisis. Y también incluye el control de
parámetros de proceso a través de actuadores. Como ejemplo, podríamos
describir este nivel como los ojos y los brazos de un proceso particular. Los
sensores convierten los parámetros de tiempo real (como temperatura,
presión, caudal, nivel, etc.) en señales eléctricas. Estos datos se transfieren
luego al controlador para monitorizar y analizar los parámetros de tiempo
real. Entre los sensores se incluyen termocuplas, sensores de proximidad,
RTDs, caudalímetros, etc.
JERARQUÍA DE UN SISTEMA AUTOMATIZADO
• NIVEL DE CONTROL: Este nivel se compone de varios dispositivos de
automatización como máquinas CNC, PLCs, etc., que adquieren los
parámetros de proceso de varios sensores. Los controladores
automáticos accionan los actuadores basándose en las señales
procesadas provenientes de los sensores ​​y en la técnica de
programación o control. Los controladores lógicos programables (PLC,
Programmable Logic Controller) son los controladores industriales
más ampliamente utilizados que son capaces de proporcionar
funciones de control automático basadas en la entrada de sensores.
Constan de varios módulos como CPU, entradas / salidas analógicas,
entradas / salidas digitales y módulos de comunicación. Permite al
operador programar una función o estrategia de control para realizar
ciertas operaciones automáticas durante el proceso.
JERARQUÍA DE UN SISTEMA AUTOMATIZADO
• NIVEL DE SUPERVISIÓN Y CONTROL DE PRODUCCIÓN: En este nivel,
dispositivos automáticos y sistemas de monitoreo, tales como las Interfases
Hombre Máquina (HMI) proveen las funciones de control e intervención.
Entre estas funciones se incluyen la supervisión de diversos parámetros,
establecimiento de objetivos de producción, archivado histórico, puesta en
marcha y parada de la máquina, etc. Por lo general, los dispositivos más
utilizados en este nivel son los Sistemas de Control de Distribución (DCS,
Distribution Control System) y HMIs de Control de Supervisión y
Adquisición de Datos (SCADA, Supervisory Control and Data Acquisition).
• NIVEL DE INFORMACIÓN O EMPRESARIAL: Este es el nivel superior de la
automación industrial que gestiona todo el sistema de automatización. Las
tareas de este nivel incluyen la planificación de la producción, análisis de
clientes y mercados, compras y ventas, etc. Por lo tanto, se ocupa más de
las actividades comerciales y menos de los aspectos técnicos.
JERARQUÍA DE UN SISTEMA AUTOMATIZADO
• REDES DE COMUNICACIÓN INDUSTRIAL: Por otro lado, otro componente
prominente en los sistemas de automatización industrial son las redes de
comunicación industrial, que transfieren la información de un nivel al otro.
Estas redes están presentes en todos los niveles del sistema de
automatización para proporcionar un flujo continuo de información. No
obstante, las redes de comunicación pueden ser diferentes de un nivel a
otro. Algunas de estas redes incluyen RS485, CAN, DeviceNet, Foundation
Field bus, Profibus, etc.
De la jerarquía anterior podemos concluir que hay flujo de
información continua de nivel alto a nivel bajo y viceversa. Si asumimos esta
forma gráfica, es como una pirámide en la que la información se agrupa a
medida que subimos y obtenemos información detallada sobre el proceso a
medida que bajamos.

Más contenido relacionado

Similar a Electronica industrial MOD 3 programacion aplicada.pdf

Clasificacion de los lenguajes abel
Clasificacion de los lenguajes abelClasificacion de los lenguajes abel
Clasificacion de los lenguajes abel
Abel Velazquez Solorzano
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
Francisco Leal
 
Que es un microcontrolador
Que es un microcontroladorQue es un microcontrolador
Que es un microcontrolador
Marcela azocar
 
Clasificacion de los
Clasificacion de losClasificacion de los
Clasificacion de losJose Mendez
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00Car_00_01
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
Car_00_01
 
Introduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdfIntroduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdf
Neftaly Niño Villarreal
 
Conceptos de programacion oriente
Conceptos de programacion orienteConceptos de programacion oriente
Conceptos de programacion oriente
shariweya
 
Assembler:
 Assembler: Assembler:
Assembler:
Willian Garcia
 
Assembler
AssemblerAssembler
Assembler
wai258
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador evelynm10
 
Oriente conceptos de programacion
Oriente conceptos de programacionOriente conceptos de programacion
Oriente conceptos de programacion
shariweya
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
Infomania pro
 
2. DESARROLLO DE SOFTWARE.pptx
2. DESARROLLO DE SOFTWARE.pptx2. DESARROLLO DE SOFTWARE.pptx
2. DESARROLLO DE SOFTWARE.pptx
Dieguess
 
que es software
que es softwareque es software
que es software
zenaida
 

Similar a Electronica industrial MOD 3 programacion aplicada.pdf (20)

Clasificacion de los lenguajes abel
Clasificacion de los lenguajes abelClasificacion de los lenguajes abel
Clasificacion de los lenguajes abel
 
Compilador e interpretador
Compilador e interpretadorCompilador e interpretador
Compilador e interpretador
 
El computador
El computadorEl computador
El computador
 
Que es un microcontrolador
Que es un microcontroladorQue es un microcontrolador
Que es un microcontrolador
 
Clasificacion de los
Clasificacion de losClasificacion de los
Clasificacion de los
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Introduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdfIntroduccion_a_la_programacion.pdf
Introduccion_a_la_programacion.pdf
 
26 agosto
26 agosto26 agosto
26 agosto
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Conceptos de programacion oriente
Conceptos de programacion orienteConceptos de programacion oriente
Conceptos de programacion oriente
 
Assembler:
 Assembler: Assembler:
Assembler:
 
Assembler
AssemblerAssembler
Assembler
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Oriente conceptos de programacion
Oriente conceptos de programacionOriente conceptos de programacion
Oriente conceptos de programacion
 
So1
So1So1
So1
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
2. DESARROLLO DE SOFTWARE.pptx
2. DESARROLLO DE SOFTWARE.pptx2. DESARROLLO DE SOFTWARE.pptx
2. DESARROLLO DE SOFTWARE.pptx
 
que es software
que es softwareque es software
que es software
 

Último

Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
XIOMARAANTONELLACAST
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
elvis2000x
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
LizetGuadalupeHernan
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
Carlos Pulido
 
Presentacion ATS 2015 Trens argentinos Sanchez.pptx
Presentacion ATS   2015 Trens argentinos Sanchez.pptxPresentacion ATS   2015 Trens argentinos Sanchez.pptx
Presentacion ATS 2015 Trens argentinos Sanchez.pptx
MAURICIOALEJANDROTAS1
 
Medicion-Del-Agua-de-Riego-Aforo 2023.pptx
Medicion-Del-Agua-de-Riego-Aforo 2023.pptxMedicion-Del-Agua-de-Riego-Aforo 2023.pptx
Medicion-Del-Agua-de-Riego-Aforo 2023.pptx
MONICADELROCIOMUNZON1
 
Guia_de_conservacion_y_mantenimiento(1).pdf
Guia_de_conservacion_y_mantenimiento(1).pdfGuia_de_conservacion_y_mantenimiento(1).pdf
Guia_de_conservacion_y_mantenimiento(1).pdf
AlmaDeliaStephanieMo
 
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civilesCAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
PEDROMANJARRES1
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
ronnyrocha223
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
LuisLobatoingaruca
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
munozvanessa878
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
jhunior lopez rodriguez
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
jahirrtorresa
 
NOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctricaNOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctrica
gabyp22
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
cristiaansabi19
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdfOPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
AlejandroContreras470286
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
siclaro982
 

Último (20)

Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
 
Presentacion ATS 2015 Trens argentinos Sanchez.pptx
Presentacion ATS   2015 Trens argentinos Sanchez.pptxPresentacion ATS   2015 Trens argentinos Sanchez.pptx
Presentacion ATS 2015 Trens argentinos Sanchez.pptx
 
Medicion-Del-Agua-de-Riego-Aforo 2023.pptx
Medicion-Del-Agua-de-Riego-Aforo 2023.pptxMedicion-Del-Agua-de-Riego-Aforo 2023.pptx
Medicion-Del-Agua-de-Riego-Aforo 2023.pptx
 
Guia_de_conservacion_y_mantenimiento(1).pdf
Guia_de_conservacion_y_mantenimiento(1).pdfGuia_de_conservacion_y_mantenimiento(1).pdf
Guia_de_conservacion_y_mantenimiento(1).pdf
 
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civilesCAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
 
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
ascensor o elevador​ es un sistema de transporte vertical u oblicuo, diseñado...
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
 
Infografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdfInfografía de operaciones básicas....pdf
Infografía de operaciones básicas....pdf
 
NOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctricaNOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctrica
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdfOPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
OPERACIONPLANTA_CLASE14_CLASE15_BOMBAS_FLOTACIONSELECTIVA.pdf
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
 

Electronica industrial MOD 3 programacion aplicada.pdf

  • 3. INTRODUCCIÓN Todos los días, desde que nos levantamos hasta acostarnos, interactuamos con dispositivos electrónicos: despertadores, cafeteras, secadoras, hornos microondas, licuadoras, ascensores, alarmas de vehículos, puertas electrónicas, computadores, móviles, etc. Todos estos dispositivos, que hacen nuestra vida más cómoda y sencilla, poseen dentro de su electrónica a varios microcontroladores. Hoy hablaremos de estos circuitos electrónicos y cómo programarlos. Todas estas tecnologías involucran el uso de microcontroladores, dispositivos que poseen la capacidad de interactuar con sensores y actuadores del entorno físico que los rodea, es por ello que es de importancia el aprender las bases de su funcionamiento y así poder comprender cómo funcionan e interactúan con nosotros los usuarios.
  • 4. ¿QUÉ ES UN MICROCONTROLADOR? Cuando compras un computador, ya sea de escritorio o un laptop, dentro de las características más importantes de comparación básicas siempre consideraras: • El procesador o CPU: El centro de procesamiento del computador, ya sea de la Gama Intel o AMD, siempre comparando el numero de núcleos y la velocidad en GHz. • Memoria Ram: Con navegadores como Chrome, siempre necesitarás esos Gbytes altos. • Disco Duro: Para almacenar tus series y películas favoritas en 1080p, sin duda se necesitaras 1 terabyte.
  • 5. ¿QUÉ ES UN MICROCONTROLADOR? Ahora imagina tener todo esto en un pequeño chip, sin duda no con las mismas prestaciones, pero las suficientes para cumplir una tarea en específico, cómo calentar tu café a la temperatura que prefieres. ¿Lo imaginaste? Esto es lo que define a un Microcontrolador. Al igual que un computador, posee dispositivos de entrada (mouse, teclado) y salida (monitor, parlantes) un microcontrolador se basa en este principio contando como entradas a sensores (temperatura, luz, sonido, etc.) y como salidas a los actuadores (leds, motores, relés, etc.). Volviendo al ejemplo de calentar el café, tendríamos como entrada un sensor de temperatura y como actuador un interruptor interno que desconectara el electrodoméstico cuando ha alcanzado la temperatura deseada. Como se mencionó para realizar estas tareas no se necesita mucho procesamiento computacional.
  • 6. PROGRAMACIÓN DE UN MICROCONTROLADOR Existen dos tendencias en la programación de microcontroladores: 1.- Lenguajes de bajo nivel: Seguramente has escuchado del lenguaje ensamblador, uno de los primeros lenguajes que utiliza mnemónicos (palabras entendibles por un programador humano). Como mencionamos anteriormente, poseemos recursos de procesamiento y memoria limitados, este tipo de programación cercana al lenguaje máquina es ideal para aprovechar estos recursos al máximo. Un lenguaje de programación de características bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se utiliza este tipo de lenguajes para programar tareas críticas de los sistemas operativos, de aplicaciones en tiempo real o controladores de dispositivos.
  • 7. PROGRAMACIÓN DE UN MICROCONTROLADOR 2.- Lenguajes de alto nivel: Uno de los lenguajes de alto nivel más populares para programar microcontroladores es el lenguaje C o lenguajes basados en este. Poseen sintaxis mucho más amigables con el lenguaje usado por los humanos lo que hace que su programación sea más sencilla, En lenguajes de programación de alto nivel, varias instrucciones en ensamblador se sustituyen por una única sentencia. El programador ya no tiene que conocer el conjunto de instrucciones o características del hardware del microcontrolador utilizado.
  • 8.
  • 9. PROGRAMACIÓN DE UN MICROCONTROLADOR Un lenguaje de programación de alto nivel se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad que se la ejecuta de las máquinas. En los primeros lenguajes, la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida. Por esta razón, a finales de los años 1950 fue fundada en 1950 y surgió un nuevo tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman de tercera generación o de nivel alto, en contraposición a los de bajo nivel o de nivel próximo a la máquina.
  • 10. LENGUAJE ENSAMBLADOR El microcontrolador ejecuta el programa cargado en la memoria Flash. Esto se denomina el código ejecutable y está compuesto por una serie de ceros y unos, aparentemente sin significado. Dependiendo de la arquitectura del microcontrolador, el código binario está compuesto por palabras de 12, 14 o 16 bits de anchura. Cada palabra se interpreta por la CPU como una instrucción a ser ejecutada durante el funcionamiento del microcontrolador. Todas las instrucciones que el microcontrolador puede reconocer y ejecutar se les denominan colectivamente Conjunto de instrucciones. Como es más fácil trabajar con el sistema de numeración hexadecimal, el código ejecutable se representa con frecuencia como una serie de los números hexadecimales denominada código Hex. En los microcontroladores PIC con las palabras de programa de 14 bits de anchura, el conjunto de instrucciones tiene 35 instrucciones diferentes.
  • 11. El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel. Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portábles. LENGUAJE ENSAMBLADOR
  • 12. Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina del computador objetivo. El ensamblador realiza una traducción más o menos isomorfa (un mapeo de uno a uno) desde las sentencias mnemónicas a las instrucciones y datos de máquina. Esto está en contraste con los lenguajes de alto nivel, en los cuales una sola declaración generalmente da lugar a muchas instrucciones de máquina. Muchos sofisticados ensambladores ofrecen mecanismos adicionales para facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la ayuda de depuración. Particularmente, la mayoría de los ensambladores modernos incluyen una facilidad de macro (descrita más abajo), y se llaman macro ensambladores. Fue usado principalmente en los inicios del desarrollo de software, cuando aún no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, alto rendimiento, o un uso de recursos controlado y reducido. También es utilizado en el desarrollo de controladores de dispositivo (en inglés, device drivers) y en el desarrollo de sistemas operativos, debido a la necesidad del acceso directo a las instrucciones de la máquina. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados. LENGUAJE ENSAMBLADOR
  • 13. • El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel. • El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. • Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel. CARACTERÍSTICAS LENGUAJE ENSAMBLADOR
  • 14. • Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel. • También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución. CARACTERÍSTICAS LENGUAJE ENSAMBLADOR
  • 15. Generalmente, un programa ensamblador (assembler en inglés) moderno crea código objeto traduciendo instrucciones mnemónicas de lenguaje ensamblador en opcodes, y resolviendo los nombres simbólicos para las localizaciones de memoria y otras entidades. El uso de referencias simbólicas es una característica clave del lenguaje ensamblador, evitando tediosos cálculos y actualizaciones manuales de las direcciones después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades de macros para realizar sustitución textual - ej. generar cortas secuencias de instrucciones como expansión en línea en vez de llamar a subrutinas. PROGRAMA ENSAMBLADOR
  • 16. Los ensambladores son generalmente más simples de escribir que los compiladores para los lenguajes de alto nivel, y han estado disponibles desde los años 1950. Los ensambladores modernos, especialmente para las arquitecturas basadas en RISC, tales como MIPS, Sun SPARC, y HP PA-RISC, así como también para el x86 (-64), optimizan la planificación de instrucciones para explotar la segmentación del CPU eficientemente. En los compiladores para lenguajes de alto nivel, son el último paso antes de generar el código ejecutable. Número de paso Hay dos tipos de ensambladores basados en cuántos pasos a través de la fuente son necesarios para producir el programa ejecutable. PROGRAMA ENSAMBLADOR
  • 17. • Los ensambladores de un solo paso pasan a través del código fuente una vez y asumen que todos los símbolos serán definidos antes de cualquier instrucción que los refiera. • Los ensambladores de dos pasos crean una tabla con todos los símbolos y sus valores en el primer paso, después usan la tabla en un segundo paso para generar código. El ensamblador debe por lo menos poder determinar la longitud de cada instrucción en el primer paso para que puedan ser calculadas las direcciones de los símbolos. PROGRAMA ENSAMBLADOR
  • 18. Siempre ha habido debates sobre la utilidad y el desempeño del lenguaje ensamblador relativo a lenguajes de alto nivel. El lenguaje ensamblador tiene nichos específicos donde es importante. Pero, en general, los modernos compiladores de optimización para traducir lenguajes de alto nivel en código que puede correr tan rápidamente como el lenguaje ensamblador escrito a mano, a pesar de los contraejemplos que pueden ser encontrados. La complejidad de los procesadores modernos y del subsistema de memoria hace la optimización efectiva cada vez más difícil para los compiladores, así como para los programadores en ensamblador. Adicionalmente, y para la consternación de los amantes de la eficiencia, el desempeño cada vez mayor del procesador ha significado que la mayoría de los CPU estén desocupados la mayor parte del tiempo, con retardos causados por embotellamientos predecibles tales como operaciones de entrada/salida y paginación de memoria. Esto ha hecho que la velocidad de ejecución cruda del código no sea un problema para muchos programadores. USO ACTUAL
  • 19. Hay algunas situaciones en las cuales los profesionales pudieran elegir utilizar el lenguaje ensamblador. Por ejemplo cuando: • Es requerido un ejecutable binario independiente (stand-alone), es decir uno que deba ejecutarse sin recursos a componentes de tiempo de ejecución o a bibliotecas asociadas con un lenguaje de alto nivel; ésta es quizás la situación más común. Son programas empotrados que solo almacenan una pequeña cantidad de memoria y el dispositivo está dirigido para hacer tareas para un simple propósito. Ejemplos consisten en teléfonos, sistemas de combustible e ignición para automóviles, sistemas de control del aire acondicionado, sistemas de seguridad, y sensores. USO ACTUAL
  • 20. • Interactuando directamente con el hardware, por ejemplo en controladores (drivers) de dispositivo y manejadores de interrupción. • Usando instrucciones específicas del procesador no explotadas o disponibles por el compilador. Un ejemplo común es la instrucción de rotación bitwise en el núcleo de muchos algoritmos de cifrado. • Creando funciones vectorizadas para programas en lenguajes de alto nivel como C. En el lenguaje de alto nivel esto es a veces ayudado por funciones intrínsecas del compilador que mapean directamente a los mnemónicos del SIMD, pero sin embargo resulta en una conversión de ensamblador de uno a uno para un procesador de vector asociado. USO ACTUAL
  • 21. • Es requerida la optimización extrema, ej, en un bucle interno en un algoritmo intensivo en el uso del procesador. Los programadores de juegos toman ventaja de las habilidades de las características del hardware en los sistemas, permitiendo a los juegos correr más rápidamente. También las grandes simulaciones científicas requieren algoritmos altamente optimizados, ej, álgebra lineal con BLAS o la transformada de coseno discreta (ej, la versión SIMD en ensamblador del x264, (una biblioteca para codificar streams de video). • Un sistema con severas limitaciones de recursos (ej, un sistema empotrado) debe ser codificado a mano para maximizar el uso de los limitados recursos; pero esto está llegando a ser menos común a medida que el precio del procesador decrece y el desempeño mejora. USO ACTUAL
  • 22.
  • 23. C es un lenguaje de programación originalmente desarrollado por Dennis Ritchie entre 1969 y 1972 en los Laboratorios Bell,​ como evolución del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementación de Sistemas operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel, ya que dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos. LENGUAJE C
  • 24. Uno de los objetivos de diseño del lenguaje C es que sólo sean necesarias unas pocas instrucciones en lenguaje máquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho, C se usó como intermediario entre diferentes lenguajes. En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de características, se pueden desarrollar compiladores de C fácilmente. En consecuencia, el lenguaje C está disponible en un amplio abanico de plataformas (más que cualquier otro lenguaje). Además, a pesar de su naturaleza de bajo nivel, el lenguaje se desarrolló para incentivar la programación independiente de la máquina. Un programa escrito cumpliendo los estándares e intentando que sea portátil puede compilarse en muchos computadores. C se desarrolló originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de software de sistema, para la que se diseñó originalmente. FILOSOFÍA
  • 25. • Núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas. • Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura). • Un sistema de tipos que impide operaciones sin sentido. • Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente. PROPIEDADES
  • 26. • Acceso a memoria de bajo nivel mediante el uso de punteros. • Interrupciones al procesador con uniones. • Un conjunto reducido de palabras clave. • Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros. • Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo. • Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado"). PROPIEDADES
  • 27. Desde el inicio del lenguaje han surgido varias ramas de evolución que han generado varios lenguajes: • Objective-C es un primer intento de proporcionar soporte para la programación orientada a objetos en C, pero actualmente usado en Mac OS X, iOS y GNUstep. • C++ (pronunciado C Plus Plus) diseñado por Bjarne Stroustrup fue el segundo intento de proporcionar orientación a objetos a C y es la variante más difundida y aceptada. Esta versión combina la flexibilidad y el acceso de bajo nivel de C con las características de la programación orientada a objetos como abstracción, encapsulación y ocultación. VARIANTES
  • 28. También se han creado numerosos lenguajes inspirados en la sintaxis de C, pero que no son compatibles con él: • Java, que une una sintaxis inspirada en la del C++ con una orientación a objetos más similar a la de Smalltalk y Objective C. • JavaScript, un lenguaje de scripting creado en Netscape e inspirado en la sintaxis de Java diseñado para dar a las páginas web mayor interactividad. A la versión estandarizada se la conoce como ECMAScript. • C# (pronunciado C Sharp) es un lenguaje desarrollado por Microsoft derivado de C/C++ y Java. VARIANTES
  • 29.
  • 30. JERARQUÍA DE UN SISTEMA AUTOMATIZADO Los sistemas de automatización industrial pueden muy complejos por naturaleza, teniendo un gran número de dispositivos trabajando en sincronización con las tecnologías de automatización. La disposición jerárquica del sistema de automatización consta de diferentes niveles. • NIVEL DE CAMPO: Es el nivel más bajo. Incluye los dispositivos de campo como sensores y actuadores. La principal tarea de estos dispositivos de campo es transferir los datos de procesos y máquinas al siguiente nivel superior para monitoreo y análisis. Y también incluye el control de parámetros de proceso a través de actuadores. Como ejemplo, podríamos describir este nivel como los ojos y los brazos de un proceso particular. Los sensores convierten los parámetros de tiempo real (como temperatura, presión, caudal, nivel, etc.) en señales eléctricas. Estos datos se transfieren luego al controlador para monitorizar y analizar los parámetros de tiempo real. Entre los sensores se incluyen termocuplas, sensores de proximidad, RTDs, caudalímetros, etc.
  • 31. JERARQUÍA DE UN SISTEMA AUTOMATIZADO • NIVEL DE CONTROL: Este nivel se compone de varios dispositivos de automatización como máquinas CNC, PLCs, etc., que adquieren los parámetros de proceso de varios sensores. Los controladores automáticos accionan los actuadores basándose en las señales procesadas provenientes de los sensores ​​y en la técnica de programación o control. Los controladores lógicos programables (PLC, Programmable Logic Controller) son los controladores industriales más ampliamente utilizados que son capaces de proporcionar funciones de control automático basadas en la entrada de sensores. Constan de varios módulos como CPU, entradas / salidas analógicas, entradas / salidas digitales y módulos de comunicación. Permite al operador programar una función o estrategia de control para realizar ciertas operaciones automáticas durante el proceso.
  • 32. JERARQUÍA DE UN SISTEMA AUTOMATIZADO • NIVEL DE SUPERVISIÓN Y CONTROL DE PRODUCCIÓN: En este nivel, dispositivos automáticos y sistemas de monitoreo, tales como las Interfases Hombre Máquina (HMI) proveen las funciones de control e intervención. Entre estas funciones se incluyen la supervisión de diversos parámetros, establecimiento de objetivos de producción, archivado histórico, puesta en marcha y parada de la máquina, etc. Por lo general, los dispositivos más utilizados en este nivel son los Sistemas de Control de Distribución (DCS, Distribution Control System) y HMIs de Control de Supervisión y Adquisición de Datos (SCADA, Supervisory Control and Data Acquisition). • NIVEL DE INFORMACIÓN O EMPRESARIAL: Este es el nivel superior de la automación industrial que gestiona todo el sistema de automatización. Las tareas de este nivel incluyen la planificación de la producción, análisis de clientes y mercados, compras y ventas, etc. Por lo tanto, se ocupa más de las actividades comerciales y menos de los aspectos técnicos.
  • 33. JERARQUÍA DE UN SISTEMA AUTOMATIZADO • REDES DE COMUNICACIÓN INDUSTRIAL: Por otro lado, otro componente prominente en los sistemas de automatización industrial son las redes de comunicación industrial, que transfieren la información de un nivel al otro. Estas redes están presentes en todos los niveles del sistema de automatización para proporcionar un flujo continuo de información. No obstante, las redes de comunicación pueden ser diferentes de un nivel a otro. Algunas de estas redes incluyen RS485, CAN, DeviceNet, Foundation Field bus, Profibus, etc. De la jerarquía anterior podemos concluir que hay flujo de información continua de nivel alto a nivel bajo y viceversa. Si asumimos esta forma gráfica, es como una pirámide en la que la información se agrupa a medida que subimos y obtenemos información detallada sobre el proceso a medida que bajamos.