![Page 1: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/1.jpg)
PROGRAMACIÓN CON CCS
Programación en C para electrónica
![Page 2: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/2.jpg)
Estructura de un programa C
2
Programación con CCS-Programación en C para electrónica
![Page 3: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/3.jpg)
Tipos de datos CCS3
Programación con CCS-Programación en C para electrónica
![Page 4: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/4.jpg)
Constantes
123 Decimal 0123 Octal0x123 Hexadecimal0b010101011 Binario'A' Carácter'\010' Carácter Octal'\xA5' Carácter Hex.“Cadena” Cadena de caracteres\n,\r,\b,\t Caracteres especiales
4
Programación con CCS-Programación en C para electrónica
![Page 5: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/5.jpg)
Variables:
En CCS las variables se utilizan para nombrar posiciones de memoria RAM.
Declaración:
tipo_variable identificador [=valor_inicial];
tipo_variable = Tipo de dato de la variable. Identificador = Nombre asignado a la
variable. valor_inicial = Valor inicial almacenado en la
memoria asignada.
5
Programación con CCS-Programación en C para electrónica
![Page 6: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/6.jpg)
Variables:
Las variables deben ser declaradas antes de ser utilizadas.
Pueden ser declaradas como locales o globales.
Pueden ser definidas como: AUTO: La variable existe mientras la
función está activa. STATIC: Una variable local se activa como
global. EXTERN: Permite el uso de variables en
programas de múltiples archivos.
6
Programación con CCS-Programación en C para electrónica
![Page 7: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/7.jpg)
Operadores de asignación:
= Asignación (x=y: x toma el valor de y)
+= Asignación de suma (x+=y igual a x=x+y)
-= Asignación de resta (x-=y igual a x=x-y)
*= Asignación de producto (x*=y igual a x=x*y)
/= Asignación de cociente (x/=y igual a x=x/y)
%= Asignación de resto (x%=y igual a x=x%y)
<<= Asignación de desplazamiento (x<<=y igual a x=x<<y)
>>= Asignación de desplazamiento (x>>=y igual a x=x>>y)
&= Asignación de AND de bits (x&=y igual a x=x&y)
|= Asignación de OR de bits (x|=y igual a x=x|y)
^= Asignación de OR-EX de bits (x^=y igual a x=x^y)
7
Programación con CCS-Programación en C para electrónica
![Page 8: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/8.jpg)
Operadores aritméticos:
+ Suma- Resta* Producto/ División
% Resto-- Decremento++ Incremento
sizeof Tamaño en bytes de un operando
8
Programación con CCS-Programación en C para electrónica
![Page 9: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/9.jpg)
Operadores relacionales:
< Menor que> Mayor que
<= Menor o igual>= Mayor o igual == Igual!= Distinto
?: Expresión condicional
9
Programación con CCS-Programación en C para electrónica
![Page 10: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/10.jpg)
Operadores lógicos y de bits:
! NOT
&& AND
|| OR
~ Complemento a uno& AND^ OR-EXCLUSIVA| OR
>> Desplazamiento a Derechas.<< Desplazamiento a Izquierdas
10
Programación con CCS-Programación en C para electrónica
![Page 11: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/11.jpg)
Precedencia de operadores:11
Programación con CCS-Programación en C para electrónica
![Page 12: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/12.jpg)
Funciones:
Conjunto de sentencias repetitivo agrupadas bajo un nombre.
Pueden ser “llamadas” desde cualquier parte del programa tantas veces como sea necesaria su ejecución.
Pueden devolver valores y recibir parámetros o argumentos.
Deben ser declaradas antes de llamarlas. Pueden agruparse en ficheros de librerias.
Programación con CCS-Programación en C para electrónica
12
![Page 13: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/13.jpg)
Declaración de funciones:
Programación con CCS-Programación en C para electrónica
13
[tipo_dato] identificador ([tip_par1 ,tipo_par2,…]){//sentencias
[return();]}
tipo_dato = tipo de dato devuelto por la función.
Identificador = nombre de la función. tip_parX = nombre y tipo de los argumentos.
![Page 14: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/14.jpg)
Control del flujo de ejecución: If-Else While Do-while For. Switch-case Return Break, Continue y goto.
Programación con CCS-Programación en C para electrónica
14
![Page 15: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/15.jpg)
If - else
a=0? b=10
c=5
Si
No
if (a==0) { b=10; }else c=5;
15
Programación con CCS-Programación en C para electrónica
![Page 16: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/16.jpg)
If - else
a=0? b=10
b=0
Si
No
if (a==0) b=10;else if (a>0) b=5;else b=0; a>0?
b=5
No Si
16
Programación con CCS-Programación en C para electrónica
![Page 17: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/17.jpg)
switch-case
A=0? B=10Si
No
A=1?
No
switch (A) { case 0: B=10; break; case 1: B=20; break; case 2: B=30; break; default:break; }
A=2?
No
B=20Si
B=30Si
17
Programación con CCS-Programación en C para electrónica
![Page 18: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/18.jpg)
Bucle for
n=1
n<=10?No
for (n=1;n<=10;n++) { contador=n; }
Si
contador=n
n=n+1
18
Programación con CCS-Programación en C para electrónica
![Page 19: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/19.jpg)
Bucle while
a<100?Nowhile(a<100)
{ a++; }//puede que no se //ejecute ninguna //vez
Si
a=a+1
19
Programación con CCS-Programación en C para electrónica
![Page 20: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/20.jpg)
Bucle do-while
a<100?No
do { a++; }while(a<100)
//el bucle se //ejecuta al menos //una vez
Si
a=a+1
20
Programación con CCS-Programación en C para electrónica
![Page 21: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/21.jpg)
Directivas del preprocesador
21
Programación con CCS-Programación en C para electrónica
![Page 22: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/22.jpg)
Directivas C estandar
#define ID valor: Utilizadas para definir valores
constantes y asignarles un nombre fácil de identificar.
La compilación sustituye el identificador por su valor.
Ejemplo: #define PI 3,1416 #include <archivo.h>
Utilizadas para incluir en la compilación archivos de cabecera.
22
Programación con CCS-Programación en C para electrónica
![Page 23: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/23.jpg)
Directivas del preprocesador
23
Programación con CCS-Programación en C para electrónica
![Page 24: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/24.jpg)
Fuses:
La directiva #fuses se utiliza para programar la palabra de configuración que definirá el funcionamiento del PIC.
Con esta directiva se indica al programador que bits de la palabra de configuración queremos activar.
Configurar incorrectamente la palabra de control puede producir funcionamientos anómalos
En nuestro caso:
#fuses HS,LVP,NOWDT
24
Programación con CCS-Programación en C para electrónica
![Page 25: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/25.jpg)
Fuses válidos:25
Programación con CCS-Programación en C para electrónica
![Page 26: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/26.jpg)
Retardos software
La directiva #use delay (clock=frec) indica al compilador la frecuencia de reloj de funcionamiento del PIC.
frec es la frecuencia en hercios. Se utiliza para generar retardos software con las
funciones:delay_us(microseg)delay_ms(miliseg)
En nuestro caso:#use delay (clock=8000000)
26
Programación con CCS-Programación en C para electrónica
![Page 27: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/27.jpg)
Directivas del preprocesador
27
Programación con CCS-Programación en C para electrónica
![Page 28: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/28.jpg)
Gestión de la memoria:
CCS incluye directivas para la gestion de la memorias RAM y sus registros.
Esto nos permite trabajar de forma sencilla con las posiciones de memoria RAM y asignar identificadores a posiciones concretas.
Estas directivas permiten acceder a los registros del banco de memoria como variables de tipo bit o byte.
28
Programación con CCS-Programación en C para electrónica
![Page 29: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/29.jpg)
Gestión de la memoria:
CCS incluye directivas para la gestion de la memorias RAM y sus registros.
Esto nos permite trabajar de forma sencilla con las posiciones de memoria RAM y asignar identificadores a posiciones concretas.
Estas directivas permiten acceder a los registros del banco de memoria como variables de tipo bit o byte.
29
Programación con CCS-Programación en C para electrónica
![Page 30: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/30.jpg)
#byte
La directiva #byte pone un nombre a una posición de memoria RAM absoluta.
Sintaxis: #byte
ID=PosMem
//Acceso a los puertos
#byte portA=0x05#byte TRISA=0x85#byte portB=0x06#byte TRISB=0x86#byte portC=0x07#byte TRISC=0x87
30
Programación con CCS-Programación en C para electrónica
![Page 31: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/31.jpg)
#bit
La directiva #bit pone un nombre a un bit de una posición de memoria RAM o un identificador.
Sintaxis: #bit ID=ID.bit #bit
ID=PosMem.bit
//Acceso a los bits //Motores#bit servoI=portC.2#bit servoD=portC.1
//finales de carrera
#bit FCI=0x07.0#bit FCD=0x07.3
31
Programación con CCS-Programación en C para electrónica
![Page 32: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/32.jpg)
Ejemplos de uso
#byte TRISC = 0x87 #byte TRISB = 0x86 #byte PORTC = 0x07 #byte PORTB = 0x06 #bit RB0=PORTB.0 #bit RC7=PORTC.7 ....
void main (void) { TRISC=0xFF; TRISB=0x00; PORTB=PORTC; RB0=RC7; … }
32
Programación con CCS-Programación en C para electrónica
![Page 33: PROGRAMACIÓN CON CCS Programación en C para electrónica](https://reader033.vdocumento.com/reader033/viewer/2022061609/5528bde8497959977d8fd983/html5/thumbnails/33.jpg)
Ensamblador
Las directivas #ASM y #ENDASM permiten incrustar código ensamblador en un programa C de CCS.
El código escrito entre ambas directivas será tratado por el compilador como código ensamblador.
33
Programación con CCS-Programación en C para electrónica