programacion de microcontroladores (pic c …
TRANSCRIPT
![Page 1: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/1.jpg)
PROGRAMACION DE
MICROCONTROLADORES
(PIC C COMPILER)
ING. RAÚL ROJAS REÁTEGUI
![Page 2: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/2.jpg)
Lenguajes de Programación
El PIC ejecuta el programa cargado en la memoria Flash. El
código de programación debe ser convertido en un código
ejecutable (secuencia de ceros y unos).
Para que un código de programación en lenguaje cualquiera se
convierta en un código ejecutable binario de extensión HEX, debe
pasar por un proceso de ensamblado o compilado.
![Page 3: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/3.jpg)
Lenguaje Assembler
El código natural de los PIC es el código ejecutable, su
programación requería de muchas líneas.
El primer lenguaje de programación se denomina ensamblador
(ASM).
Siguiendo la sintaxis básica del ensamblador, era más fácil
escribir y comprender.
Las instrucciones en ensamblador son abreviaturas con
significado y a cada instrucción.
![Page 4: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/4.jpg)
![Page 5: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/5.jpg)
Lenguaje C
El lenguaje C es un lenguaje de programación de alto nivel.
El lenguaje C está estandarizado por ANSI.
El código de programación en Lenguaje C se traducen a
lenguaje máquina por el compilador y luego a un código
ejecutable que puede ser utilizado por el PIC.
![Page 6: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/6.jpg)
![Page 7: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/7.jpg)
VARIBLES Y CONSTANTES EN C
Constante es aquella que su valor asignado no puede ser
cambiado durante la ejecución de programa.
Las constantes se almacenan en la memoria Flash del
microcontrolador.
![Page 8: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/8.jpg)
Variable es un objeto nombrado capaz de contener un dato que
puede ser modificado durante la ejecución de programa.
Pueden ser de distintos tipos, por ello es necesario especificar el
tipo de dato que se le asigna a una variable
Las constantes se almacenan en la memoria RAM del
microcontrolador.
![Page 9: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/9.jpg)
En CCS C las variables deben ser declaradas antes de ser
utilizadas.
Pueden definirse dentro de una función (local) o fuera de todas
las funciones (global).
Pueden ser:
Tipo especificas
Tipo tabla
![Page 10: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/10.jpg)
Variables de tipo especifico: Generalmente para definir
constantes
Int8 o int Define un numero de 8 bits
int16 Define un numero de 16 bits
int32 Define un numero de 32 bits
char Define un carácter de 8 bits
float Define un número de punto flotante de 32 bits
short Define un numero de 1 bits
long Define un numero de 16 bits
void Indica que hay tipo especificado
![Page 11: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/11.jpg)
Variables tipo tabla
static Esta variable inicia en 0 y solo se puede acceder desde
una unidad de compilación.
auto La variable existirá solo si el procedimiento esta en uso
double Define número enteros + y -.
extern Usada con variable externa se utiliza con múltiples
unidades de compilación.
void No esta especificado el tipo.
![Page 12: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/12.jpg)
OPERADORES EN C
Conjunto de caracteres especiales que nos permiten
operaciones aritmética (suma, resta, multiplicación y división) y
lógicas (and, or, xor, not) entre las variables.
![Page 13: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/13.jpg)
Operadores aritméticos
+ Realiza una suma.
=+ Suma dos variable y la almacena en una de ellas. Ejemplo: x+=y;
Los valores de x e y se suman si se guardan en x (x=x+y)
++ Incremento
- Sustracción
=- Diferencia dos variable y la almacena en una de ellas. Ejemplo:
x-=y; Los valores de x e y se restan si se guardan en x (x=x-y)
-- decremento
* Producto.
/ División
== Igual
![Page 14: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/14.jpg)
Operadores lógicos
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
&& Operación AND lógica
! Negación lógica
ll Operación OR lógica
>> Desplazamiento a la derecha
<< Desplazamiento a la izquierda
![Page 15: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/15.jpg)
LIBRERÍAS BÁSICAS EN CCS
# include
Nos permite acceder a librerías incluidas en el programa, para
facilitar la programación.
Sintaxis
#include <nombre y extensión de librería>
#include “nombre y extensión de librería”
![Page 16: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/16.jpg)
# fuses
Nos permite acceder a los fusibles del PIC: reloj (LP, XT, HS, RC),
perro guardián (WDT, NOWDT), protector de la flash (PROTECT,
NOPROTECT), etc.
Sintaxis
#fuses opción(es)
![Page 17: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/17.jpg)
# use delay
Nos permite configurar la frecuencia (1Hz a 100MHz) de la señal de
reloj del PIC. Podemos escribir la frecuencia con las
denominaciones: M, MHZ, K, KHZ
Sintaxis
#use delay (clock= frecuencia)
![Page 18: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/18.jpg)
COMANDOS BÁSICOS EN CCS
While
Utiliza como una declaración de bucle, comprueba una condición
en la entrada. Es decir se ejecutara el código de programación
contenida en ella hasta que se convierta en falsa.
Sintaxis
while(true)
{
Código deseado
}
![Page 19: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/19.jpg)
Do-While
Declaración de bucle, que comprueba una condición en la
salida. Es decir se ejecutara el por lo que el código de
programación siempre se ejecuta al menos una vez.
Sintaxis
do
{
Código deseado
}while (true)
![Page 20: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/20.jpg)
OUTPUT_LOW( PIN)
Nos permite cargar el 0 lógico en un PIN de salida de un puerto.
Sintaxis
output_low (pin_a0);
Carga en el pin A0 del puerto A 0 lógico.
![Page 21: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/21.jpg)
SET_TRIS_NOMBRE-PUERTO (código binario o hexadecimal)
Nos permite definir si un puerto PIC, será un puerto de entrada y de
salida. Si se carga 0 lógico será salida, si se carga 1 lógico será
entrada
Sintaxis
set_tris_a (0x0F);
Los bits A0, A1, A2 y A3 serán puertos de entrada (0H=0000b),
mientras que bits A7,A6,A5 y A4 serán salidas (FH=1111b)
![Page 22: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/22.jpg)
OUTPUT_HIGH( PIN)
Nos permite cargar el 1 lógico en un PIN de salida de un puerto.
Sintaxis
output_low (pin_a0);
Carga en el pin A0 del puerto A 1 lógico.
![Page 23: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/23.jpg)
input (pin)=valor
Nos devuelve 0 (FALSO) y 1 (TRUE) si el pin 1. Generalmente
va acompañada de un comando condicional.
Sintaxis
input (pin_a1)==0;
El valor será 0 si en valor del pin A1 es 1 y 1 si el valor del pin
A1 es 0
![Page 24: PROGRAMACION DE MICROCONTROLADORES (PIC C …](https://reader030.vdocuments.site/reader030/viewer/2022012701/61a4237f9f3171146b3d0aa9/html5/thumbnails/24.jpg)
delay_unidad (VALOR)
Nos permite hacer un retardo, el cual se puede expresar en
milisegundos (ms) o microsegundos (us).
Sintaxis
delay_ms (500);
Generar un retardo de 500ms.