tema_04 programacion c
Post on 06-Jul-2018
233 Views
Preview:
TRANSCRIPT
-
8/17/2019 TEMA_04 Programacion C
1/98
Tema 4INTRODUCCION AL LENGUAJE C
-
8/17/2019 TEMA_04 Programacion C
2/98
Microcontroladores: Tema 4
2
Programación
-
8/17/2019 TEMA_04 Programacion C
3/98
Microcontroladores: Tema 4
3
¿Qué es el lenguaje C?
• Es un lenguaje de propósito general inventado en
Bell-labs por Dennis itc!ie entre "#$# % "#&'
• Es actualmente el lenguaje m(s usado
• De este lenguaje se derivan)
* C++,C, D, .o, /ava, /ava0cript, 1imbo, 1PC,
Perl, P2P, P%t!on,
• En3ocado para plata3ormas cru4adas % portabilidad• E5iste un est(ndar 607 cu%a 8ltima revisión es
60796EC #:##);
-
8/17/2019 TEMA_04 Programacion C
4/98
Microcontroladores: Tema 4
4
1a re3erencia obligada de C
!ttp)99===>ama4on>com9C-Programming-1anguage-;nd-Edition9dp9
-
8/17/2019 TEMA_04 Programacion C
5/98
Microcontroladores: Tema 4
5
¿entajas del C sobre @ssembler ? • Permite trabajar en un ma%or nivel de abstracción Aue
assembler
• Programas m(s legibles
• acilidad para el mantenimiento
• Programas con ma%or portabilidad a otrosmicrocontroladores arAuitecturas
• a%or productividad de los programadores
• enor curva de aprendi4aje al cambiar de micro
• 0e !ace cada ve4 m(s popular para aplicaciones embebidasa medida Aue los microcontroladores tienen cada ve4 mas@ % 7
• .ran cantidad de código libre disponible>
-
8/17/2019 TEMA_04 Programacion C
6/98
Microcontroladores: Tema 4
6
¿Fiene desventajas? • Esconde complejidad % puede ser peligroso en ciertas
aplicaciones
• Es m(s di3icil controlar rutinas crGticas en tiempo>
• Ho se puede utili4ar en microcontroladores con poca
capacidad de @ % 7
• En aplicaciones embebidas es importante revisar lae3iciencia del compilador
• E5iste siempre un trade-o33 entre velocidad % tamaIo del
programa lo Aue se le conoce como optimi4ación
• 0u uso reAuiere Aue los programadores tengan !abilidadesmu% di3erentes Aue los programadores de desJ-top>
-
8/17/2019 TEMA_04 Programacion C
7/98
Microcontroladores: Tema 4
7
Programa en C• Esta 3ormado de 3unciones % variables
• unciones
* Contienen los estatutos de las acciones a reali4ar
• Declaraciones• @signaciones
• 1lamados a 3unciones
• Control
• Hulo• ariables
* @lmacenan los valores Aue ser(n utili4ados en losc(lculos
-
8/17/2019 TEMA_04 Programacion C
8/98
Microcontroladores: Tema 4
8
-
8/17/2019 TEMA_04 Programacion C
9/98
Microcontroladores: Tema 4
9
2eader iles
• El directivo includeKarc!ivo>!L es usado para indicaral compilador los arc!ivos de encabe4ado utili4ados
• 1os arc!ivos de encabe4ados o M!eader 3ilesN como
stdio>! contienen los prototipos de 3unciones %de3inición de variables Aue ser(n utili4adas en el
programa cuando estos reAuieren utili4ar una biblioteca libreria e5terna u otros arc!ivos de código
• En el lenguaje C las 3unciones reAuiren ser declaradasantes de ser llamadas
-
8/17/2019 TEMA_04 Programacion C
10/98
Microcontroladores: Tema 4
10
ariables
• 1as variables en lenguaje C deben de ser
declaradas antes de ser utili4adas, est(n
3ormadas por) * Hombre
* Fipo
* 7pcionalmente su valor inicial
-
8/17/2019 TEMA_04 Programacion C
11/98
Microcontroladores: Tema 4
11
Hombres de variables
• Deben empe4ar con letras o MON guión bajo
• Pueden contener n8meros pero H7
* 0ignos aritméticos, puntos, apóstro3es, palabrasreservadas de C, sGmbolos especiales
,?>>>etc
• @gregar el MON entre palabras le da ma%or
legibilidad a las variables * iariableEntera miOvariableOentera
El guión bajo al inicio se utili4a en la codi3icación de librerias
!a% Aue evita usarlo en programas
-
8/17/2019 TEMA_04 Programacion C
12/98
Microcontroladores: Tema 4
12
Fipos de ariable
• De3ine el tamaIo % tipo de almacenamiento de lavariable, los principales)
* void Ho de3ine nada
* c!ar Caracter un caracter o b%te
* int Entero dos b%tes
* long Entero cuatro b%tes * 3loat Punto 3lotante precisión simple cuatro b%tes
* double Punto 3lotante pres> doble oc!o b%tes
-
8/17/2019 TEMA_04 Programacion C
13/98
Microcontroladores: Tema 4
13
Declaración de ariables
• 1as variables deben de ser declaradas antes de
usarlas, una declaración especi3ica el tipo % una lista
de una o m(s variables de este tipo)
int i,j,k;char mi_char1,mi_char2;
• 1as variables pueden ser iniciali4adas en la
declaración)int i = 0;
char mi_char = 'a';
-
8/17/2019 TEMA_04 Programacion C
14/98
Microcontroladores: Tema 4
14
Constantes
• E5isten cinco tipo de constantes
strings: “Hola mundo”
char: 'a'
integer: 123
!loat: 123"3#
long: $%&$%&(
-
8/17/2019 TEMA_04 Programacion C
15/98
Microcontroladores: Tema 4
15
Base numérica
• Como en ensamblador, en C se pueden especi3icar
di3erentes bases numéricas para 3acilitar legibilitad
* )*+ -./ -( * 4ecimal ninguno 123 * ctal 0 0&23
* He5 05 052*
-
8/17/2019 TEMA_04 Programacion C
16/98
Microcontroladores: Tema 4
16
7peradores aritméticos
• E5isten & operadores aritméticos
• 6 +uma• 7 .esta• 8 ulti9licacin• dimdulo?• 66 incrementar• 77 decrementar
-
8/17/2019 TEMA_04 Programacion C
17/98
Microcontroladores: Tema 4
17
7peraciones a bit bit=ise
• C provee operadores para manipulación a nivel bit
% son v(lidos para operandos c!ar, s!ort, int, longsignados o no
• @ *A4• B . >Carra?• D E. >gorrito?
• F AG >tilde?• rotacin derecha• II rotacin iJKuierda
-
8/17/2019 TEMA_04 Programacion C
18/98
Microcontroladores: Tema 4
18
Ejemplo de operaciones a bit
unsigned char a = 05##;
a = a @ 050/0;
a = a B 050%2;
<
-
8/17/2019 TEMA_04 Programacion C
19/98
Microcontroladores: Tema 4
19
Ejemplo de operaciones a bit
unsigned char a = 05##;
a = a @ 050/0;
a = a B 050%2;
<
-
8/17/2019 TEMA_04 Programacion C
20/98
Microcontroladores: Tema 4
20
Ejemplos operadores bit=ise
nciende Cit 0 de 9uerto )
-.G) = -.G) B 0501
*9aga el Cit 1 del 9uerto )-.G) = -.G) @ 05/4 05/ = 11111101
.ecorre Cits hacia la iJKuierda
-
8/17/2019 TEMA_04 Programacion C
21/98
Microcontroladores: Tema 4
21
epresentación alternativa
cuando operador es el mismo despues de Rnciende Cit 0 de 9uerto )
-.G) = -.G) B 0501
GamCien se 9ude escriCir asM
-.G) B= 0501
*9aga el Cit 1 del 9uerto )
-.G) = -.G) @ 05/4 05/ = 11111101
GamCien se 9ude escriCir asM-.G) @= 05/4
1as e5presions en lenguaje C pueden ser escritas de varias 3ormas
!a% Aue privilegiar la claridad sobre la e3iciencia en codi3icar ergo es m(s
legible P7FB R P7FB S org9
-
8/17/2019 TEMA_04 Programacion C
22/98
Microcontroladores: Tema 4
22
7peradores relacionales % lógicos• 1os relacionaes son empleados en e5presiones para
comparar dos operandos, si la comparación esverdadera el resultado < si 3alsa % di3erente de < si
verdadera• == igual a >dos iguales?• N= no igual a
• maLor Kue
• = maLor o igual Kue
• I menor Kue
• I= menor igual Kue
• @@ L >lgico?
• BB o >lgico?
• N no >lgico?
-
8/17/2019 TEMA_04 Programacion C
23/98
Microcontroladores: Tema 4
23
Ejemplos de operadores relacionales % lógicos
!> N>*4OG( @ 05%0??PestatutosQ
+i Cit & no es uno ejecuta estatutos
!> i 0 @@ j I 10??PestatutosQ
+i maLor Kue 0 L menor Kue 10 ejecuta
estatutos
!>a1 == a2 ?PestatutosQ+i a1 igual a a2 ejecuta estatutos
-
8/17/2019 TEMA_04 Programacion C
24/98
Microcontroladores: Tema 4
24
Precedence o3 operators in C
-
8/17/2019 TEMA_04 Programacion C
25/98
Microcontroladores: Tema 4
25
Control de 3lujo i3 • El estatuto i3 es condicional, si la condición es
evaluada como MunoN o verdadera, los estatutos se
ejecutan,
• i!>e59resion?PestatutosQ
• Ejemplo• i!>a C?P
sum = sum 6 2; otra !orma sum 6=2Q
-
8/17/2019 TEMA_04 Programacion C
26/98
Microcontroladores: Tema 4
26
Control de 3lujo i3-else
• El estatuto i3-else permite Aue se ejecuten estatutosen caso de evaluacion uno % cero
• i!>e59resion?PestatutosQelsePestatutosQ
• Ejemplo• i!>aN=0?P
r = C;
Q else P r = c;
Q
El estatuto i3-else puede ser reempla4ado por el estatuto ? Como sigue
rRaTR
-
8/17/2019 TEMA_04 Programacion C
27/98
Microcontroladores: Tema 4
27
Control de 3lujo s=itc!
• El estatuto s=itc! es multi opciones basado en el
valor de las e5presiones de control• sRitch>e59resion?P
case const1: Pe59resions1
Q Creak;
case const2: Pe59resions2
Q Creak;
case constn: Pe59resionsn Q Creak;
de!ault: Pe59resionsdQ
Q
-
8/17/2019 TEMA_04 Programacion C
28/98
Microcontroladores: Tema 4
28
Control de 3lujo s=itc!
• Ejemplo de s=itc!• sRitch>i2?P
case 0: 9rint!>“ceroSn”?;
Creak;
case 1: 9rint!>“unoSn”?;
Creak;
case 2: 9rint!>“dosSn”?;
Creak;de!ault: 9rint!>“no
-
8/17/2019 TEMA_04 Programacion C
29/98
Microcontroladores: Tema 4
29
Control de 3lujo 3or-loop
• Ejecuta un ciclo donde e5p" % e5p' sonasignaciones % e5p; es una e5presion relacional
* !or>e591;e592;e593?PestatutosQ;
-
8/17/2019 TEMA_04 Programacion C
30/98
Microcontroladores: Tema 4
30
Control de 3lujo 3or-loop
• Ejemplo, calcula la suma de loscuadrados de enteros del " al #
sum = 0;
!or>i=1;iI10;i66?Psum = sum 6 i8i;Q
-
8/17/2019 TEMA_04 Programacion C
31/98
Microcontroladores: Tema 4
31
Control de 3lujo =!ile
• ientras una e5presión sea di3erente de cero, el
=!ile repite un bloAue de código> Cada ciclo se
evalua % no termina !asta Aue la evaluación en la
e5presión sea cero
Rhile>e59resin?PestatutosQ;
-
8/17/2019 TEMA_04 Programacion C
32/98
Microcontroladores: Tema 4
32
Control de 3lujo =!ile
• Ejemplo) espera !asta Aue la condición secumpla)
i=1;
Rhile>iI#?P a66;
i66;
Q;
• epite el proceso para siempre Rhile>1?P a66;
Q;
-
8/17/2019 TEMA_04 Programacion C
33/98
Microcontroladores: Tema 4
33
Control de 3lujo do-=!ile
• El =!ile veri3ica la e5presión al incio, el
do-=!ile veri3ica la e5presión al 3inal por lo
Aue el cuerpo de estatutos se reali4a almenos una ve4
doP
estatutosQ Rhile>e59resin?;
-
8/17/2019 TEMA_04 Programacion C
34/98
Microcontroladores: Tema 4
34
Control de 3lujo do-=!ile
• Ejemplo, desplegar en pantalla los digitos
del # al "
int digito = $;• doP
9rit!>“d”,digito?;
digito = digito 71; Rhile>digito =1?;
-
8/17/2019 TEMA_04 Programacion C
35/98
Microcontroladores: Tema 4
35
Control de 3lujo goto
• El goto causa Aue el control sea trans3erido
directamente al estatuto con la etiAueta Aue
se debe de encontrar dentro de la misma3unción>
goto etiKueta;
• 0e recomienda evitar su uso porAue rompecon el concepto de programaciónestructurada
-
8/17/2019 TEMA_04 Programacion C
36/98
Microcontroladores: Tema 4
36
Control de 3lujo goto
• Ejemplo)
i! >i 100? goto error_!atal;
88888888
error_!atal: 9rint!>“TG/Sn”?;
return>1?;
-
8/17/2019 TEMA_04 Programacion C
37/98
Microcontroladores: Tema 4
37
Entrada % 0alida
• 1as prestacions de entrada % salida no
3orman parte del lenguaje C
• 0e !a de3inido por est(ndar incluir unalibrerGa de entrada % salida asociadas aldispositivo est(ndar tipicamente pantalla %
teclado llamada 0FD67
-
8/17/2019 TEMA_04 Programacion C
38/98
Microcontroladores: Tema 4
38
Entrada % 0alida
• int getc!ar
* egresa el caracter disponible en el dispositivo
estandar char 5chr;
5chr = getchar>?;
• int putc!arint
* 0aca un caracter por el dispositivo estandar
9utchar>'a'?;
-
8/17/2019 TEMA_04 Programacion C
39/98
Microcontroladores: Tema 4
39
Entrada % 0alida
• int putsconst c!ar Ws
* 0aca el string cadena apuntada por s
9uts>“Ourso de microcontroladoresSn”?;
• int print33ormato, arg",arg;>>>>argn
* Convierte % 3ormatea e imprime los argumentos>
9rint!>“Ualor = d ”,
-
8/17/2019 TEMA_04 Programacion C
40/98
Microcontroladores: Tema 4
40
Especi3icadores de 3ormato
• c character• d decimal >integer? numCer >Case 10?• e e59onential !loating79oint numCer
• ! !loating79oint numCer• i integer >Case 10?• o octal numCer >Case %?• s a string o! characters
• u unsigned decimal >integer? numCer• 5 numCer in he5adecimal >Case 1?• 9rint a 9ercent sign• S 9rint a 9ercent sign
-
8/17/2019 TEMA_04 Programacion C
41/98
Microcontroladores: Tema 4
41
unciones• 1os programas en C se constru%en con
3unciones
• Una 3unción no puede ser declarada dentro
de otra 3unción
• 1a misma 3unción puede ser llamada en
varios lugares dentro del programa
• .eneralmente procesan la in3ormaciónalimentada por el MllamanteN % le regresa unsolo valor
-
8/17/2019 TEMA_04 Programacion C
42/98
Microcontroladores: Tema 4
42
unciones• 1a in3ormación se pasa por medio de
argumentos o par(metros
• El resultado de la 3unción se trans3iere al
llamante mediante el estatuto MreturnN
• 1as 3unciones pueden aceptar % regresarvalores vacios o nulos void
• 1as 3unciones pueden llamarse a si mismasecursividad
-
8/17/2019 TEMA_04 Programacion C
43/98
Microcontroladores: Tema 4
43
unciones
• Declaración de una 3unción
tL9e !unction_name> 9aram1,"""?P
estatutos
Q
-
8/17/2019 TEMA_04 Programacion C
44/98
Microcontroladores: Tema 4
44
unciones
• El tipo de retorno * Puede ser cualAuier tipo v(lido c!ar,int,long,3loat etc>>
int !unction1>,,,? .eturns tL9e int
!loat !unction2>,,,? .eturns tL9e !loat
,,,? .eturns nothing
• El nombre de la 3unción * CualAuier nombre mientras cumpla con las reglas de C
-
8/17/2019 TEMA_04 Programacion C
45/98
Microcontroladores: Tema 4
45
unciones
• 1a lista de par(metros * 0on los valores pasados a la 3unción cuando es llamada
long cuCe>long 5?
int 5, !loat L, char J?
-
8/17/2019 TEMA_04 Programacion C
46/98
Microcontroladores: Tema 4
46
unciones
• ariables locales * 0e declaran dentro de la 3unción % son privadas por lo Aue el
nombre puede repetirse en otras 3unciones
int !unction1>int L?
Pint a, C=10;
char mL_char;V"
Q
-
8/17/2019 TEMA_04 Programacion C
47/98
Microcontroladores: Tema 4
47
unciones
• El valor de retorno * 0e emplea el estatuto MreturnN el cual regresa el valor
especi3icado % el control del programa al código llamante>
* 0e pueden tener varios MreturnsN dentro de la misma 3unción
int great_than>int a, int C?P
i! >a C?
return a;else
return C;
Q
-
8/17/2019 TEMA_04 Programacion C
48/98
Microcontroladores: Tema 4
48
unciones
• El prototipo de la 3unción * Fodo programa debe de incluir un prototipo de toda
3unción utili4ada
* El prototipo es la de3ición 3ormal Aue le indica alcompilador el tipo de returno % de sus argumentos>
* Puede estar de3inida en el programa o en losarc!ivos de encabe4ado W>!
-
8/17/2019 TEMA_04 Programacion C
49/98
Microcontroladores: Tema 4
49
-
8/17/2019 TEMA_04 Programacion C
50/98
Microcontroladores: Tema 4
50
unciones
• 1lamados * 1a 3unción puede ser llamada al colocar su nombre
% argumentos, si regresa valor % no se iguala a nada
el valor se pierde> maLor_Kue>100,200?;
* 1as 3unciones Aue regresan valor pueden serllamadas desde e5presiones u otras 3unciones)
9rint!>“Snl maLor !ue: d“, maLor_Kue>5,L??;
i!> 5 maLor_Kue>5,L?? 9rint!>“Sn 5 es maLor”?;
-
8/17/2019 TEMA_04 Programacion C
51/98
Microcontroladores: Tema 4
51
@puntadores
• 1as variables almacenan datos, los
apuntadores almacenan direcciones dememoria
tL9e_name 89ointer_name
int 8a9tr; 4eclara un a9untador a entero llamado a9tr
int *,); 4eclara un 9ar de
-
8/17/2019 TEMA_04 Programacion C
52/98
Microcontroladores: Tema 4
52
@rreglo
• Es un conjunto de localidades de
almacenamiento Aue tienen un mismo
nombre % tipo>
ariables @rreglo
-
8/17/2019 TEMA_04 Programacion C
53/98
Microcontroladores: Tema 4
53
@rreglos Unidimensionales
• Fienen solamente un Gndice
int mi_arregloW12X;
mi_arregloW0X mi_arregloW1X mi_arregloW3X mi_arregloW11X
Elemento del
arreglo
6ndice, su rango para un arreglo de n elementos
es de < a n-"
Fipo Hombre Cantidad de elementos
-
8/17/2019 TEMA_04 Programacion C
54/98
Microcontroladores: Tema 4
54
@rreglos
• El elemento de un arreglo puede ser empleadocomo cualAuier otra variable>
mi_arregloWX = 13;
mi_arregloW3X = mi_arregloW0X;
mi_arregloW#X = otro_arregloW122X;
• 0e pueden usar e5presiones como Gndice del arreglo
variables en Gndice siempre enteras>
mi_arregloWi61X = 13;
mi_arregloWi82X = 2;
mi_arregloW mis_indicesW2XX= 5;
-
8/17/2019 TEMA_04 Programacion C
55/98
Microcontroladores: Tema 4
55
@rreglos ultidimensionales
• Fienen m(s de dos indices no !a% lGmite
!loat taClaWXW%X;
taClaW0XW0X taClaW0XW1X taClaW0XW2X taClaW0XW&X>>>
taClaW1XW0X taClaW1XW1X taClaW1XW2X taClaW1XW&X>>>
taClaW2XW0X taClaW2XW1X taClaW2XW2X taClaW2XW&X>>>
taClaW#XW0X taClaW#XW1X taClaW#XW2X taClaW#XW&X>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-
8/17/2019 TEMA_04 Programacion C
56/98
Microcontroladores: Tema 4
56
cuCoW0XW0XW1X cuCoW0XW1XW1X cuCoW0XW2XW1XcuCoW0XW3XW1X
cuCoW0XW3XW1X
cuCoW1XW0XW0X cuCoW1XW1XW0X cuCoW1XW2XW0XcuCoW1XW3XW1X
cuCoW1XW3XW1X
cuCoW2XW0XW0X cuCoW2XW1XW0X cuCoW2XW2XW0XcuCoW2XW3XW1X
cuCoW2XW3XW1X
cuCoW3XW0XW0X cuCoW3XW1XW0X cuCoW3XW2XW0XcuCoW3XW3XW1X
cuCoW3XW3XW1X
cuCoWXW0XW0X cuCoWXW1XW0X cuCoWXW2XW0XcuCoWXW3XW1X
cuCoWXW3XW1X
@rreglos ultidimensionales
char cuCoW#XWXW2X;
cuCoW0XW0XW0X cuCoW0XW1XW0X cuCoW0XW2XW0X cuCoW0XW3XW0X
cuCoW1XW0XW0X cuCoW1XW1XW0X cuCoW1XW2XW0X cuCoW1XW3XW0X
cuCoW2XW0XW0X cuCoW2XW1XW0X cuCoW2XW2XW0X cuCoW2XW3XW0X
cuCoW3XW0XW0X cuCoW3XW1XW0X cuCoW3XW2XW0X cuCoW3XW3XW0X
cuCoWXW0XW0X cuCoWXW1XW0X cuCoWXW2XW0X cuCoWXW3XW0X
Mi t l d T 4
-
8/17/2019 TEMA_04 Programacion C
57/98
Microcontroladores: Tema 4
57
6niciali4ación de arreglos
int mi_arregloWX = P1,23,,1000Q;
int mi_arregloWX = P1,23,,1000Q;
int mi_taClaW2XW3X = P1,2,3,,#,Q;
int mi_taClaW2XW3X = PP1,2,3Q,P,#,QQ;
Mi t l d T 4
-
8/17/2019 TEMA_04 Programacion C
58/98
Microcontroladores: Tema 4
58
Microcontroladores Tema 4
-
8/17/2019 TEMA_04 Programacion C
59/98
Microcontroladores: Tema 4
59
@puntadores % @rreglos
• CualAuier operación Aue se pueda reali4ar con indicesen los arreglos se puede reali4ar usando apuntadores>
int a5W20X;Y 4eclara *rreglo de 20 enteros
int 8i9; 4eclara a9untador a enteros
i9 = @a5W0X -asa a i9 direccion elemento 0 arreglo
(os siguientes estatutos:
a5W0X = 0501; Zuardamos 0501 a elemento 0
a5W1X = 0502; Zuardamos 0502 a elemento 1
9ueden hacer con a9untadores asi:
8i9 = 0501 Zuardamos 0501 a9untador elemento 0
i9 = i9 61; ncrementanmos a siguiente elemento
8i9 = 0502 Zuardamos 0502 a9untador elemento 1
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
60/98
Microcontroladores: Tema 4
60
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
61/98
Microcontroladores: Tema 4
61
Paso de arreglos a 3unciones• 0e puede usar un arreglo como argumento de 3unciónint 9romedio>int,int arrWX?;Y -rototi9o !uncion
?P
int arregloW2#X; *lmacenar[ 2# enteros 9ara 9romedio
as estatutos Kue introducen los elementos al arreglo
9rint!>“-romedio= dSn”, 9romedio>2#,arreglo??;
Q
int 9romedio>int n,int arrWX?P /uncion de 9romedio
int i;
total = 0;
!or>i=0;iIn;i66? P
total = total 6 arrWiX; +uma elemento i
Q
return>totaln?;
Q
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
62/98
Microcontroladores: Tema 4
62
Estructuras• Una estructura es un conjunto de variables agrupada
bajo un mismo nombre para 3acilitar su manipulación
struct coord P +e declara la estructura int 5; int L;
Q?Pstruct coord 9os1,9os2; +e declaran dos instancias de coord(os elementos de la estructura se usan como cualcuier
-
8/17/2019 TEMA_04 Programacion C
63/98
Microcontroladores: Tema 4
63
Estructuras
• 1as estructuras pueden contener arreglos %apuntadores dentro de sus elementos
• 0e pueden también !acer arreglos deestructuras
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
64/98
Microcontroladores: Tema 4
64
Uniones
• uera del alcance del curso
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
65/98
Microcontroladores: Tema 4
65
@lcance de variables 0cope
• El alcance se re3iere a Aue partes del programa pueden accesar una variable dic!o de otro
modo, donde es visible>
• El alcance de3ine también el tiempo Aue
perdurar( la variable en memoria
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
66/98
Microcontroladores: Tema 4
66
@lcance de variables 0cope
3unción
3unción
vars
3unción
Variables
3unción
3unción
3unción
vars
3unción
3unción
vars
3unción
3unción
3unción
3unción
Variables
Variables
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
67/98
67
ariables E5ternas
• Usadas cuando un programa es dividido en varios
arc!ivos para 3acilitar su mantenimiento % con ello sele indica al compilador Aue la variable con ese nombre
es la misma para todo el programa como Auiera setiene Aue declarar donde sea usada
e5tern int 5; Ualida o gloCal 9ara todo el 9rograma
-
8/17/2019 TEMA_04 Programacion C
68/98
68
ariables autom(ticas % est(ticas• 1as variables son por de3ault autom(ticas se
destru%en al salir de la 3unción salvo Aue se
especi3iAue lo contrario est(ticas
int !uncin1 P
-
8/17/2019 TEMA_04 Programacion C
69/98
69
ariables egistro
• 1e indica al compilador Aue la variable ser(
almacenada en un registro del procesador en lugar dela memoria convencional>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
70/98
70
Compilador CC":
• Fipos de datos % lGmites
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
71/98
71
Compilador CC":
• Fipos de datos % lGmites
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
72/98
72
Compilador CC":
• Clases de almacenamiento
* @uto,0tatic, E5tern, egister, 7verla%
• Clase 7verla%
* Permite Aue Aue varias variables compartan las
mismas localidades de memoria con el 3in de
optimi4ar el uso de la memoria @>
* 0olo puede aplicarse en variables locales porAuese destru%en
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
73/98
73
Compilador CC":
• Constantes numéricas
* 0e soporta el pre3ijo
-
8/17/2019 TEMA_04 Programacion C
74/98
74
Compilador CC":
• Constantes tipo string
* El compilador almacena automaticamente todos los
strings cadenas de caracteres en la memoria de programa 7 dentro de un (rea especial llamada
MstringtableN
* Debido a lo anterior e5isen X variantes para las
3unciones est(ndares Aue accesan strings cadenas
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
75/98
75
Compilador CC":
• Ensamblador dentro de C
* El CC": permite escribir bloAues de código usando
lenguaje ensamblador
* El bloAue debe de empe4ar con Oasm % 3inali4ar con Oendasm>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
76/98
76
Compilador CC":
• Ensamblador dentro de C
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
77/98
77
Compilador CC":
• Ensamblador dentro de C
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
78/98
78
Compilador CC":
• anipulación de bits * 0e puede utili4ar las operaciones lógicas a nivel b%te
para manipular bits, por ejemplo)
-.G4 = -.G4 B 05%1; -uerto 4 = -uerto 4 . 05%1 -.G4 B= 0E%1
< " " < < < "
-
8/17/2019 TEMA_04 Programacion C
79/98
79
Compilador CC":
• anipulación de bits
-.G4 = -.G4 @ 05O3; -uerto 4 = -uerto 4 *A4 05O3 -.G4 @= 0EO3
" " < " < " " "P7FD
" " < < < < " "
-
8/17/2019 TEMA_04 Programacion C
80/98
80
Compilador CC":
• anipulación de bits
-.G4 = -.G4 D 05%; -uerto 4 = -uerto 4 E. 05% -.G4 D= 0E%
" " < " < " " "P7FD
" < < < < " < "
-
8/17/2019 TEMA_04 Programacion C
81/98
81
Compilador CC":
• esumen de manipulación de bits * Para !acer < algunos bits de un registro o variable se
reali4a un AND con una m(scara Aue tiene < en las
posiciones de bit Aue reAuieren ser borradas
* Para !acer " algunos bits, se reali4a un OR con unam(scara Aue tiene " en las posiciones Aue se desean!acer "
* Para cambiar de estado algunos bits, se reAuiere un
XOR con una m(scara Aue tiene " en las posiciones
Aue se desea cambiar de estado < a " % visceversa,
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
82/98
82
Compilador CC":
• anejo de bits por medio de arc!ivos deencabe4ado especG3icos>
* icroc!ip provee arc!ivos encabe4ado Aue permiten la manipulación de bits de los
registros 0 de una manera m(s directa>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
83/98
83
Compilador CC":
• anejo de bits por medio de arc!ivos de encabe4adoespecG3icos>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
84/98
84
Compilador CC":
• anejo de bits por medio de arc!ivos de encabe4adoespecG3icos>
WWWWWWWWWWWWWW
99Contiene la de3inición de bits
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
85/98
85
Compilador CC":
• 1os arc!ivos de encabe4ado también proveen acros de procesos escritos en ensamblador para reali4ar operacionesno disponibles en C>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
86/98
86
Compilador CC":
• El directivo pragma
* Es utili4ado para controlar el comportamiento
del compilador> Pueden ser utili4adas para
de3inir espacios en memoria, interrupcionesetc> Es una manera de especi3icar cosas Auesalen del est(ndard de C % es especG3ico de la
implementación>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
87/98
87
e4clando C % Ensamblador
• Es posible llamar 3unciones escritas enensamblador desde un programa en C o bien,3unciones escritas en C desde un programa de
ensamblador>
• Este tipo llamados Aueda 3uera del alcance del
curso
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
88/98
88
0tartup Code
• Cuando el microcontrolador es reiniciado, ladireccion de inicio es la
-
8/17/2019 TEMA_04 Programacion C
89/98
89
Bibliotecas de 3unciones
• Biblioteca libreria dependientes del procesador
* Provee 3unciones Aue son dependientes del procesador utili4ado, como 0 % 3uciones
para iniciali4ar peri3éricos> processor>lib
• unciones generales % matem(ticas
* 0on soportadas en toda la 3amilia del
procesador clib>lib• Caracteres, datos, dela%s, manipulación de memoria %
strings> er sección Z>":>' de libro
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
90/98
90
Ejemplo !a"#o $%LA&
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
91/98
91
Programas
• Entender el problema
• De3inir la estrategia de solución
• De3inir el algoritmo• Codi3icación
• Pruebas % depuracion debug
• 1iberación
• antenimiento
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
92/98
92
Banda Fransportadora
CONTROLADOR
&A'ADO EN %IC18
$OTOR
'EN'OR
&OTON DE
ARRAN(UE
TORRETA
CONTENEDOR
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
93/98
93
Banda Fransportadora
• El programa de control deber( de reali4ar losiguiente)
* Esperar el botón de arranAue * Contar el n8mero de cajas
* 0i el n8mero llega a un @Y67 parar la
banda transportadora
• Encender una torreta
• Esperar de nuevo el botón de arranAue>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
94/98
94
Banda Fransportadora
• 0eIales en sensores % actuadores)
R&4 &OTON
%RE'IONADO
)1*
)0*
RD0
)1*
)0*
$OTOR
ENCENDIDO
R&5
)1* 'EN'ORCAJA %RE'ENTE
RD1
TORRETAENCENDIDA
)1*
)0* )0*
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
95/98
95
Ejemplo
• El programa de control deber( de reali4ar losiguiente)
* Esperar el botón de arranAue
* Contar el n8mero de cajas
* 0i el n8mero llega a un @Y67 parar la banda
transportadora
• Encender una torreta• Detener la banda
• Esperar de nuevo el botón de arranAue>
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
96/98
96
Microcontroladores: Tema 4
-
8/17/2019 TEMA_04 Programacion C
97/98
97
Microcontroladores: Tema 4
C ió d j t bl
-
8/17/2019 TEMA_04 Programacion C
98/98
Comparación de ejecutables
1eng aje C
Ensamblador
FE@O
top related