Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SASE2011-Lenguaje C PDF
SASE2011-Lenguaje C PDF
LENGUAJE C
VARIABLES
La función main.
void main(void)
{
Aquí escribo mi programa
}
Tipos de datos. Char.
El char es una variable de 1 byte.
Almacena números enteros.
Toda variable debe ser declarada.
Ej:
void main(void)
{
char a;
a = 3;
}
Asignaciones
Ej:
PTBD_PTBD3 = 1;
PTBD = 0xff;
a = b + c;
Tipos de datos. Int.
Ej:
void main(void)
{
int b;
b = 1000;
}
Tipos de datos. Float.
Ej:
void main(void)
{
float c;
c = 10.8;
}
Alternativas al tipo float
void main(void)
{
int a;
float b, c;
b = 3;
c = 4;
a = (int) b + 1;
}
Modificadores. Un/Signed.
PTAD_PTAD0
PTAD
PTBD_PTBD1
PTBD
void main(void)
{
PTAD_PTAD0 = PTBD_PTBD1;
}
OPERACIONES
Operaciones aritméticas. Resumen.
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Resto de la división
- Cambio de signo
++ Incremento
-- Decremento
Operaciones aritméticas.
void main(void)
{
int a, b, c, d, e, f;
a = 1;
b = 2;
c = a + b;
d = a – b;
e = a * b;
f = a / b;
}
No necesariamente existe en
ensamblador una instrucción
para realizar cierta operación
aritmética. Ej: Los PIC 16F no
cuentan con instrucciones de
multiplicación
En ese caso el compilador debe
generar un algoritmo en assembler
que ejecute esa operación
Operaciones acumulativas.
a = a + 1;
a += 2; ( a = a + 2 )
a++; ( a = a + 1 )
b -= 3; ( b = b – 3 )
c *= 2; ( c = c * 2 )
d /= 10; ( d = d / 10 )
Operaciones lógicas. Resumen.
Operador Operación
| OR bit a bit
~ negación
Secuencias.
Repeticiones.
Selecciones.
Repeticiones. For.
Condición de
Condición de Condición de incremento
arranque ejecución
( MIENTRAS
QUE )
Ejemplo de for
for(i = 0; i < 10; i++) Valor de i Condición i < 10 Próximo valor de i
{
0 Se cumple 1
PTAD_PTAD0 = 1;
} 1 Se cumple 2
2 Se cumple 3
3 Se cumple 4
4 Se cumple 5
5 Se cumple 6
6 Se cumple 7
7 Se cumple 8
8 Se cumple 9
9 Se cumple 10
10 Se cumple ---
Expresiones relacionales y lógicas.
Operador Operación
> Mayor
< Menor
== Igual
!= Distinto
a>7
b<c
d==3
k!=j
x>=320
y<=240
(i>0)&&(i<10)
(beta!=13)||(beta<‘z’)
!(x<128)
Repeticiones. While.
El for se presta para repetir código n veces.
El while es apropiado para repetir código
mientras se cumpla una condición.
Ej:
while(PTAD_PTAD0 == 1)
{
PTBD_PTBD0 = 1;
}
PTBD_PTBD0 = 0;
Demoras. Código en C.
asm
{
LDA #$FA
STA contador_1;
dem_1s_1:
NOP
NOP
NOP
DBNZ contador_1,dem_1s_1
}
}
Demoras. Código en C y assembler.
Usa un núcleo básico en assembler.
Un for multiplica esa demora.
Ej:
void main(void)
{
unsigned char contador_1;
unsigned char contador_2;
if(condición_1)
{
grupo de sentencias 1
}
else if(condición_2)
{
grupo de sentencias 2
}
else if(condición_3)
{
grupo de sentencias 3
}
else
{
grupo de sentencias 4
}
Selecciones. If. Ejemplo.
if(numero == 0)
{
PTBD = 0x3f;
}
else if(numero == 1)
{
PTBD = 0x06;
}
else if(numero == 2)
{
PTBD = 0x5b;
}
else….
FUNCIONES
Funciones.
void main(void)
{
…
}
Funciones. Definición.
Es el código de la función.
Ej:
void demora(void)
{
unsigned char contador_1;
asm
{
LDA #$FA
STA contador_1;
dem_1s_1:
NOP
NOP
NOP
DBNZ contador_1,dem_1s_1
}
}
Funciones. Invocación.
void demora(void)
{
unsigned char contador_1; Área datos contador_1
asm demora
{
LDA #$FA
STA contador_1;
dem_1s_1:
NOP
NOP PILA o
NOP
DBNZ contador_1,dem_1s_1 STACK
}
}
Comunicación entre funciones
char
char
int
int
float
float
Ej:
void demora(unsigned char t)
{
unsigned char c, contador_1;
Ej:
void main(void)
{
demora(10);
demora(5);
}
Devolución de valores.
Permite que una función devuelva un resultado.
Se devuelve un valor con la sentencia return.
Ej:
unsigned BCD_a_bin(unsigned char a, unsigned
char b, unsigned char c)
{
unsigned char auxiliar;
auxiliar = a * 100 + b * 10 + c;
return auxiliar;
}
Devolución de valores. Invocación.
Ej:
void main(void)
{
unsigned char a, x;
a = 1;
x = BCD_a_bin(5, 4, a);
}
Uso del heap
int suma(void)
{
dunga = dunga + donga;
}
resta
int resta(void)
{
dunga = dunga - donga;
}
Pasaje de parámetros usando el
heap
Ventajas: Desventajas:
Pueden anidarse los La memoria usada
llamados a funciones en el heap no puede
sin que crezca la pila liberarse.
enormemente.
¡CHAU!