You are on page 1of 7

Empleo del microcontrolador 8051 como contador de eventos y posterior envo

mediante comunicacin por puerto serial


Use of 8051 microcontroller as events counter and later sending by serial port
Anthony Ariano Cordero Gaviln, Carlos Burga Guardales
Universidad Nacional de Ingeniera, Av. Tpac Amaru 210 - Rmac / Lima 25 - Per
Resumen
El 8051 es un microcontrolador que por sus caractersticas y bajo costo ofrece numerosas aplicaciones hoy
en da. Una de esas caractersticas es su capacidad de operar como contador de eventos externos
empleando una sencilla programacin y, adems ofrece la capacidad de transmitir dicha informacin mediante
el empleo de una conexin por el puerto serial que incorpora facilitando su conexin con otros dispositivos
como una computadora personal.
Descriptores: microcontrolador, 8051, puerto serial, contador
Abstract
The 8051 is a microcontroller who by his characteristics and low cost offers numerous applications nowadays.
One of those characteristics is its capacity to operate like a counter of external events using a simple
programming and, in addition it offers the capacity to transmit this information by means of the use of a
connection by the serial port that incorporates facilitating its connection with other devices like a personal
computer.
Keywords: microcontroller, 8051, serial port, counter
1.

Introduccin

dos entradas para Timer/Contador de 16 bits, dos


entradas para interrupciones externas, las seales
de RD y WR para la toma o almacenamiento de
datos externos en RAM, la seal de PSEN para la
lectura de instrucciones almacenadas en EPROM
externa. Gracias a estas tres seales el
microcontrolador 8051 puede direccionar 64 KB de
programa y 64KB de datos separadamente, es decir
un total de 128KB. Adems cuenta con 128 bytes de
memoria RAM interna.

El 8051 es el nombre de una gran familia de


microcontroladores que fueron desarrollados por
Intel en 1980 para su uso en sistemas empotrados.
Un Microcontrolador es todo un "sistema mnimo"
dentro de un slo dispositivo, lo cual ofrece un
enorme panorama hacia el mundo de la
compatibilidad el cual consta de un CPU, puertos
paralelos de entrada y salida, puerto serie, timers,
contadores, memorias, y en algunos casos hasta
convertidores analgicos digitales, todo esto dentro
de un solo chip. El 8051 y sus derivados mejorados,
compatibles con el original, permanecen populares
hasta el da de hoy. Este trabajo se centrar en las
funciones del 8051 como timer/contador y salida de
data por puerto serial.

Adems el 8051 puede generar la frecuencia (Baud


Rate) de Transmisin/Recepcin de datos por el
puerto serie de manera automtica partiendo de la
frecuencia del oscilador general, por medio de la
programacin del Timer 1.
Dicha frecuencia de transmisin puede ser cambiada
en cualquier momento con solo cambiar el valor
almacenado en el control o tambin se puede
duplicar o dividir la frecuencia con solo escribir sobre
el bit 7 (SMOD) del registro de control (PCON).[1]

1.1 Caractersticas del 8051


El microcontrolador 8051 contiene una Unidad
Aritmtico Lgica (ALU) y un bus de datos de 8-bits,
cuatro puertos bidireccionales de entrada/salida,
uno de los cuales (P3) es tambin un puerto de
control, el cual a su vez contiene; un puerto serie,
1

1.2 Los timers del 8051

De este registro, cuatro bits son usados para


especificar un modo de operacin. Estos modos son:

El 8051 viene equipado con dos timers, ambos de


ellos capaces de ser configurados individualmente.
En general pueden cumplir tres funciones: 1) Medir o
calcular la cantidad de tiempo entre dos eventos, 2)
Contar los eventos en si mismos, o 3) Generar una
seal de baudaje o baudrate para el puerto serial.

Tabla 3: Modos de operacin para los timers:

Los timers del 8051[2] son accesados a travs de


seis registros de funciones especiales como se
muestran en la tabla 1:
Tabla 1: Registros de funciones especiales para el
timer.
Timer
SFR

Funcin

Direccin

Direccionable
por bit

TCON

Control

88h

Si

TMOD

Modo

89h

No

8Ah

No

8Ch

No

8Bh

No

8Dh

No

TL0
TH0
TL1
TH1

Byte Bajo
Timer 0
Byte Alto
Timer 0
Byte Bajo
Timer 1
Byte Alto
Timer 1

Gate1

C/T1

Funcin
Si es 1 el timer 1 corre slo si
INT1 (P3.3) esta el alta, si es 0
corre sin importar su estado.
Si C/T1=1 cuenta eventos en T1
(P3.5), si C/T1=0 se incrementa
cada ciclo de mquina.

Descripcin

Modo 13-bit

Modo 16-bit

Modo 8-bit con autorecarga

Modo 8-bit donde el timer 0


funciona en TL0 mientras que el
timer1 en TH0

En el modo 2 (8-bit con autorecarga) TL se


incrementa hasta 255 y regresa con un valor inicial
igual al almacenado en TH.
En el modo 3 el Timer 0 funciona en TL0 y el Timer 1
en TH0. Ambos timers cuentan desde 0 a 255 y
desbordan de vuelta a 0. Todos los bits relacionados
al Timer 1 pertenecen ahora a TH0.
Otro registro que proporciona informacin sobre los
dos timers es TCON con la siguiente estructura:

Timer

Tabla 4: Registro de control para los timers.

Bit

Nombre

Descripcin

TF1

Este bit se fija cuando el timer1


se desborda.

TR1

Si es 1 el timer1 se activa, si es 0
se apaga.

TF0

Este bit se fija cuando el timer0


se desborda.

TR0

Si es 1 el timer0 se activa, si es 0
se apaga.

T1M1

Modo timer 1 bit 1

T1M0

Modo timer 1 bit 0

Gate0

C/T0

T0M1

Modo timer 0 bit 1

T0M0

Modo timer 0 bit 0

Si es 1 el timer 0 corre slo si


INT0 (P3.4) esta el alta, si es 0
corre sin importar su estado.
Si C/T0=1 cuenta eventos en T0
(P3.4), si C/T0=0 se incrementa
cada ciclo de mquina.

Modo

En el modo 1 (16-bit) TL se incrementa hasta 255,


luego regresa a 0 e incrementa TH desde 0 hasta
255.

Tabla 2: Descripcin de funciones del registro TMOD.


Nombre

M0

En el modo 0 (13-bit) TL se incrementa hasta 31,


luego regresa a 0 e incrementa TH desde 0 a 255.

El registro TMOD se usa para controlar el modo de


operacin de ambos timers, tal como se explica en la
tabla 2:

Bit

M1

0
0

Solo se muestran cuatro bits ya que la funcin de los


restantes estn relacionadas con la funcin de
interrupciones.

1.3 El Timer como contador de eventos

Los bits SM0 y SM1 nos permiten configurar el


puerto serial de 4 modos [4]:

El 8051 se puede configurar para contar transiciones


lgicas de 1 a 0 en el pin P3.4 para el timer 0 o en el
pin P3.5 para el timer 1. Estas cuentas se almacenan en los mismos registros empleados para la
funcin de "timer", es decir, en TL y TH obedeciendo
tambin la configuracin asignada en los bits TxM0 y
TxM1. Esto significa que, por ejemplo, el timer 0
puede estar contando eventos externos en
cualquiera de los modos 0-2 mientras que timer 1
puede estar fijado por software.

Tabla 6: Modos de operacin del puerto serial


SM1 SM0

Adems se debe mencionar que el 8051 revisa estas


transiciones 1-0 cada ciclo de mquina (12 ciclos del
reloj) por lo que eventos que ocurran en un tiempo
menor a 1/24 de la frecuencia del reloj no sern
detectados.

Modo serial bit 0

SM1

Modo serial bit 1

SM2

Activa comunicacin multiproceso

REN

Activa recepcin

TB8

Corresponde al 9-bit a enviar en los


modos 2 y 3

RB8

Corresponde al 9-bit al recepcionar


en los modos 2 y 3

TI

Bandera de transmisin, se activa al


terminar de enviar un byte

RI

Bandera de recepcin, se activa al


terminar de recepcionar un byte

8-bit Shift
Register

Oscilador / 12

8-bitUART

Fijado por Timer 1

9-bitUART

Oscilador / 32

9-bitUART

Fijado por Timer 1

frecuencia oscilador
12

El modo 1 tiene una velocidad de baudios variable


para 8 bits de datos. Usando el timer 1 en modo 2 la
velocidad de baudios ser:
Baudrate

frecuencia oscilador
2 SMOD

32
12 (256 TH 1)

Usando el timer 1 en los otros modos se tendr:


Baudrate

Tabla 5: Descripcin de funciones del registro SCON.

SM0

Modo 1

Para configurar el puerto serial del 8051 hacemos


uso del registro SCON que posee la siguiente
estructura:

Baudrate

El registro SBUF son fsicamente dos. Uno es de


solo escritura y se usa para la transmisin va el pin
TXD, mientras que el otro es slo lectura y guarda
los datos recibidos por RXD. Ambos registros usan
la direccin 99h.

Descripcin

Velocidad de
Baudios

El modo 0 tiene una velocidad de baudios fija, que


es 1/12 la frecuencia del oscilador. En este modo
slo se necesita configurar el registro SCON.

El 8051 posee un circuito de comunicacin serial


que usa el registro SBUF para retener datos. El
registro SCON controla la comunicacin de datos, el
registro PCON controla la velocidad y los pines RXD
(P3.0) y TXD (P3.1) proveen la conexin externa.

Nombre

Descripcin

Modo 0

1.4 Salida de datos mediante el puerto serial

Bit

Modo

2 SMOD
frecuencia timer1 desborda
32

El valor SMOD corresponde al bit de control en


PCON que tiene el efecto de duplicar la velocidad de
baudios.
Modo 2
En el modo 2, la velocidad de baudios se fija para
datos de 9 bits la cual es 1/32 o 1/64 la frecuencia
del oscilador, dependiendo del valor del bit SMOD en
el registro PCON.
Baudrate

2 SMOD
frecuencia oscilador
64

Modo 3
La velocidad de baudios en el modo 3 es variable e
se fija del mismo modo que para el modo 1. Este
modo permite transferencia de datos de 9 bits.
Transmisin de Datos
3

La transmisin de datos comienza en el momento


que se escribe en SBUF. El bit TI se fija el dato ha
sido trasmitido lo que significa que SBUF se
encuentra vaco y que otro byte de datos se puede
enviar.
Recepcin de Datos
La recepcin de datos comenzar si el bit de
recepcin (REN) est activado. Adicionalmente, en
el modo 0, RI tambin debe ser puesto a 0. El bit RI
se fija despus de haber recibido datos en todos los
modos. El requerimiento de fijar RI=0 para el modo 0
prevendr la recepcin de nuevos datos hasta que el
programa termine de manejar con los datos
anteriores y reinicie RI.
2.

Figura 1: Mdulo entrenador TMC51 basado en el


microcontrolador AT89S52

Metodologa

Como receptor se emple una computadora


personal con el sistema operativo Windows. Los
resultados de la transmisin de datos se visualizaron
utilizando el programa Hyperterminal.

En este proyecto se empleo un sistema basado en el


8051 modelo TMC51 (Trainer Module of Cruz for the
8051) el cual es un mdulo entrenador que se utiliza
para aprender a programar y probar programas
realizados en lenguaje assembler o en cualquier otro
lenguaje como C.

2.1 Algoritmo de conteo


El objetivo es emplear direcciones de memoria que
almacenarn las cifras que formarn el nmero
completo.

Tiene como principales caractersticas:

Microcontrolador ATMEL AT89S52 (8KB


Flash ROM con direcciones de memoria de 0h a
1FFFh)
Un Firmware incorporado llamado programa
MONITOR que gestiona la recepcin y
ejecucin de los programas enviados por el
usuario.
Un cristal de 11.0592 MHz
32 KB de RAM externa (desde la direccin
8000h a FFFFh) destinado para el almacenaje
de programas.
Interfaz serie-USB que permite una
comunicacin entre el TMC51 y cualquier PC
con un puerto USB libre a una velocidad de
19200 baudios.
Adems tiene disponible todo el puerto P1 y
los pines del puerto P3: P32/INT0, P33/INT1,
P34/T0 y P35/T1. Todos los pines del puerto P1
y P3 estn conectados a conectores externos de
10 pines cada uno. Adems, el pin P1.0 se
conecta a un led y los pines P3.2 y P3.3 se
conectan a 2 botones.

Tabla 6: Direcciones de memoria que contienen el


nmero.
Direccin
C
O
N
T
E
O

40h

41h

42h

43h

44h

El proceso consiste en declarar un vector nulo


(posiciones de memoria consecutivas y de valor 0)
para formar el nmero ; asignando a cada posicin
una cifra ; el conteo se realiza aumentando la
primera posicin (las unidades) hasta el valor de 9 ,
dando aqu un salto a la siguiente posicin
aumentndola en una unidad y actualizando la
anterior(o anteriores) con 0, este proceso se repite
hasta llenar el mximo valor de la correspondiente
posicin , por ejemplo en las decenas el 99, en las
centenas el 999 y as sucesivamente hasta el valor
lmite previamente asignado en otra posicin de
memoria donde un valor de bandera indicara el fin
del programa.

El emplear este sistema facilit la implementacin


del algoritmo ya que slo se necesit conectarlo a
una PC va puerto USB para comprobar la
transmisin serial sin necesidad de tener que
disear un sistema para el 8051 desde cero.
4

Diagrama 1: Funcionamiento general del programa

El pseudocdigo de implementacin es:


Inicio
Entero Numero[5]
Entero count , Flag , limite
Flag <-0
limite <-9
Para count<-1 hasta 5
Numero[count] <-0 ;

Inicio

Inicializa Puerto Serial:


Fija baud rate 19200

//Inicio del timer


Timer 0 <- 26h
// modo 2
Tl0 <- 255
TH0 <- 255
TR0 <- 1

Saludo Inicial
Sigue
esperando

Contador
Si (Flag es igual 1) salta a Fin_Programa;
Mientras (Tf0 diferente cero);
// queda dando vueltas
TF0 <-0;
Imprimir Numero;

No
Transicin 1-0 en P3.4
1

//obtencin del nmero


Si (Numero[5] no es igual a 9)
{ Numero[5] <- Numero[5]+1;
Salta a Contador;}
Sino
{ Si(Numero[4]no es igual a 9)
{ Numero[4] <- Numero[4]+1;
Numero[5] <- 0;
Salta a Contador;
}
Sino
{Si(Numero[3] no es igual a 9)
{Numero[3] <- Numero[3]+1;
Numero[4] <- 0;
Numero[5] <- 0;
Salta a Contador;
}
Sino
{Si (Numero[2]no es igual a Limite)
{Numero[2] <- Numero[2]+1;
Numero[3] <- 0;
Numero[4] <- 0;
Numero[5] <- 0;
Si (Numero[2] es igual a 5)
Flag <- 1 ;
//Aviso de fin de programa
}
Sino
{Si(Numero[1] no es igual a 6)
{Numero[1] <- Numero[1]+1;
Numero[2] <- 0;
Numero[3] <- 0;
Numero[4] <- 0;
Numero[5] <- 0
Si(Numero[1] es igual a 6 )
limite <- 4 ;
Salta a Contador
}
}
}

Si
Algoritmo de conteo

Flag = 1

Si

No
Imprimir Nmero
Envo al P.Serial
Registros 40h al 44h
(nmero completo)

Imprimir ltimo Nmero


Fin

Fin_programa;

mnimo, adems, los cambios o ampliaciones futuras


del sistema son casi nulos.
4.
2.2 Envo mediante conexin por puerto serial

Conclusiones

La
transmisin
de
datos
desde
microcontrolador 8051 a la PC fue exitosa.

Una vez que los registros del 40h al 45h contienen


las cifras que formarn el nmero completo se
procede a enviarlos por conexin serial uno por uno.
Para esto, el puerto serial se configur del modo
siguiente:

el

SCON = #50H
PCON = #80H
TMOD = #26H
TH1 = #0FDH
TL1 = #0FDH
Aqu es el timer 1 el que genera el baudrate de
modo que trabaje para 19200 baudios.
La seal que ha de disparar el envo del nmero
completo va a ser el desborde del Timer 0. Para esto
se fij en modo 2 con auto recarga con un valor
inicial de TL0 y de TH0 igual a #255.
Esto ocasionar que al primer evento se incremente
el registro TL0 y desborde inmediatamente.
Al desbordar enva al puerto serial el contenido de
los registros del 40h al 44h que en conjunto forman
el nmero completo.
3.

Figura 2: Conexin exitosa entre el


microcontrolador y la Pc.
El algoritmo mostrado da un amplio rango de
conteo, este de 0 a (10^128) -2 dependiendo
cuantos espacios de memoria vacos se tengan,
tambin dependiendo del microcontrolador este
puede variar aumentando o disminuyendo el
rango de acuerdo a la memoria disponible.

Resultados y discusin

Este algoritmo, como se sealo antes, es capaz de


ser ampliado para llevar cuentas de nmeros muy
grandes mientras queden direcciones de memoria
disponibles.
El objetivo principal consista en lograr que el 8051
sea capaz de contar hasta 65000. Como se conoce,
el 8051 es de 8 bits, sin embargo para la funcin de
timer se tiene asignados 2 registros lo que le permite
manejar cantidades hasta la cifra 65535. Sin
embargo este tambin constituye un lmite si se
deseara trabajar con cantidades mayores. El diseo
del algoritmo toma en cuenta esto y propone
trabajar con unidades individualmente asignndoles
a cada una un registro lo que permitira expandir el
lmite siempre y cuando se cuente con direcciones
de memoria disponibles.

Figura 3: Aumento en el nmero de cifras,


probado
en el simulador Edsim51.
De acuerdo a que el algoritmo usado tiene partes
independientes, a este puede implementarse
ms funciones sin modificar o interferir con las
dems, haciendo a este flexible y tener la
capacidad de usarse en otros dispositivos.

Adems, el microcontrolador 8051 al poseer un


contador y puerto serial ofrece una solucin integral
sin necesidad de implementar otros dispositivos y
empleando una sencilla programacin. Su uso
estar dirigido hacia aplicaciones concretas en
donde, el espacio, y nmero de componentes es
6

5.
El
conteo
de
pulsos
se
realiz
satisfactoriamente, evidencindose este en la
mayor y menor velocidad de conteo al variar la
frecuencia de la fuente y la inactividad de este al
estar la fuente apagada.

Agradecimientos

Agradecemos al profesor C. Martn Cruz Salazar


por su apoyo, amabilidad, conocimientos y gran
ayuda en el proceso de desarrollo y depuracin del
algoritmo final sin el cual este proyecto no hubiera
tenido xito.
6.

Referencias

[1]

A. Vega, "Manual del Microcontrolador 8051"


(1999)

[2]

S. MacKenzie, "The 8051 Microcontroller" 2Ed


(1995) 63-95

[3]

K. J. Ayala, "The 8051 Microcontroller


Architecture Programming and Applications"
(1991) 28-37

[4]

M. O. Durham, "Systems Design and the


8051" 2Ed (2003) 144-154

Figura 4: Conteo de pulsos y expansin del


lmite.
E-mail: c.burga@live.com
nooblinux@hotmail.com

You might also like