Está en la página 1de 18

UNIVERSIDAD ESPAÑA

ING. TECNOLOGIAS Y SISTEMAS

SEPTIMO CUATRIMESTRE

MICROCONTROLADORES

PROGRAMACION Y USO DE LOS PIC

CATEDRATICO: ING. HECTOR QUIÑONES NAVA

ALUMNA: ALEJANDRA GONZÁLEZ RAMOS

Victoria de Durango, Dgo., Septiembre del 2020


CONTENIDO

Introducción

1.- Lenguaje de Programación


2.- Lenguajes de programación de los PIC.
3.- Investigue que se “hace” en el código

Conclusión
INTRODUCCION
A medida que el programa de los microcontroladores se hace más
complejo, trabajar en lenguaje "assembler" se hace más dispendioso, difícil de
manejar y el control de interrupciones muchas veces son un dolor de cabeza. Una
muy buena alternativa para solucionar estos problemas, es usar el lenguaje C para
programarlos.

De esta forma, los programas se vuelven muy sencillos; lo mismo que el de


interrupciones se convierte ahora en algo muy sencillo. Se presentan los
elementos y las instrucciones más importantes para poder llegar a desarrollar un
sin número de programas para los PICs.
1.- Lenguaje de Programación
Es un lenguaje formal que, mediante una serie de instrucciones, le permite
a un programador escribir un conjunto de órdenes, acciones consecutivas, datos
y algoritmos para, de esa forma, crear programas que controlen el comportamiento
físico y lógico de una máquina.

Mediante este lenguaje se comunican el programador y la


máquina, permitiendo especificar, de forma precisa, aspectos como:

 cuáles datos debe operar un software específico;

 cómo deben ser almacenados o transmitidos esos datos;

 las acciones que debe tomar el software dependiendo de las circunstancias


variables.

¿Qué tipos de lenguaje de programación existen?

El lenguaje de programación es la base para construir todas las


aplicaciones digitales que se utilizan en el día a día y se clasifican en
dos tipos principales: lenguaje de bajo nivel y de alto nivel.

Lenguaje de programación de bajo nivel

Son lenguajes totalmente orientados a la máquina.

Este lenguaje sirve de interfaz y crea un vínculo inseparable entre


el hardware y el software. Además, ejerce un control directo sobre el equipo y su
estructura física. Para aplicarlo adecuadamente es necesario que el programador
conozca sólidamente el hardware. Éste se subdivide en dos tipos:

Lenguaje máquina

Es el más primitivo de los lenguajes y es una colección de dígitos binarios o


bits (0 y 1) que la computadora lee e interpreta y son los únicos idiomas que las
computadoras entienden.

Ejemplo: 10110000 01100001


No entendemos muy bien lo que dice ¿verdad? Por eso, el lenguaje
ensamblador nos permite entender mejor a qué se refiere éste código.

Lenguaje ensamblador

El lenguaje ensamblador es el primer intento de sustitución del lenguaje de


máquina por uno más cercano al utilizado por los humanos.

Un programa escrito en éste lenguaje es almacenado como texto (tal como


programas de alto nivel) y consiste en una serie de instrucciones que
corresponden al flujo de órdenes ejecutables por un microprocesador. Sin
embargo, dichas máquinas no comprenden el lenguaje ensamblador, por lo que se
debe convertir a lenguaje máquina mediante un programa llamado Ensamblador.

Este genera códigos compactos, rápidos y eficientes creados por el


programador que tiene el control total de la máquina.

Ejemplo: MOV AL, 61h (asigna el valor hexadecimal 61 al registro “AL”)

Lenguaje de programación de alto nivel

Tienen como objetivo facilitar el trabajo del programador, ya que utilizan


unas instrucciones más fáciles de entender. Además, el lenguaje de alto nivel
permite escribir códigos mediante idiomas que conocemos (español, inglés, etc.) y
luego, para ser ejecutados, se traduce al lenguaje de máquina mediante
traductores o compiladores.

Traductor

Traducen programas escritos en un lenguaje de programación al lenguaje


máquina de la computadora y a medida que va siendo traducida, se ejecuta.

Compilador

Permite traducir todo un programa de una sola vez, haciendo una ejecución
más rápida y puede almacenarse para usarse luego sin volver a hacer la
traducción.
2.- Lenguajes de programación de los PIC.
Dentro de los lenguajes en los que programamos rutinas para PIC existen
tres posibilidades:

 Lenguaje BASIC

 Lenguaje C

 Lenguaje Ensamblador (assembler)

El lenguaje BASIC:
Ventajas:

 Es un lenguaje muy simple y con instrucciones fácilmente legibles, incluso


por no expertos.
Desventajas:

 Nunca vas a tener el control del programa en cuanto tiempos de ejecución y


control de registros bit a bit.

 Es muy complicado el manejo de interrupciones simultáneas en este


lenguaje. Tiene limitaciones cuando genera el archivo. hex, es decir no
optimiza el tamaño de memoria de programa del PIC.

 La mayoría de compiladores para este lenguaje pueden utilizarse


únicamente bajo ambiente Windows.
Lenguaje C:
Ventajas:

 Es un lenguaje de alto nivel más cercano a la máquina.

 Puedes construir rutinas matemáticas fácilmente.

 Puede ser de ayuda al combinarlo con Ensamblador sobre todo en la gama


alta.

 Se pueden crear macros con este lenguaje, para después simplificar el


código en diferentes desarrollos.

 Es aceptado por la empresa fabricante Microchip, incluso ellos tienen


algunos compiladores C.
Desventajas:

 Los programas al compilarlos pueden resultar un poco extensos y pesados


por ello debe tenerse en cuenta la capacidad de memoria de programa del
PIC a utilizar.

 Con este lenguaje tampoco se puede controlar del todo los tiempos y los
registros bit a bit.

Para este lenguaje existen también varias casas que producen software y
compiladores para este lenguaje entre ellas las más importantes son:
www.microchip.com con sus compiladores C18 para la gama alta y C30 para los
dsPIC, ambos Como otras herramientas de esta marca, se puede incluir en el
entorno gratuito MPLAB IDE, y permite a los desarrolladores, llevar a cabo su
aplicación en un lenguaje de alto nivel.

No son del todo gratuitos.www.ccsinfo.com Sus herramientas más


conocidas, son la serie de compiladores para las distintas familias de
microcontroladores Microchip PIC® MCU: PCW IDE, PCWH IDE y PCWHD IDE.
Ofrecen la posibilidad de que el usuario pueda elegir el compilador concreto para
la familia que va a utilizar, y compilar en modo línea de comandos, tanto para
Microsoft Windows, como para Linux. Para los usuarios de Microsoft Windows,
también existe la posibilidad de utilizar su potente entorno de desarrollo PCWHD
IDE, que incluye además de los compiladores para todas las familias de PICs y
dsPICs, entre otras cosas, un editor de código con reconocimiento de comandos,
un depurador ICD, y un Wizard que en base a lo que el usuario le indique,
generará la mayor parte del código para inicializar el microcontrolador.

Además, incluyen una gran cantidad de librerías muy útiles para asociar
con la rutina que estamos desarrollando. Este compilador también puede
integrarse con MPLAB IDE. No es gratuito.www.htsoft.com (HI-TECH) Sus
herramientas más conocidas son PICC y PICC18. No son gratuitos.

Lenguaje Ensamblador:

Ventajas:

 Es el lenguaje de bajo nivel natural de la línea PIC tanto para gama baja,
media o alta.

 Con él se tiene un aprovechamiento eficiente de los recursos del PIC.

 Se pueden crear macros con este lenguaje, para después simplificar el


código en diferentes desarrollos.

 Con él se pueden controlar los tiempos y los registros bit a bit.

 Excelente para manejar interrupciones simultáneas.


 Cuando se genera el archivo .hex éste es completamente optimizado.
Desventajas:

 En realidad, no existe ninguna, excepto cuando no se tiene experiencia en


programación puede tardarse el desarrollo de alguna rutina en comparación
con los otros lenguajes.

El compilador para este lenguaje es el MPLAB IDE el cual se consigue


totalmente gratuito en la página de Microchip y constantemente están sacando
nuevas versiones, debe aclararse que este solo funciona bajo ambiente Windows.
Para Linux existe una versión alternativa llamada: PIKLAB la cual presenta
simuladores, editores, ensambladores y soporta una gran cantidad de
compiladores C para PIC.
Un error común que cometen los principiantes cuando se les menciona la
posibilidad de programar en Basic o C es pensar que con Visual Basic o Visual
C++ pueden elaborar rutinas para PICs, pero en realidad lo que se debe tener en
cuenta es que existen compiladores especiales para estos lenguajes y por ende la
sintaxis es diferente de la de un lenguaje orientado a objetos.

Normalmente los programas se escriben en el lenguaje ensamblador


cuando se requiere controlar completamente la ejecución de programa. Como el
proceso de escribir un código ejecutable era considerablemente arduo, en
consecuencia, fue creado el primer lenguaje de programación denominado
ensamblador (ASM).

El proceso de programación se hizo un poco más complicado. Por otro


lado, el proceso de escribir un programa dejó de ser una pesadilla. Las
instrucciones en ensamblador consisten en las abreviaturas con significado. Un
programa denominado ensamblador instalado en la PC compila las instrucciones
del lenguaje ensamblador a código máquina (código binario). Este programa
compila instrucción a instrucción sin optimización. La ventaja principal del lenguaje
ensamblador es su simplicidad y el hecho de que a cada instrucción cle
corresponde una localidad de memoria.

Como permite controlar todos los procesos puestos en marcha dentro del
microcontrolador, este lenguaje de programación todavía sigue siendo popular.
Por otro lado, los programas se ejecutan siempre a alta velocidad y en la mayoría
de casos no es necesario saber en detalle qué ocurre dentro del microcontrolador.
A pesar de todos los lados buenos del lenguaje ensamblador, los programadores
siempre han necesitado un lenguaje de programación similar al lenguaje utilizado
en el habla cotidiana. Por último, los lenguajes de programación de alto nivel
(Basic entre otros) fueron creados.
La ventaja principal de estos lenguajes es la simplicidad de escribir un
programa. Varias instrucciones en ensamblador se sustituyen por una sentencia
en Basic. El programador ya no tiene que conocer el conjunto de instrucciones del
microcontrolador utilizado. Ya no es posible conocer exactamente cómo se ejecuta
cada sentencia, de todas formas, ya no importa. Aunque siempre se puede
insertar en el programa una secuencia escrita en ensamblador.

Ventajas de los lenguajes de programación de alto nivel

Si alguna vez ha escrito un programa para un microcontrolador PIC en


lenguaje ensamblador, probablemente sepa que la arquitectura RISC carece de
algunas instrucciones. Por ejemplo, no hay instrucción apropiada para multiplicar
dos números.

Por supuesto, este problema se puede resolver gracias a la aritmética que


permite realizar las operaciones complejas al descomponerlas en un gran número
de operaciones más simples. En este caso, la multiplicación se puede sustituir con
facilidad por adición sucesiva (a x b = a + a + a + ... + a). Ya estamos en el
comienzo de una historia muy larga... No hay que preocuparse al utilizar uno de
estos lenguajes de programación de alto nivel como es Basic, porque el
compilador encontrará automáticamente la solución a éste problema y otros
similares. Para multiplicar los números a y b, basta con escribir a*b.
3.- Investigue que se “hace” en el siguiente código

Todo lo que se escriba luego de un ";" (punto y coma) será ignorado por el
ensamblador, estos son los comentarios, y sirve para saber qué hace cada línea
de código. Describamos el programa por partes.

Aquí se indica al ensamblador para que microcontrolador estas codificando


(PIC16F84). y cuál será el sistema de numeración que utilizarás (hexadecimal).
Notar que hay tres columnas, en este caso la primera está vacía. Se debe respetar
las tabulaciones para no confundir al ensamblador.

Al registro STATUS, que está en la posición 0x03 de la memoria de datos le


ponemos la etiqueta "estado", equ significa igual. (Es decir, le asignamos el
nombre estado al registro que está en la posición 0x03 de la memoria de datos).
Luego realizamos lo mismo con trisa y trisb.

La directiva org indica el sitio de la memoria en donde se escribe una parte


del programa. En este caso el contador de programa apuntará a la dirección 0x00
(reset) entonces ejecutará la instrucción que sigue a continuación, (saltar a la
etiqueta inicio) y nuestro código de programa comienza en la dirección de
memoria 0x05 (aquí salto por encima de la interrupción 0x04).

BSF (SET FILE REGISTER), es la instrucción que pone un uno en el bit del
registro especificado, en este caso pone a uno el bit 5 del registro STATUS (el
rp0), para pasar al banco 1. movlw significa mueve la siguiente literal al Registro
W. W es el Registro de Trabajo, y lo usamos para almacenar momentáneamente
los datos que queremos mover. una vez hecho esto pasamos el dato a trisa, o a
trisb, según el caso. movwf significa mueve el contenido del registro W al registro
f, en este caso f sería trisa o trisb. BCF (BIT CLEAR FILE REGISTER), ésta
instrucción limpia el bit del registro especificado, o lo pone a cero, en este caso
pone a cero el bit 5 del registro STATUS para regresar al banco 0.

Programando una rutina Lo que hicimos hasta ahora solo fue configurar los
puertos, pero no genera ninguna señal ni nada por el estilo. Ejecutaremos una
rutina básica enviando una señal de encendido hacia un puerto de salida.
Encenderemos un LED, lo mantendremos encendido por un tiempo, luego lo
apagaremos y haremos que se repita todo de nuevo. Le pondremos un nombre,
aquí le asignaremos LED1.asm (no olvidar el .asm)

Descripción del código: Se agregaron 3 registros mas (reg1, reg2 y reg3),


éstos vendrían a ser como variables ubicadas en sus respectivas posiciones
(0x0C, 0x0D, 0x0E,) y son registros de propósito general (recordemos que para el
PIC16F84 son 68, puedes elegir cualquiera). A demás se agregó ptob, etiqueta
que corresponde a la dirección del puerto B Analicemos lo siguiente:
La etiqueta "ahora" es el nombre de toda esta rutina, de tal modo que
cuando se quiera repetir el procedimiento solo saltara a "ahora". bsf es poner a
uno un bit, en este caso al primer bit (el bit 0) del puerto B (ptob). call es una
llamada, en este caso llama a la rutina de retardo, cuando regrese, continuará con
el código. bcf es poner a cero un bit, en este caso al primer bit (bit 0) del puerto B
(ptob). y luego llama al retardo, cuando retorne se encontrará con la instrucción
goto obligándolo a saltar a la etiqueta ahora para que se repita todo de nuevo.
CONCLUSION
Se justifica plenamente aprender a programar los microcontroladores desde
un lenguaje de alto nivel, ya que ello le permite al programador un mayor control
sobre su programa. El manejo de las interrupciones se hace de manera más clara
y presenta menos problemas cuando se realiza desde un lenguaje de alto nivel
que desde el "assembler".

Si bien es cierto, que trabajar desde un lenguaje de alto nivel tiene sus
ventajas, también es cierto que esto hace que el programador no necesariamente
deba tener un conocimiento claro de la estructura interna del microcontrolador.

Usar lenguaje de alto nivel para el manejo de los microcontroladores,


permite trabajar de forma sencilla con los microcontroladores. Esto colabora
enormemente a que el manejo de los microcontroladores cada día sea menos
exclusivo del personal con gran conocimiento en sistemas y electrónica.
CIBERGRAFIA
https://rockcontent.com/es/blog/que-es-un-lenguaje-de-
programacion/#:~:text=Es%20un%20lenguaje%20formal%20que,y%20l%C3%B3g
ico%20de%20una%20m%C3%A1quina.

https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-
basic/lenguajes-de-programacion

http://electronicadesarrollo.blogspot.com/2007/12/programacin-de-pics.html

También podría gustarte