programacion de microcontroladores pic en c
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 PresentationTRANSCRIPT
![Page 2: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/2.jpg)
SOFTWARE NECESARIO
INSTALADOR DE PICC
PROTEUS
![Page 3: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/11.jpg)
EL PRIMER PROYECTO
5. En la pestaña Comunicaciones deshabilita RS-232
![Page 12: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/15.jpg)
EL PRIMER PROYECTO
10. Ahora verificamos que no se hallan presentado errores, mirando la ventana Output
![Page 16: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/17.jpg)
EL PRIMER PROYECTO
![Page 18: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/22.jpg)
I/O DIGITALES
- Los pines de salida del PIC tienen un límite de corriente.
![Page 23: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/34.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/35.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/41.jpg)
DESARROLLO EJERCICIOS
![Page 42: PROGRAMACION DE MICROCONTROLADORES PIC EN C](https://reader033.vdocuments.co/reader033/viewer/2022061410/56814616550346895db321d3/html5/thumbnails/42.jpg)