PROGRAMACION DE MICROCONTROLADORES PIC EN C - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

PROGRAMACION DE MICROCONTROLADORES PIC EN C

Description:

CORPOCIDES Ing. Emilio Medina Baquero Ing.medinaemilio_at_gmail.com * Los microcontroladores PIC tienen teminales de entrada/salida divididos en puertos, que se ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 43
Provided by: Manuel145
Category:

less

Transcript and Presenter's Notes

Title: PROGRAMACION DE MICROCONTROLADORES PIC EN C


1
PROGRAMACION DE MICROCONTROLADORES PIC EN C
CORPOCIDES
Ing. Emilio Medina Baquero Ing.medinaemilio_at_gmail.
com
2
SOFTWARE NECESARIO
INSTALADOR DE PICC PROTEUS
3
OPERADORES
Asignación de Suma xy // Es lo mismo
que xxy Ejercicio int x4,y5 xy //
Cuanto vale x? Asignación de Resta x-y
// Es lo mismo que xx-y Ejercicio int
y4,x5 x-y // Cuanto vale x?
4
OPERADORES
Asignación de Multiplicación xy // Es
lo mismo que xxy Ejercicio int
x4,y5 xy // Cuanto vale x? Asignación de
División x/y // Es lo mismo que
xx/y Ejercicio int y4,x20 x/y //
Cuanto vale x?
5
FUNCIONES
Tipodato Nombrefunción(tipo param1, tipo
param2,) Sentencias return(dato) Ejemplo
int suma(int a,int b) //Definición de la
función int c cab return(c) Void
main() int dato datosuma(a,b) //Llamado
de la función
6
VARIABLES
VARIABLES GLOBALES Su valor puede ser escrito y
leído desde cualquier función. VARIABLES LOCALES
Su valor se pierde al salir de una función.
7
INSTALACION DE PICC
1. Instalar el PICC - Es importante
descomprimir el instalador e instalar los dos
archivos
8
EL PRIMER PROYECTO
1. Abre el PICC (Inicio, programas, PIC-C, PIC C
Compiler) 2.Seleccionar New -gt Project Wizard
9
EL PRIMER PROYECTO
3. coloca el nombre del proyecto
(Primer_Programa) y la carpeta donde se
guardará.
10
EL PRIMER PROYECTO
4. En la pestaña General selecciona las opciones
como aparece en la figura
11
EL PRIMER PROYECTO
5. En la pestaña Comunicaciones deshabilita RS-232
12
EL PRIMER PROYECTO
6. Acepta los cambios haciendo click en OK
7. La ventana del PICC debe aparecer como en la
figura
13
EL PRIMER PROYECTO
8. Nuestro primer programa consistirá en sacar un
1 por el pin RB0 con el comando output_high(
pin_b0)
14
EL PRIMER PROYECTO
9. Ahora compilamos el código haciendo click en
Build de la pestaña Compile.
15
EL PRIMER PROYECTO
10. Ahora verificamos que no se hallan presentado
errores, mirando la ventana Output
16
EL PRIMER PROYECTO
11. Para simular el programa usaremos Proteus,
por lo que debemos abrir el ISIS.
12. Hacemos click en la carpeta para abrir el
esquemático
17
EL PRIMER PROYECTO

18
EL PRIMER PROYECTO
14. Hacemos doble click sobre el PIC para editar
sus propiedades. - Verificamos la frecuencia del
reloj 4MHz
19
EL PRIMER PROYECTO
15. Hacemos doble click sobre la carpeta de la
opción Program File
16. Seleccionamos el programa (.hex) de la
carpeta del proyecto de PICC
20
I/O DIGITALES
Los microcontroladores PIC tienen teminales de
entrada/salida divididos en puertos, que se
encuentran nombrados alfabéticamente A,B,C,D.
Cada puerto puede tener hasta 8 teminales que,
de forma básica se comportan como una
entrada/salida digital.
21
I/O DIGITALES
  • Los pines son configurables por software como
    entrada o salida digital.
  • - El pin RA4 necesita resistencia de pull-up si
    se va a usar como salida.
  • - El puerto B tiene resistencias de pull-up que
    se pueden habilitar por software.

22
I/O DIGITALES
  • Los pines de salida del PIC tienen un límite de
    corriente.

23
I/O DIGITALES
  • Por defecto se usa la directiva STANDARD_IO (el
    compilador configura automáticamente los pines
    como entrada o salida).
  • COMANDOS
  • output_a(valor) //saca valor (entero
    de 8 bits) por el puerto A
  • output_b(valor) //saca valor (entero
    de 8 bits) por el puerto B
  • Ejemplo
  • output_b(23) //saca el dato 23 por el
    puerto B
  • Es importante notar que el comando output
    configura automáticamente el puerto como salida.

24
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

25
I/O DIGITALES
output_bit(pin,valor) //saca valor (1 ó 0)
por el pin seleccionado Ejemplo output_bit(pin
_b1,0) //saca un 0 lógico por el pin
RB1 Es importante notar que el comando
output_bit configura automáticamente el pin como
salida.
26
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

27
I/O DIGITALES
output_high(pin) //saca un 1 lógico por
el pin seleccionado Ejemplo output_high(pin_b7)
//saca un 1 lógico por el pin RB7 Es
importante notar que el comando output_high
configura automáticamente el pin como salida.
28
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

29
I/O DIGITALES
output_low(pin) //saca un 0 lógico por
el pin seleccionado Ejemplo output_low(pin_b0)
//saca un 0 lógico por el pin RB1 Es
importante notar que el comando output_low
configura automáticamente el pin como salida.
30
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

31
I/O DIGITALES
output_toggle(pin) //niega el estado
lógico del pin seleccionado Ejemplo output_tog
gle(pin_b6) //si el estado del pin b6 es 0
saca un 1 //si el estado del pin b6 es 1
saca un 0 Es importante notar que el comando
output_toggle configura automáticamente el pin
como salida.
32
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

33
I/O DIGITALES
  • Valor1input_a() //lee el dato (8 bits)
    del puerto A y lo almacena en
  • //la variable Valor1
  • Valor2input_b() //lee el dato (8 bits)
    del puerto B y lo almacena en
  • //la variable Valor2
  • - La función retorna un dato entero (8bits).
  • Es importante notar que el comando input
    configura automáticamente el puerto como entrada.
  • Ej int dato
  • datoinput_a()
  • Output_b(dato)

34
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

35
I/O DIGITALES
CICLOS INFINITOS While(1) //aquí va el
programa a repetir infinitamente For()
//aquí va el programa a repetir
infinitamente
36
INSTRUCCIÓN IF-ELSE
Con la ayuda de If-Else se pueden tomar
desiciones. If (expresión) sentencia1 Else
sentencia2
37
I/O DIGITALES
  • Valor1input(pin) // lee el valor (0 ó
    1) del pin seleccionado
  • // y lo almacena en la variable Valor1
  • La función retorna un valor booleano 0 si el
    pin está en bajo.
  • La función retorna un valor booleano 1 si el
    pin está en alto.
  • - Es importante notar que el comando input
    configura automáticamente el puerto como entrada.
  • Ejemplo
  • While(1)
  • if(input(pin_a0)1)
  • output_b(0xFF)
  • else
  • output_b(0x00)

38
I/O DIGITALES
  • Modificamos el programa
  • Compilamos
  • En el ISIS damos play a la simulación.
  • (es necesario detener la simulación previamente
    para que los cambios en el programa se reflejen)

39
I/O DIGITALES
  • Valor1input_state(pin) // lee el valor (0 ó
    1) del pin seleccionado
  • // y lo almacena en la variable Valor1
  • Ejemplo
  • Valor2input_state(pin_b1) //lee el pin RB1 y
    almacena el valor en Valor2
  • La función retorna un valor booleano 0 si el
    pin está en bajo.
  • La función retorna un valor booleano 1 si el
    pin está en alto.
  • - Es importante notar que el comando input NO
    cambia la dirección del pin leído.

40
EJERCICIOS
  • Se tiene una lámpara conectada al pin RB0 y dos
    pulsadores conectados a los pines RA0 y RA1
    respectivamente.
  • Encender la lámpara si se presionan los dos
    pulsadores (si se pulsa uno solo no debe
    encender).
  • Encender la lámpara si se presiona alguno de los
    dos pulsadores (si se pulsan juntos también debe
    encender)
  • Encender la lámpara si se presiona alguno de los
    dos pulsadores (si se pulsan juntos no debe
    encender)
  • Si se tiene un tercer pulsador conectado en el
    pin RA2, encender la lámpara si se pulsan 2
    interruptores a la vez. (si se pulsa uno solo o
    los tres a la vez no debe encender)
  • Realizar la siguiente secuencia de luces, dejando
    500ms entre cada dato
  • 00000001, 00000010, 00000101, 00001010, 00010100,
    00101000,
  • 01010000, 10100000, 01000000, 10000000, 00000000
  • Para realizar retardos se usa el comando
    delay_ms(tiempo_en_ms)
  • F. Realice un programa en el cual al presionar
    un pulsador en RA0 se incremente el dato del
    puerto B y al presionar un pulsador en RA1 se
    decremente el dato del puerto B.

41
DESARROLLO EJERCICIOS
42
GRACIAS
Write a Comment
User Comments (0)
About PowerShow.com