Show Menu
Cheatography

Informática Industrial GIEI UCA Cheat Sheet by

Cheat sheet para la asignatura de Informática Industrial de GIEI en la Universidad de Cádiz (UCA)

Tipos de datos

Tipo
Denomi­nación
Tamaño
Rango
Ejemplos de uso
uint8_t
Entero sin signo
8bits
[0,255]
Caract­eres, contadores de for
uint16_t
Entero sin signo
16bits
[0,63535]
uint32_t
Entero sin signo
32bits
[0,429­496­7295]
Almacenar valores de registros
int8_t
Entero con signo
8bits
[-128,127]
int16_t
Entero con signo
16bits
[-3276­8,3­2767]
int32_t
Entero con signo
32bits
[-2147­483­648­,21­474­83647]
float
Punto flotante
32bits
[-3.4·1038,3.4·1038]
Hasta 6 dígitos signif­ica­tivos
double
Doble
64bits
[-1.79·10308,1.79·10308]
Hasta 14 dígitos signif­ica­tivos

Sentencia if

if (condición){
    in­str­ucc­ión1;
    in­str­ucc­ión2;
}else if (condición2){
    in­str­ucc­ión3;
    in­str­ucc­ión4;
}else{
    in­str­ucc­ión5;
}
Las condic­iones del if y del else if tienen que ser mutuamente excluy­entes, es decir, no pueden darse simult­ane­amente.

El else if y el else no son obliga­torios.

La condición siempre debe ir entre parént­esis.

Sentencia switch

switch (selector){
    case etiqueta1:
      ­  s­ent­encia1;
        break;
    case etiqueta2:
      ­  s­ent­encia2;
        break;
    case etiqueta3:
      ­  s­ent­encia3;
        break;
    default:
      ­  s­ent­encia;
}
El selector solo puede ser un entero o carácter.

Se deben recoger todas las opciones posibles en los case aunque sean iguales.

Es altamente recome­ndable utilizar el caso default para los casos que no estén definidos.

¡No olvidar el break para evitar seguir ejecutando instru­cci­ones!

Bucle for

for (inicial; cond; increm){
    in­str­ucc­iones;
}
PARA CADA incremento DESDE inicia­liz­ación MIENTRAS QUE la condición sea cierta, REALIZAR instru­cciones

Bucle while

while (condición){
    in­str­ucc­iones;
}
MIENTRAS QUE la condición sea cierta, REALIZAR instru­cciones

Bucle do while

do{
    in­str­ucc­iones;
}while (condición);
REALIZAR las instru­cciones HASTA QUE la condición sea FALSA
Se ejecuta al menos 1 vez

adc_lp­c40xx.h

#define SEL_CANAL_0 (1u << 0)
#define SEL_CANAL_1 (1u << 1)
#define SEL_CANAL_2 (1u << 2)
#define SEL_CANAL_3 (1u << 3)
#define SEL_CANAL_4 (1u << 4)
#define SEL_CANAL_5 (1u << 5)
#define SEL_CANAL_6 (1u << 6)
#define SEL_CANAL_7 (1u << 7)

void adc_inicializar(uint32_t frecuencia_adc, uint32_t canales);

uint32_t adc_convertir(uint32_t canal);

float32_t adc_traducir_a_tension(uint32_t resultado_adc);

glcd.h

#define NEGRO           RGB(0, 0, 0)
#define AZUL_OSCURO     RGB(0, 0, 128)
#define VERDE_OSCURO    RGB(0, 128, 0)
#define CIAN_OSCURO     RGB(0, 128, 128)
#define MARRON          RGB(128, 0, 0)
#define PURPURA         RGB(128, 0, 128)
#define OLIVA           RGB(128, 255, 0)
#define NARANJA         RGB(255, 128, 0)
#define GRIS_CLARO      RGB(192, 192, 192)
#define GRIS_OSCURO     RGB(128, 128, 128)
#define AZUL            RGB(0, 0, 255)
#define VERDE           RGB(0, 255, 0)
#define CIAN            RGB(0, 255, 255)
#define ROJO            RGB(255, 0, 0)
#define MAGENTA         RGB(255, 0, 255)
#define AMARILLO        RGB(255, 255, 0)
#define BLANCO          RGB(255, 255, 255)

void glcd_inicializar(void);

void glcd_borrar(uint16_t color);

int32_t glcd_xprintf(int32_t x,
                     int32_t y,
                     uint16_t color,
                     uint16_t color_fondo,
                     uint32_t font,
                     const char *fmt, ...);

void glcd_circunferencia(int32_t xc,
                         int32_t yc,
                         int32_t radio,
                         uint16_t color);

void glcd_circulo(int32_t xc,
                  int32_t yc,
                  int32_t radio,
                  uint16_t color);

void glcd_punto(int32_t x,
                int32_t y, 
                uint16_t color);

void glcd_linea(int32_t x0,
                int32_t y0,
                int32_t x1,
                int32_t y1,
                uint16_t color);
               
void glcd_rectangulo(int32_t x0,
                     int32_t y0,
                     int32_t x1,
                     int32_t y1,
                     uint16_t color);

void glcd_rectangulo_relleno(int32_t x0,
                             int32_t y0,
                             int32_t x1,
                             int32_t y1,
                             uint16_t color);
 

Máscaras binarias

   
Cambiar bit de dato
1 en bit p
(1<­<p)
dato |= (1<­<p)
0 en bit p
~(1<<p)
dato &= ~(1<<p)
Selec. bit p
(dato>­>p)­&1

Operadores binarios (bit a bit)

|
or
&
and
~
not
^
xor
Son operac­iones bit a bit, no confundir con las operac­iones booleanas que tienen como resultado TRUE o FALSE

Operadores booleanos

||
or
&&
and
!
not
==
igual que
!=
diferente de
Se utilizan princi­pal­mente para definir condic­iones en los if o bucles

Coment­arios

//
Comentario de una linea
/* ...... */
Comentario de bloque

Tipos de datos no estándar

unsigned char
uint8_t
unsigned short
uint16_t
unsigned int
uint32_t
unsigned long
uint64_t
char
int8_t
short
int16_t
int
int32_t
long
int64_t
Utilizar siempre los tipos estándar pues los aquí recogidos pueden variar entre versiones del compilador y el microc­ont­rolador utilizado

Estructura general

#include <LPC407x_8x_177x_8x.h>
// Agregamos todos los #include que utilicemos
#include "libreria.h"

// Agregamos todos los #define que sean necesarios
// porque sean constantes como PI o parámetros de
// configuración
#define etiqueta valor

//Prototipos de funciones

int main(void){

    // Declaramos las variables que necesitemos
    uint8_t c = 0;

    // Inicializamos los periféricos y
    // componentes externos:
    glcd_inicializar();

    // Secuencia de instrucciones previas al
    // bucle infinito

    while(1){

        // Instrucciones a repetir infinitamente
    }
}

iocon_­lpc­40xx.h

void iocon_configurar_pin(LPC_GPIO_TypeDef *gpio_regs,
                          uint32_t mascara_pin,
                          funcion_pin_t funcion,
                          uint32_t configuracion_es);

timer_­lpc­40xx.h

void timer_inicializar(LPC_TIM_TypeDef *timer_regs);

void timer_retardo_ms(LPC_TIM_TypeDef *timer_regs,
                      uint32_t retardo_en_ms);
                      
void timer_retardo_us(LPC_TIM_TypeDef *timer_regs,
                      uint32_t retardo_en_us);
                      
void timer_iniciar_ciclos_ms(LPC_TIM_TypeDef *timer_regs,
                             uint32_t periodo_en_ms);
                               
void timer_iniciar_ciclos_us(LPC_TIM_TypeDef *timer_regs,
                             uint32_t periodo_en_us);
                               
void timer_esperar_fin_ciclo(LPC_TIM_TypeDef *timer_regs);

void timer_iniciar_conteo_ms(LPC_TIM_TypeDef *timer_regs);

void timer_iniciar_conteo_us(LPC_TIM_TypeDef *timer_regs);

uint32_t timer_leer(LPC_TIM_TypeDef *timer_regs);
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          C Reference Cheat Sheet
          C program Cheat Sheet