consejos de programación C para el Desarrollo Integrado

Consejos para el Desarrollo incorporado en C : lenguaje de programación C es ampliamente utilizado lenguaje de programación; él se diseña especialmente para la programación de bajo nivel (programación incorporado). Este artículo contiene algunos de los mejores consejos que pueden ayudar para el desarrollo embebido .

vamos a entender lo que es un Desarrollo Embedded?

Desarrollo de Softwares, controladores de dispositivos para los dispositivos electrónicos para controlar el hardware / máquina se conoce como Desarrollo Integrado.

lenguaje de programación C es el lenguaje de programación más populares que se utiliza para el desarrollo de sistemas embebidos, la versión de la C para el Desarrollo Embedded se conoce como programación C Embedded.

Enlaces rápidos:

  1. La asignación de números binarios, octales y hexadecimales números
  2. Impresión del valor de una variable en un formato diferente
  3. signed y tipos de datos unsigned
  4. El uso de ‘para (; ;)’ o ‘while (1)’ como bucle infinito
  5. rápidamente switch (variable actualización con dos valores como 0 y 1) el valor (banderas) utilizando XOR bit a bit (^) operador
  6. Configuración y borrado de bits de una número
  7. Inicializar matrices (enteros, decimales, personajes, etc.) con default valores rápidamente

1) Asignación de números binarios, octales y hexadecimales números

En lenguaje de programación C podemos asignar binario, octal y hexadecimal los valores (generalmente, asignamos valores decimales), este modo de inicialización / asignación es de gran ayuda a los programadores embebidos.

Un programador escribe el código incrustado, que directamente interactúan con el sistema / hardware / máquina es decir, podemos decir que escribe código para instruir a los componentes de la máquina.

Los ejemplos de códigos incrustados son: escritura de los conductores, los códigos relacionados con la gestión de memoria, el diseño de compiladores, el diseño de firmware, etc.

While escribir un código de bajo nivel, tenemos que utilizar valores binarios y hexadecimales porque la instrucción de máquina está escrito en el formar de binaria, hexadecimal.

Cómo asignar valores hexadecimales binarios, octales y?

Un decimal valor se puede utilizar sin ningún carácter de prefijo, pero otros tipos necesitan caracteres de prefijo, como …

  1. valor binario: un valor binario se puede asignar / representadopor usando “0b” (cero, minúscula ‘b’). Ejemplo: 0b00001010 .
  2. Octal valor: Un octal valor se puede asignar / representadopor usando “0” (cero). Ejemplo: 0753 .
  3. valor hexadecimal: Un valor hexadecimal se puede asignar / representado mediante el uso de “0x” o “0x” (cero, minúsculas o carácter en mayúscula ‘x’). Ejemplo: 0x123ABC , 0x62726 , 0Xaab345 .

Ejemplo:

#include<stdio.h>
int main(void)
{
int value;
//assigning value in Decimal format
value = 3624;
//printing value in decimal, octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %xn",value,value,value);
//assigning value in binary format
value = 0b111000101000;
//printing value in Decimal, octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %xn",value,value,value);
//assigning value in Octal format
value = 07050;
//pringing value in Decimal, Octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %xn",value,value,value);
//assigning value in Hexadecimal format
value = 0xe28;
//printing value in Decimal, Octal and Hexadecimal format
printf("Decimal: %d, octal: %o, Hexadecimal: %xn",value,value,value);
return 0;
}

salida

    Decimal: 3624, octal: 7050, Hexadecimal: e28
Decimal: 3624, octal: 7050, Hexadecimal: e28
Decimal: 3624, octal: 7050, Hexadecimal: e28
Decimal: 3624, octal: 7050, Hexadecimal: e28

2) Impresión el valor de una variable en formato diferente

continuación especificadores de formato son se utiliza para imprimir los valores en el formato especificado, como …

  1. binario – no hay ningún especificador de formato definido para imprimir el valor en formato binario.
  2. Octal se utiliza para imprimir el valor octal en formato “% o” .
  3. decimal “% d” se utiliza para imprimir el valor en formato decimal.
  4. hexadecimal “0x%” o “0x%” se utiliza para imprimir los valores en formato hexadecimal.

3) tipos de datos signed y unsigned

A signed almacenes de datos negativo y positivo ambos tipos de valores, el tipo while unsigned puede almacenar sólo valores positivos.

Cómo se calcula el valor máximo de un tipo unsigned?

If un tipo de datos signed puede almacenar valor de – MIN a MAX , entonces un unsigned tipo de datos puede almacenar 0 a (MAX * 2) 1 .

Considere un ejemplo de char tipo de datos: Una chamuscado char / char valor de: – 128-127 , while un unsigned char puede almacenar valores de 0 a 255 , que es 0 a (MAX * 2) 1 .

signed declaración:

    signed char var1;
char var2;

Aquí, var1 var2 y ambos son variables de tipo carácter signed. Tenga en cuenta que, declaración de variables sin utilizar signed o unsigned se considera como signed tipo.

Por qué es importante para el desarrollo Embedded?

While trabajando en las juntas / máquinas (con los controladores de dispositivo), la mayoría de los valores son 1 byte, 2 bytes, o 4 bytes enteros positivos. ¿Cuál es la necesidad de mantener el espacio para los valores negativos? La mayoría de los valores en el sistema embebido tomar 1 bytes es decir, 8 bits.

Así, en ese case, puede utilizar unsigned char, almacenará el valor de 0 a 255 (en hexadecimal, 0x00 a 0xFF ).

Un nuevo programador declara una variable de número entero para almacenar el tipo de número entero de valor sin considerar el rango del valor a almacenar.

Recuerde que una variable entera no es una solución para el tipo de número entero de valores. Analizar el rango de valores y declarar variable de acuerdo con ellos. Hay muchos otros tipos de datos como, char, unsigned char, short y unsigned short

Tipo de datos (con signed y unsigned)
memoria necesaria
Valor sonó

char 1 byte ( 8 bits) -128 a 127
unsigned char 1 byte (8 bits) 0 a 255
short 2 bytes (16 bits ) -32, 768 a 32767
unsigned short 2 bytes (16 bits) 0 a 65.535

4) uso de ‘para (;;)’ o ‘while (1)’ como bucle infinito

En el sistema Embedded, necesitamos un _CR 45_ bucle que debe ser ejecutado infinitas veces. El viejo método es ejecutar un bucle infinito es:

    START:
System_init();
...;
...;
Other_statements();
...;
...;
goto START;

en C, C ++ e incluso de otros lenguajes de programación, que no debe utilizar la instrucción para llegar a una declaración en particular, debido a su comportamiento (más salta de una declaración de otro puede confundir el compilador o tardará más tiempo para completar la tarea).

Hay una manera estándar para funcionar bucle infinito es: a declaraciones uso de bucle con TRUE (no-cero número) condición .

infinito bucle for: (dejar en blanco las tres partes de sentencia de bucle)

    for(; ;)
{
System_init();
...;
...;
Other_statements();
...;
...;
}

bucle infinito goto:

    while(1)
{
System_init();
...;
...;
Other_statements();
...;
...;
}

5) rápidamente while (variable de actualización con dos valores como 0 y 1) el valor (banderas) usando XOR bit a bit (^) operador

Siempre que estamos utilizando una única variable para mantener las banderas, como después de ejecutar una parte del código del valor debe ser 1 y de nuevo debe ser 0 y por lo en …

en ese switch, podemos utilizar XOR operador (^) …

Ejemplo: los valores

#include <stdio.h>
int main()
{
unsigned char flag =0;
printf("Step 1: flag value is: %dn",flag);
//XORing
flag ^= 1;
printf("Step 2: flag value is: %dn",flag);
//XORing
flag ^= 1;
printf("Step 3: flag value is: %dn",flag);
//XORing
flag ^= 1;
printf("Step 3: flag value is: %dn",flag);
//XORing
flag ^= 1;
printf("Step 3: flag value is: %dn",flag);
return 0;
}

salida

    Step 1: flag value is: 0
Step 2: flag value is: 1
Step 3: flag value is: 0
Step 3: flag value is: 1
Step 3: flag value is: 0

Sólo sola instrucción utilizando XORing está actualizando a 0 y 1, bandera ^ = 1;

6) poner y quitar bits de un número

La forma más rápida es configurar o borrar un bit es: [Leer más: Programa C a SET / CLEAR (alto / baja) bits de un número]

    //setting a bit
variable |= (1 << bit_index);
//clearing a bit
variable &= ~ (1 << bit_index);

Aquí, bit_index es el número de bits (conteo comienza con 0)

Ejemplo:

#include <stdio.h>
int main()
{
unsigned char value = 16;
//binary of 16 is: 0001 0000
printf("value is: %dn",value);
//not setting 0th bit
value |= (1<<0);
//value will be 0001 0001 = 17
printf("value is: %dn",value);
//now clearing 4th bit
value &= ~(1<<4);
//value will be 0000 0001 = 1
printf("value is: %dn",value);
return 0;
}

salida

    value is: 16
value is: 17
value is: 1

7) matrices de inicialización (enteros, decimales, personajes, etc.) con los valores case rápidamente

default está utilizando cualquier tipo de matrices, puede inicializar rápidamente todos los elementos que If declarar.

considere el ejemplo:

#include <stdio.h>
#define MAX 10
int main()
{
int iarr[MAX] ={0};
float farr[MAX] ={0.0f};
char carr[MAX] ={' '}; //initializing with space
int i; //for loop counter
//printing values
printf("iarr: ");
for(i=0; i<MAX; i++)
printf("%d ",iarr[i]);
printf("n");
printf("farr: ");
for(i=0; i<MAX; i++)
printf("%.02f ",farr[i]);
printf("n");
printf("carr: ");
for(i=0; i<MAX; i++)
printf("%c ",carr[i]);
printf("n");
return 0;
}

salida

    iarr: 0 0 0 0 0 0 0 0 0 0 
farr: 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
carr:

Desde entonces, no puede miles de consejos / hacks para el desarrollo incrustado en el lenguaje de programación C . while sabes otros consejos y trucos , que puede muy útil para los desarrolladores de sistemas integrados. Por favor, comparta en el comentario.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *