programacion de microcontroladores pic en c

42
CORPOCIDES Ing. Emilio Medina Baquero [email protected]

Upload: brook

Post on 13-Jan-2016

160 views

Category:

Documents


28 download

DESCRIPTION

CORPOCIDES. PROGRAMACION DE MICROCONTROLADORES PIC EN C. Ing. Emilio Medina Baquero [email protected]. SOFTWARE NECESARIO. INSTALADOR DE PICC PROTEUS. OPERADORES. Asignación de Suma: x+=y ; // Es lo mismo que x=x+y; Ejercicio: int x=4,y=5; x+=y; // Cuanto vale x? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PROGRAMACION DE MICROCONTROLADORES PIC EN C

CORPOCIDES

Ing. Emilio Medina [email protected]

Page 2: PROGRAMACION DE MICROCONTROLADORES PIC EN C

SOFTWARE NECESARIO

INSTALADOR DE PICC

PROTEUS

Page 3: PROGRAMACION DE MICROCONTROLADORES PIC EN C

OPERADORES

Asignación de Suma:x+=y ; // Es lo mismo que x=x+y;

Ejercicio:int x=4,y=5;x+=y; // Cuanto vale x?

Asignación de Resta:x-=y ; // Es lo mismo que x=x-y;

Ejercicio:int y=4,x=5;x-=y; // Cuanto vale x?

Page 4: PROGRAMACION DE MICROCONTROLADORES PIC EN C

OPERADORES

Asignación de Multiplicación:x*=y ; // Es lo mismo que x=x*y;

Ejercicio:int x=4,y=5;x*=y; // Cuanto vale x?

Asignación de División:x/=y ; // Es lo mismo que x=x/y;

Ejercicio:int y=4,x=20;x/=y; // Cuanto vale x?

Page 5: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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;c=a+b;return(c);

}Void main(){

int dato;dato=suma(a,b); //Llamado de la función

}

Page 6: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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.

Page 7: PROGRAMACION DE MICROCONTROLADORES PIC EN C

INSTALACION DE PICC

1. Instalar el PICC: - Es importante descomprimir el instalador e instalar los dos archivos:

Page 8: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

1. Abre el PICC (Inicio, programas, PIC-C, PIC C Compiler)

2.Seleccionar New -> Project Wizard

Page 9: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

3. coloca el nombre del proyecto (Primer_Programa) y la carpeta donde se guardará.

Page 10: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

4. En la pestaña General selecciona las opciones como aparece en la figura

Page 11: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

5. En la pestaña Comunicaciones deshabilita RS-232

Page 12: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

6. Acepta los cambios haciendo click en OK

7. La ventana del PICC debe aparecer como en la figura:

Page 13: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

8. Nuestro primer programa consistirá en sacar un “1” por el pin RB0 con el comando:

output_high(pin_b0);

Page 14: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

9. Ahora compilamos el código haciendo click en Build de la pestaña Compile.

Page 15: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

10. Ahora verificamos que no se hallan presentado errores, mirando la ventana Output

Page 16: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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

Page 17: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

Page 18: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EL PRIMER PROYECTO

14. Hacemos doble click sobre el PIC para editar sus propiedades.- Verificamos la frecuencia del reloj: 4MHz

Page 19: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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

Page 20: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

OSC1/CLKIN16

RB0/INT6

RB17

RB28

RB39

RB410

RB511

RB612

RB713

RA017

RA118

RA21

RA32

RA4/T0CKI3

OSC2/CLKOUT15

MCLR4

U2

PIC16F84A

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB425

RB3/PGM24

RB223

RB122

RB0/INT21

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

MCLR/Vpp/THV1

U3

PIC16F873A

MCLR/VPP1

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA3/AN3/VREF+5

RA4/T0CKI6

RA5/AN4/SS/LVDIN7

RE0/RD/AN58

RE1/WR/AN69

RE2/CS/AN710

OSC1/CLKI13

RA6/OSC2/CLKO14

RC0/T1OSO/T1CKI15

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RD2/PSP221

RD3/PSP322

RD4/PSP427

RD5/PSP528

RD6/PSP629

RD7/PSP730

RC4/SDI/SDA23

RC5/SDO24

RC6/TX/CK25

RC7/RX/DT26

RB0/INT033

RB1/INT134

RB2/INT235

RB3/CCP2B36

RB437

RB5/PGM38

RB6/PGC39

RB7/PGD40

RC1/T1OSI/CCP2A16

U4

PIC18F452

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.

Page 21: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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.

Page 22: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

- Los pines de salida del PIC tienen un límite de corriente.

Page 23: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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 Aoutput_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.

Page 24: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 25: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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.

Page 26: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 27: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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.

Page 28: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 29: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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.

Page 30: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 31: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

output_toggle(pin); //niega el estado lógico del pin seleccionado

Ejemplo:

output_toggle(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.

Page 32: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 33: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

Valor1=input_a(); //lee el dato (8 bits) del puerto A y lo almacena en//la variable Valor1

Valor2=input_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;dato=input_a();Output_b(dato);

Page 34: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 35: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

CICLOS INFINITOS:

While(1){//aquí va el programa a repetir infinitamente

}

For(;;) {//aquí va el programa a repetir infinitamente

}

Page 36: PROGRAMACION DE MICROCONTROLADORES PIC EN C

INSTRUCCIÓN IF-ELSE

Con la ayuda de If-Else se pueden tomar desiciones.

If (expresión){sentencia1;}

Else{sentencia2;

}

Page 37: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

Valor1=input(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);

elseoutput_b(0x00);

}

Page 38: PROGRAMACION DE MICROCONTROLADORES PIC EN C

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)

Page 39: PROGRAMACION DE MICROCONTROLADORES PIC EN C

I/O DIGITALES

Valor1=input_state(pin); // lee el valor (“0” ó “1”) del pin seleccionado// y lo almacena en la variable Valor1

Ejemplo:

Valor2=input_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.

Page 40: PROGRAMACION DE MICROCONTROLADORES PIC EN C

EJERCICIOS

Se tiene una lámpara conectada al pin RB0 y dos pulsadores conectados a los pines RA0 y RA1 respectivamente.

A.Encender la lámpara si se presionan los dos pulsadores (si se pulsa uno solo no debe encender). B.Encender la lámpara si se presiona alguno de los dos pulsadores (si se pulsan juntos también debe encender)C.Encender la lámpara si se presiona alguno de los dos pulsadores (si se pulsan juntos no debe encender)D.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)E.Realizar la siguiente secuencia de luces, dejando 500ms entre cada dato:

00000001, 00000010, 00000101, 00001010, 00010100, 00101000, 01010000, 10100000, 01000000, 10000000, 00000000Para 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.

Page 41: PROGRAMACION DE MICROCONTROLADORES PIC EN C

DESARROLLO EJERCICIOS

Page 42: PROGRAMACION DE MICROCONTROLADORES PIC EN C