Tutorial de programación en C integrado con lenguaje Keil

Pruebe Nuestro Instrumento Para Eliminar Los Problemas





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

Programación del sistema integrado

Programación del sistema integrado



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 y más importante herramienta es el software integrado que decide el funcionamiento de un sistema integrado. El lenguaje de programación C integrado se utiliza con mayor frecuencia para programar los microcontroladores.


Tutorial de programación en C integrado (8051)

Para escribir el programa, los diseñadores embebidos deben tener suficiente conocimiento sobre el hardware de procesadores o controladores particulares, ya que la programación C embebida es una técnica de programación completa relacionada con el hardware.



Tutorial de programación

Tutorial de programación

Anteriormente, muchas aplicaciones integradas se desarrollaron utilizando 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, fue el lenguaje C el que obtuvo una amplia aceptación para desarrollo de aplicaciones de sistemas integrados y continúa haciéndolo.

Sistema Integrado

El sistema integrado se define como la combinación de software de programación C integrado y la parte del hardware consiste principalmente en microcontroladores y está destinada a realizar la tarea específica. Este tipo de sistemas integrados se utilizan en nuestra vida diaria, como lavadoras y grabadoras de video, refrigeradores, etc. El sistema integrado fue introducido por primera vez por los microcontroladores 8051.

Sistema Integrado

Sistema Integrado

Introducción al 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. El 8051 es una familia de microcontroladores, que ha sido desarrollada por diferentes fabricantes como Philips, Atmel, dalls, etc. Los microcontroladores 8051 se ha utilizado en muchos productos integrados, desde juguetes para niños pequeños hasta grandes sistemas automotrices.


8051 Microcontrolador

8051 Microcontrolador

El microcontrolador 8051 es el de 8 bits Arquitectura 'CISC' . Consiste en memorias, comunicación serial, interrupciones, puertos de entrada / salida y temporizadores / contadores, integrados en un solo chip integrado, que está programado para controlar los dispositivos periféricos que están interconectados con él. El programa se almacena en la RAM del microcontrolador pero antes de escribir el programa debemos conocer la RAM organización del microcontrolador.

Programación del sistema integrado: Declaración de conceptos básicos

Cada función es una colección de declaraciones 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 algunos elementos básicos y reglas gramaticales. La programación en lenguaje C está diseñada para funcionar con el juego de caracteres, las variables, los tipos de datos, las constantes, las palabras clave, las expresiones, etc., se utilizan para escribir un programa en C. Todos estos se consideran en el archivo de encabezado o archivo de biblioteca y se representa como

#incluir

Desarrollo de programación C integrado

Desarrollo de programación C integrado

La extensión del lenguaje C se denomina lenguaje de programación C integrado. En comparación con lo anterior, la programación integrada en lenguaje 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

#incluir

Palabras clave adicionales C incrustadas

  • sbit
  • un poco
  • SFR
  • volátil
  • macros define

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 al pin del puerto directamente, primero tenemos que declarar el pin con otra variable y luego podemos usarlo en cualquier parte del programa.

Sintaxis: sbit a = P0 ^ 1 // declara el pin respectivo con una variable //
a = 0x01 // envía el valor al pin del puerto //

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

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

{
…..
……
}

La palabra clave 'SFR' se utiliza para acceder a los registros SFR con otro nombre. El registro SFR definido como registro de funciones especiales , contiene todos los registros relacionados periféricamente indicando la dirección. El registro SFR es declarado por la palabra clave SFR. La palabra clave SFR debe estar en mayúsculas.

Sintaxis: SFR port = 0x00 // 0x00 es una dirección de puerto 0 es declarada por la variable de puerto //
Port = 0x01 // luego envía el valor al port0 //
demora()
puerto = 0x00
demora()

La palabra clave 'volátil' es la más importante en el desarrollo de sistemas integrados. La variable que declara con el valor de la palabra clave volátil no se pudo cambiar inesperadamente. Se puede utilizar en registros periféricos mapeados en memoria, variables globales modificadas por los 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: volatile int k

La macro es un nombre que se usa para declarar el bloque de declaraciones como una directiva de preprocesador. Siempre que se usa el nombre, se reemplaza por el contenido de la macro. Las macros representan el #define. Las macros definen todos los pines del puerto.

Sintaxis: #define dat Po // el puerto completo es declarado por una variable //
dat = 0x01 // envío de datos al puerto0 //

Programas C integrados básicos

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

Pasos de programación de C integrado

Pasos de programación de C integrado

  • LED parpadeando con microcontrolador 8051
  • Número que se muestra en la pantalla de 7 segmentos utilizando el microcontrolador 8051
  • Cálculos y programa del temporizador / contador usando el microcontrolador 8051
  • Cálculos y programa de comunicación en serie usando el microcontrolador 8051
  • Interrumpir programas usando el microcontrolador 8051
  • Programación del teclado usando el microcontrolador 8051
  • Programación LCD con microcontrolador 8051

LED parpadeando con el microcontrolador 8051

El LED es un dispositivo semiconductor que se utiliza en muchas aplicaciones, principalmente con fines de indicación. Está encontrando una amplia gama de aplicaciones como indicadores durante la prueba para comprobar la validez de los resultados en diferentes etapas. Son muy baratos 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 se interconectan con el PORT0 de los microcontroladores 8051.

LED parpadeando con el microcontrolador 8051

LED parpadeando con el microcontrolador 8051

1. 01010101
10101010

#include // archivo de encabezado //
void main () // el punto de estadística de ejecución del programa //
{
unsigned int i // tipo de datos //
while (1) // para bucle continuo //
{
P0 = 0x55 // envía el valor hexa al puerto0 //
para (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // envía el valor hexa al puerto0 //
para (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10000000

#incluir

vacío principal()

{

sin firmar yo

carácter sin firmar j, b

mientras (1)

{

P0 = 0x01

b = P0

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

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

{

b = b<<1

P0 = b

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

}

}

}

3. 00001111

11110000

#incluir

vacío principal()

{

sin firmar yo

mientras (1)

{

P0 = 0x0F

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

P0 = 0xF0

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

}

}

4. 00000001

00000011

00000111

.

.

11111111

#incluir

vacío principal()

{

sin firmar yo

carácter sin firmar j, b

mientras (1)

{

P0 = 0x01

b = P0

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

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

0x01

P0 = b

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

}

}

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

los Pantallas de 7 segmentos son las pantallas electrónicas básicas, que se utilizan en muchos sistemas para mostrar la información numérica. Consiste en ocho LED que están conectados de manera secuencial para mostrar los dígitos del 0 al 9, cuando se encienden las combinaciones adecuadas de LED. Pueden mostrar solo 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 los números de '0 a F' en cuatro pantallas de 7 segmentos?

#incluir
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}
no firmado, j
a = b = c = d = 1
mientras (1)
{
para (i = 0i<10i++)
{
P2 = n [i]
para (j = 0j<60000j++)
}
}
}

2. ¿WAP para mostrar los números del '00 al 10 'en pantallas de 7 segmentos?

#incluir
sbit a = P3 ^ 0
sbit b = P3 ^ 1
anular display1 ()
anular display2 ()
demora anulada ()
vacío principal()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0 × 10}
no firmado, j
ds1 = ds2 = 0
mientras (1)
{
para (i = 0, i<20i++)
display1 ()
display2 ()
}
}
anular display1 ()
{
a=1
b=0
P2 = s [ds1]
demora()
a=1
b=0
P2 = s [ds1]
demora()
}
anular display2 ()
{
ds1 ++
si (ds1> = 10)
{
ds1 = 0
ds2 ++
si (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
demora anulada ()
{
unsignedint k
para (k = 0k<30000k++)
}

Cálculos y programación del temporizador / contador utilizando el microcontrolador 8051

El retraso es uno de los factores importantes en el desarrollo de software de aplicación. Sin embargo, el retraso normal no dará el resultado precioso 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 precioso retardo de tiempo con los pulsos de conteo. Ambas tareas se implementan mediante la técnica del software.

Retraso del temporizador

WAP para generar el retardo de tiempo de 500us usando T1M2 (timer1 y mode2)?

#incluir

vacío principal()
{
carácter sin firmar i
TMOD = 0x20 // establecer el modo de temporizador //
para (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // establecer el tiempo de retraso //
TH1 = 0x00
TR1 = 1 // temporizador en //
Mientras (TF1 == 0) // verifica el bit de la bandera //
TF1 = 0
}
TR1 = 0 // temporizador apagado //
}

Retardo de bucle normal

demora anulada ()

{
unsignedint k
para (k = 0k<30000k++)
}

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

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

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

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

1. WAP para transmitir el carácter 'S' a la ventana serial utiliza 9600 como velocidad en baudios?

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

28800/9600= 3

Esa velocidad en baudios '3' se almacena en los temporizadores

#incluir

vacío principal()

{
SCON = 0x50 // inicia la comunicación serial //
TNOD = 0x20 // seleccioné el modo de temporizador //
TH1 = 3 // carga la velocidad en baudios //
TR1 = 1 // Temporizador encendido //
SBUF = ’S’ // almacena el carácter en el registro //
while (TI == 0) // verifica el registro de interrupciones //
TI = 0
TR1 = 0 // APAGAR el temporizador //
while (1) // bucle continuo //
}

2. WAP para recibir los datos del hiperterminal y enviar esos datos al PORT 0 del Microcontrolador usando 9600 baudios?

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

28800/9600= 3

Esa velocidad en baudios '3' se almacena en los temporizadores

#incluir

vacío principal()
{
SCON = 0x50 // inicia la comunicación serial //
TMOD = 0x20 // seleccioné el modo de temporizador //
TH1 = 3 // carga la velocidad en baudios //
TR1 = 1 // Temporizador encendido //
PORT0 = SBUF // envía los datos de SBUF al puerto0 //
while (RI == 0) // comprobar el registro de interrupciones //
RI = 0
TR1 = 0 // APAGAR el temporizador //
while (1) // detiene el programa cuando se recibe el carácter //
}

Interrumpir programas usando el microcontrolador 8051

La interrupción es una señal que obliga a detener el programa actual y ejecutar el otro programa inmediatamente. El microcontrolador 8051 proporciona 6 interrupciones, que son internas y externas interrumpir fuentes . Cuando ocurre la interrupción, el microcontrolador pausa la tarea actual y atiende la interrupción ejecutando el ISR, luego el microcontrolador regresa a la tarea reciente.

WAP para realizar la operación de desplazamiento a la izquierda cuando se produce la interrupción del temporizador 0 y luego realizar la operación de interrupción para P0 en la función principal.

#incluir

carácter b sin firmar

void timer0 () interrupción 2 // seleccionado timer0 interrupción //
{
b = 0x10
P1 = b<<2
}
vacío principal()
{
sin firmar char a, i
IE = 0x82 // habilita la interrupción timer0 //
TMOD = 0x01
TLo = 0xFC // temporizador de interrupción //
TH1 = 0xFB
TR0 = 1
a = 0x00
mientras (1)
{
para (i = 0i<255i++)
{
a++
Po = a
}
}
}

Programación del teclado usando el microcontrolador 8051

El teclado matricial es un dispositivo de conmutación analógico, que se utiliza en muchas aplicaciones integradas para permitir al usuario realizar las tareas necesarias. A teclado de matriz consiste en una disposición de interruptores en formato de matriz en filas y columnas. Las filas y columnas están conectadas al microcontrolador de tal manera que la fila de interruptores está conectada a un pin y los interruptores en cada columna están conectados a otro pin, luego realizan las operaciones.

Programación del teclado usando el microcontrolador 8051

Programación del teclado usando el microcontrolador 8051

1. WAP para alternar el LED presionando el interruptor

#incluir
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
demora anulada ()
vacío principal()
{
mientras (1)
{
a=0
b=1
c=1
d = 1
demora()
a=1
b=0
c=1
d = 1
demora anulada ()
{
carácter sin firmar i
TMOD = 0x20 // establecer el modo de temporizador //
para (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // establecer el tiempo de retraso //
TH1 = 0x00
TR1 = 1 // temporizador en //
Mientras (TF1 == 0) // verifica el bit de la bandera //
TF1 = 0
}
TR1 = 0 // temporizador apagado //
}

2. WAP para encender el LED presionando la tecla '1' en el teclado?

#incluir

sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
LED de sbit = 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 el segmento siete presionando la tecla respectiva en el teclado?

#incluir

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit 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

los pantalla LCD es un dispositivo electrónico, que se utiliza con frecuencia en muchas aplicaciones para mostrar la información en formato de texto o imagen. La pantalla 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?

#incluir
#define kam P0

voidlcd_initi ()
voidlcd_dat (carácter sin firmar)
voidlcd_cmd (carácter sin firmar)
demora anulada ()
visualización vacía (caracteres sin firmar *, carácter r sin firmar)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit en=P2^2
vacío principal()
{

lcd_initi ()
lcd_cmd (0x80)
retraso (100)
lcd_cmd (0xc0)
pantalla ('kits de edgefx', 11)
mientras (1)
}

visualización vacía (caracteres sin firmar *, carácter r sin firmar)
{
unsignedint w
para (w = 0w{
lcd_data (s [w])
}
}
voidlcd_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 (dat de carácter sin firmar)
{
peine = eso
rs = 1
rw = 0
en=1
retraso (100)
en=0
}
}
voidlcd_cmd (cmd de caracteres sin firmar)
{
vino = cmd
rs = 0
rw = 0

en=1
retraso (100)
en=0
}
demora nula (unsigned int n)
{

sin firmar un
para (a = 0a}

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 ejemplo. Para obtener un tutorial detallado de programación en C integrado, publique sus comentarios y consultas en la sección de comentarios a continuación.