Tutorial de programación en C integrado con lenguaje Keil

Embedded C es el lenguaje de programación más popular en el campo del software para el desarrollo de dispositivos electrónicos. Cada procesador está asociado con un software integrado. La programación C integrada juega un papel importante en la ejecución de funciones específicas por parte del procesador. En nuestra vida diaria, utilizamos con frecuencia muchos dispositivos electrónicos como lavadoras, teléfonos móviles, cámaras digitales, etc., que funcionan en base a microcontroladores programados en C incorporados.


Programación de sistemas integrados

El código C escrito es más confiable, portátil y escalable; y de hecho, mucho más fácil de entender. La primera herramienta es el software integrado que decide cómo funciona un sistema integrado. El lenguaje de programación C embebido es el más utilizado para programar microcontroladores.

Tutorial de programación en C integrado (8051)

Para escribir el programa, los diseñadores integrados deben tener suficiente conocimiento del hardware de procesadores o controladores particulares, porque la programación C integrada es una técnica de programación completamente relacionada con el hardware.

Tutoría de programación
Tutoría de programación

Anteriormente, muchas aplicaciones integradas se desarrollaban mediante programación a nivel de ensamblador. Sin embargo, no proporcionaron portabilidad para superar este problema con la llegada de varios lenguajes de alto nivel como C, COBOL y Pascal. Sin embargo, es el lenguaje C el que ha sido ampliamente aceptado para el desarrollo de aplicaciones de sistemas embebidos, y continúa haciéndolo.

Sistema a bordo

El sistema integrado se define como la combinación de software de programación C integrado y una parte de hardware compuesta principalmente por microcontroladores y está destinado a realizar la tarea específica. Estos tipos de sistemas integrados se utilizan en nuestra vida diaria, como lavadoras y VCR, refrigeradores, etc. El sistema integrado fue introducido por primera vez por microcontroladores 8051.

Sistema a bordo
Sistema a bordo

Presentamos el microcontrolador 8051

El microcontrolador 8051 es un microcontrolador básico, fue introducido por primera vez por ‘Intel Corporation’ desde 1970. Está desarrollado por la arquitectura del procesador 8086. 8051 es una familia de microcontroladores, que fue desarrollado por diferentes fabricantes como Philips, Atmel, dalls, etc. Los microcontroladores 8051 se han utilizado en muchos productos integrados, desde pequeños juguetes para niños hasta grandes sistemas automotrices.

8051 Microcontrolador
8051 Microcontrolador

El microcontrolador 8051 es la arquitectura ‘CISC’ de 8 bits. Consiste en memorias, comunicación en serie, interrupciones, puertos de entrada/salida y temporizadores/contadores, integrados en un solo chip integrado, que está programado para controlar los periféricos conectados a él. El programa se almacena en la RAM del microcontrolador pero antes de escribir el programa es necesario conocer la organización de la RAM del microcontrolador.

Programación del sistema de a bordo: declaración básica

Cada función es una colección de instrucciones que realizan una tarea específica y la colección de una o más funciones se llama lenguaje de programación. Cada idioma consta de elementos básicos y reglas gramaticales. La programación en lenguaje C está diseñada para trabajar con juegos de caracteres, variables, tipos de datos, constantes, palabras clave, expresiones, etc. se utilizan para escribir el programa C. Todo esto se considera en el archivo de encabezado o archivo de biblioteca y se representa como

#comprender

Desarrollo de programación en C embebido
Desarrollo de programación en C embebido

La extensión del lenguaje C se denomina lenguaje de programación integrado C. En comparación con lo anterior, la programación del lenguaje integrado C tiene algunas características adicionales, como tipos de datos y palabras clave y el archivo de encabezado o el archivo de biblioteca se representa como

#comprender

Palabras clave adicionales C incrustadas

  • morder
  • un poco
  • SFR
  • volátil
  • las macros definen

El «sbit» se utiliza para declarar el PIN único del microcontrolador. Por ejemplo, el LED está conectado al pin P0.1, no se recomienda enviar el valor directamente al pin del puerto, primero tenemos que declarar el pin con otra variable y luego podemos enviarlo a cualquier parte del programa. .

Lee:  Supresión de energía para una mayor precisión utilizando dispositivos isoPower

Sintaxis: sbit a=P0^1; //declarar el pin respectivo con una variable//
a=0x01; //enviar valor al pin del puerto//

El «bit» se utiliza para comprobar el estado de la variable.

Sintaxis: bit c; //declara el bit de la variable//
c=uno; //se asigna un valor a la variable c //
if(c==1) //comprobar condición verdadera o falsa//

{
…..
……
}

La palabra clave “SFR” permite acceder a los registros SFR con otro nombre. El registro SFR se define como un registro de función especial, contiene todos los registros vinculados a la periferia indicando la dirección. El registro SFR se declara mediante la palabra clave SFR. La palabra clave SFR debe estar en mayúsculas.

Sintaxis: puerto SFR=0x00; //0x00 es una dirección de puerto0, es declarado por la variable de puerto//
Puerto=0x01; //luego enviar el valor al puerto0//
demora();
puerto=0x00;
demora();

La palabra clave «volátil» es la más importante en el desarrollo de sistemas integrados. La variable declarada con el valor de la palabra clave volátil no se pudo modificar inesperadamente. Se puede utilizar en registros periféricos mapeados en memoria, variables globales modificadas por ISR. Sin utilizar la palabra clave volátil para transmitir y recibir los datos, se producirá un error de código o un error de optimización.

Sintaxis: volátil int k;

La macro es un nombre que se usa para declarar el bloque de instrucciones como una directiva de preprocesador. Cada vez que se usa el nombre, se reemplaza por el contenido de la macro. Las macros representan el #define. Todos los pines del puerto están establecidos por macros.

Sintaxis: #define dat Po; //todo el puerto es declarado por una variable//
dat=0x01; //datos enviados al puerto0//

Programas básicos en C embebidos

La programación del microcontrolador será diferente para cada tipo de sistema operativo. Aunque hay muchos sistemas operativos como Linux, Windows, RTOS, etc. Sin embargo, RTOS tiene varias ventajas para el desarrollo de sistemas embebidos. Este artículo analiza la programación C integrada básica para desarrollar la programación C integrada utilizando un microcontrolador 8051.

Pasos de programación en C integrado
Pasos de programación en C integrado
  • LED parpadeante con el microcontrolador 8051
  • Visualización del número en la pantalla de 7 segmentos usando el microcontrolador 8051
  • Cálculos de temporizador/contador y programa utilizando el microcontrolador 8051
  • Cálculos y programa de comunicación en serie utilizando el microcontrolador 8051
  • Programas de interrupción usando el microcontrolador 8051
  • Programación de teclado usando el microcontrolador 8051
  • Programación LCD con microcontrolador 8051

LED parpadeante con microcontrolador 8051

El LED es un dispositivo semiconductor que se utiliza en muchas aplicaciones, principalmente con fines de indicación. Encuentra una amplia gama de aplicaciones como indicadores durante las pruebas para verificar la validez de los resultados en diferentes etapas. Son muy económicos y fácilmente disponibles en una variedad de formas, colores y tamaños. Los LED se utilizan para diseñar tableros de visualización de mensajes y semáforos de control de tráfico, etc. Aquí los LED están interconectados con el PORT0 de los microcontroladores 8051.

LED parpadeante con microcontrolador 8051
LED parpadeante con microcontrolador 8051

1. 01010101
10101010

#comprender //Al principio del archivo//
void main() //el punto de estadística de ejecución del programa//
{
entero sin signo i; //Tipo de datos//
while(1) //para bucle continuo//
{
P0=0x55; //enviar el valor hexadecimal al puerto0//
for(i=0;i<30000;i++) //retraso normal//
P0=0x3AA; //enviar el valor hexadecimal al puerto0//
for(i=0;i<30000;i++) //retraso normal//
}
}

2. 00000001

00000010

00000100

.

.

10000000

#comprender

vacío principal()

{

yo sin firmar;

carácter sin signo j,b;

mientras(1)

{

P0=0x01;

b = P0;

para(j-0;j<3000;j++);

para(j=0;j<8;j++)

{

b=b<<1;

P0=b;

para(j-0;j<3000;j++);

}

}

}

3. 00001111

11110000

#comprender

cancelar principal()

{

yo sin firmar;

mientras(1)

{

P0=0x0F;

para(j-0;j<3000;j++);

P0=0xF0;

para(j-0;j<3000;j++);

}

}

4. 00000001

00000011

00000111

.

.

11111111

#comprender

vacío principal()

{

yo sin firmar;

carácter sin signo j,b;

mientras(1)

{

P0=0x01;

b = P0;

para(j-0;j<3000;j++);

para(j=0;j<8;j++)

Lee:  Retroiluminación LED confiable y eficiente para pantallas LCD grandes

{

b=b<<1;

b=b|0x01;

P0=b;

para(j-0;j<3000;j++);

}

}

}

Visualización de números en una pantalla de 7 segmentos mediante el microcontrolador 8051

Las pantallas de 7 segmentos son las pantallas electrónicas básicas, que se utilizan en muchos sistemas para mostrar información digital. Consta de ocho LED que se conectan secuencialmente para mostrar los números del 0 al 9, cuando se encienden las combinaciones apropiadas de LED. Solo pueden mostrar un dígito a la vez.

Visualización de números en una pantalla de 7 segmentos mediante el microcontrolador 8051
Visualización de números en una pantalla de 7 segmentos mediante el microcontrolador 8051

1. ¿WAP para mostrar números de ‘0 a F’ en cuatro pantallas de 7 segmentos?

#comprender
sbit a= P3^0;
sbit b= P3^1;
sbit c= P3^2 ;
sbit d= P3^3;
vacío principal()
{
unsignedchar n[10]={0×40,0xF9,0×24,0×30,0×19,0×12,0×02,0xF8,0xE00,0×10};
inti,j sin firmar;
a=b=c=d=1;
mientras(1)
{
para(i=0;i<10;i++)
{
P2=n[i];
para(j=0;j<60000;j++);
}
}
}

2. WAP para mostrar los dígitos ’00 a 10′ en las pantallas de 7 segmentos?

#comprender
sbit a= P3^0;
sbit b= P3^1;
cancelar mostrar1();
cancelar mostrar2();
cancelar retraso();
vacío principal()
{
unsignedchar n[10]={0×40,0xF9,0×24,0×30,0×19,0×12,0×02,0xF8,0xE00,0×10};
inti,j sin firmar;
ds1=ds2=0;
mientras(1)
{
para(i=0,i<20;i++)
mostrar1();
mostrar2();
}
}
cancelar mostrar1()
{
a=1;
b=0;
P2=s[ds1];
demora();
a=1;
b=0;
P2=s[ds1];
demora();
}
cancelar mostrar2()
{
ds1++;
si (ds1> = 10)
{
ds1=0;
ds2++;
si (ds2> = 10)
{
ds1=ds2=0;
}
}
}
cancelar retraso ()
{
entero sin signo k;
para(k=0;k<30000;k++);
}

Cálculos de temporizador/contador y programa utilizando el microcontrolador 8051

El tiempo de entrega es uno de los factores importantes en el desarrollo de software de aplicación. Sin embargo, el retraso normal no dará el resultado valioso para superar este problema para implementar el retraso del temporizador. Los temporizadores y contadores son componentes de hardware del microcontrolador, que se utilizan en muchas aplicaciones para proporcionar el valioso retardo de tiempo con pulsos de conteo. Ambas tareas se implementan mediante técnicas de software.

retraso del temporizador

¿WAP para generar un retraso de 500 us usando T1M2 (temporizador 1 y modo 2)?

#comprender

vacío principal()
{
carácter sin firmar i;
TMOD=0x20; //establece el modo de temporizador//
for(i=0i<2;i++) //el doble de tiempo por día//
{
TL1=0x19; // establecer el límite de tiempo //
TH1=0x00;
TR1=1; //Cuenta regresiva habilitada//
Mientras(TF1==0); //comprobar bit de bandera//
TF1=0;
}
TR1=0; //temporizador apagado//
}

Retardo de bucle normal

cancelar retraso ()

{
entero sin signo k;
para(k=0;k<30000;k++);
}

Cálculos y programa de comunicación en serie utilizando el microcontrolador 8051

La comunicación en serie se usa comúnmente para transmitir y recibir la señal. El microcontrolador 8051 incluye comunicación serie UART de señales transmitidas y recibidas por los pines Rx y Tx. El UART toma bytes de datos y envía los bits individuales secuencialmente. Los registros son una forma de recopilar y almacenar datos en la memoria. UART es un protocolo semidúplex. Half-duplex significa transferir y recibir datos, pero no al mismo tiempo.

Cálculos y programa de comunicación en serie utilizando el microcontrolador 8051
Cálculos y programa de comunicación en serie utilizando el microcontrolador 8051

1. WAP para transmitir el carácter ‘S’ a la ventana serial, ¿usar 9600 como tasa de baudios?

28800 es la velocidad máxima en baudios del microcontrolador 8051

28800/9600= 3

Esta tasa de baudios ‘3’ se almacena en temporizadores

#comprender

vacío principal()

{
SCON=0x50; //iniciar comunicación serial//
TNOD=0x20; //seleccione el modo de temporizador//
TH1=3; // carga la tasa de baudios //
TR1=1; //Cuenta regresiva habilitada//
SBUF=’S’; //almacenar el caracter en el registro//
mientras(TI==0); //comprobar registro de interrupción//
TI=0;
TR1=0; //APAGA el temporizador//
mientras(1); //bucle continuo//
}

2. ¿WAP para recibir datos del hiperterminal y enviar estos datos al PUERTO 0 del microcontrolador usando 9600 baudios?

28800 es la velocidad máxima en baudios del microcontrolador 8051

28800/9600= 3

Esta tasa de baudios ‘3’ se almacena en temporizadores

#comprender

vacío principal()
{
SCON=0x50; //iniciar comunicación serial//
TMOD=0x20; //seleccione el modo de temporizador//
TH1=3; // carga la tasa de baudios //
TR1=1; //Cuenta regresiva habilitada//
PUERTO0=SBUF; //enviar datos SBUF al puerto0//
mientras(RI==0); //comprobar registro de interrupción//
IR=0;
TR1=0; //APAGA el temporizador//
mientras(1); //detiene el programa al recibir el caracter//
}

Lee:  Qué es un actuador hidráulico : Funcionamiento y sus aplicaciones

Programas de interrupción usando el microcontrolador 8051

La interrupción es una señal que fuerza la detención del programa actual y la ejecución inmediata del otro programa. El microcontrolador 8051 proporciona 6 interrupciones, que son fuentes de interrupción internas y externas. Cuando ocurre la interrupción, el microcontrolador detiene el tarea actual y se encarga de la interrupción ejecutando el ISR, luego el microcontrolador vuelve a la tarea reciente.

WAP para realizar la operación de desplazamiento a la izquierda cuando se producen interrupciones del temporizador 0, luego realizar la operación de interrupción para el P0 en la función principal?

#comprender

carácter sin firmar b;

void timer0() interrupción 2 // seleccionado timer0 interrupción //
{
b=0x10;
P1=b<<2;
}
vacío principal()
{
carácter sin signo a,i;
IE=0x82 //habilita el temporizador de interrupción0//
TMOD=0x01;
TLo=0xFC; //temporizador de interrupción//
TH1=0xFB;
TR0=1;
uno=0x00;
mientras(1)
{
para(i=0;i<255;i++)
{
un++;
Po=a;
}
}
}

Programación de teclado usando el microcontrolador 8051

El teclado matricial es un dispositivo de conmutación analógico que se utiliza en muchas aplicaciones en vehículos para permitir que el usuario realice las tareas necesarias. Un teclado matricial consta de una disposición de interruptores en formato matricial en filas y columnas. Las filas y las columnas están conectadas al microcontrolador de modo que la fila de interruptores esté conectada a un pin y los interruptores de cada columna estén conectados a otro pin, luego realice las operaciones.

Programación de teclado usando el microcontrolador 8051
Programación de teclado usando el microcontrolador 8051

1. WAP para alternar el LED presionando el interruptor

#comprender
sbit a=P3^0;
bit b=P3^1;
sbit c=P3^2 ;
bit d=P3^3;
cancelar retraso();
vacío principal()
{
mientras(1)
{
uno=0;
b=1;
c=1;
d=1;
demora();
a=1;
b=0;
c=1;
d=1;
cancelar retraso ()
{
carácter sin firmar i;
TMOD=0x20; //establece el modo de temporizador//
for(i=0i<2;i++) //el doble de tiempo por día//
{
TL1=0x19; //Establecer retraso //
TH1=0x00;
TR1=1; //Cuenta regresiva habilitada//
Mientras(TF1==0); //comprobar bit de bandera//
TF1=0;
}
TR1=0; //temporizador apagado//
}

2. ¿WAP para encender el LED presionando la tecla ‘1’ en el teclado?

#comprender

bit r1=P2^0;
sbit c1=P3^0;
bit de LED=P0^1;

vacío principal()
{

r1=0;
si(c1==0)
{

LED=0xff;
}
}

3. WAP para mostrar el número 0,1,2,3,4,5 en los siete segmentos presionando la tecla correspondiente en el teclado.

#comprender

bit r1=P2^0;

sbit c1=P3^0;

bit r2=P2^0;

bit c2=P3^0;

bit a=P0^1;

vacío principal()

{

r1=0; a=1;

si(c1==0)

{

a = 0xFC;

}

Si (c2==0)

{

a=0x60;

}

si(c3==0)

{

a = 0xDA;

}

Si (c4==0)

{

a=0xF2;

}

}

Programación LCD con microcontrolador 8051

La pantalla LCD es un dispositivo electrónico de uso frecuente en muchas aplicaciones para mostrar información en forma de texto o imagen. LCD es una pantalla que puede mostrar fácilmente caracteres en su pantalla. La pantalla LCD consta de 8 líneas de datos y 3 líneas de control que se utilizan para interactuar con el microcontrolador.

Programación LCD con microcontrolador 8051
Programación LCD con microcontrolador 8051

WAP para mostrar los «KITS EDGEFX» en la pantalla LED?

#comprender
#definir kam P0

voidlcd_initi();
voidlcd_dat (porque no está firmado);
voidlcd_cmd (porque no está firmado);
cancelar retraso();
cancelar visualización (caracteres sin signo *s, caracteres sin signo r)

sbitrs=P2^0;
sbitw=P2^1;
sbit es=P2^2 ;
vacío principal()
{

lcd_initi();
lcd_cmd(0x80);
retraso (100);
lcd_cmd(0xc0);
mostrar(«kits edgefx»,11);
mientras(1);
}

cancelar visualización (caracteres sin signo *s, caracteres sin signo r)
{
entero sin signo w;
para(w=0;w
{
datos_lcd(s)[w]);
}
}
vacíolcd_initi()
{
lcd_cmd(0×01);
retraso (100);
lcd_cmd(0×38);
retraso (100);
lcd_cmd(0×06);
retraso (100);
lcd_cmd(0x0c);
retraso (100);
}
voidlcd_dat (datos de caracteres sin firmar)
{
kam = dat;
rs=1;
rw=0;
en=1;
retraso (100);
en=0;
}
}
voidlcd_cmd (cmd de carácter sin firmar)
{
kam=comando;
rs=0;
rw=0;

en=1;
retraso (100);
en=0;
}
retraso nulo (int sin firmar n)
{

unsignedint a ;
para(a=0;a
}

Espero que este artículo brinde información básica sobre la programación de sistemas integrados utilizando el microcontrolador 8051 con algunos programas de muestra. Para obtener un tutorial detallado sobre la programación en C integrada, publique sus comentarios y preguntas en la sección de comentarios a continuación.

Javired
Javired

Deja una respuesta

Tu dirección de correo electrónico no será publicada.