You are on page 1of 14

APLICACION DE LOS MICROCONTROLADORES PIC AL CONTROL DE

SEMAFOROS.

ERIKA MUOZ P.
COD. 46.373.908
ALEXANDER SNCHEZ.
4.219.006

UNIVERSIDAD ABIERTA Y A DISTANCIA UNAD


SOGAMOSO.
2001.

INTRODUCCIN.

En 1980 aproximadamente, los fabricantes de circuitos integrados iniciaron la difusin


de un nuevo circuito para control, medicin e instrumentacin al que llamaron
microcomputador en un slo chip o de manera ms exacta MICROCONTROLADOR.
Los

microcontroladores

PIC,

fabricados

por

Microchip,

son

productos

de

microelectrnica diseados para facilitar y abaratar el control industrial. Los PIC


pueden considerarse elementos de control incrustado y hoy en da pueden encontrarse
en amplios sectores del mercado internacional.
Un microcontrolador es un circuito integrado que contiene toda la estructura
(arquitectura) de un microcomputador, o sea CPU, RAM, ROM y circuitos de entrada y

salida. Los resultados de tipo prctico, que pueden lograrse a partir de stos elementos,
son sorprendentes.
Algunos microcontroladores ms especializados poseen adems temporizadores,
contadores y un sistema para permitir la comunicacin.
Los PIC16CXX de Microchip Technology, son una familia de microcontroladores
CMOS de alta velocidad, de bajo costo y excelente rendimiento, por lo que ser
utilizado en la realizacin de nuestro proyecto.

OBJETIVOS.

Aplicar los conocimientos adquiridos en el Area de los microcontroladores en la


elaboracin de un proyecto practico en donde podamos observar su potencialidad.
Estudiar de manera mas detallada la estructura interna de un microcontrolador.
Profundizar mas a cerca de la programacin en lenguaje de maquinas lo que es
de vital importancia en nuestra formacin como profesionales.
Cumplir con los requerimientos necesarios para la aprobacin de la asignatura.

MARCO TEORICO.
El microcontrolador que se uso en el proyecto fue un 16F84 por lo que es importante
discutir algo a cerca del mismo antes de discutir a cerca de la elaboracin del proyecto.

El 16F84 es un microcontrolador de memoria flash, lo que brinda grandes ventajas en


el desarrollo de prototipos y el aprendizaje ya que no requiere borrado mediante luz
ultravioleta.

El primer paso importante el ver el diagrama de pines del PIC16F84, en el cual se


observa como estan distribuidos sus pines. Este circuito integrado cuenta con 2 puertos
configurables como entradas o salidas segun sea el caso y consta de 18 patas las cuales
se encuentran asignadas de la siguente manera:

Pata 1: -------------------RA2
Pata 2: -------------------RA3
Pata 3: -------------------RA4/TOCKI
Pata 4:--------------------Reset
Pata 5:--------------------Tierra (GND)
Pata 6:--------------------RB0/INT
Pata 7:--------------------RB1
Pata 8:-- ------------------RB2
Pata 9:--------------------RB3
Pata 10:-------------------RB4
Pata 11:-------------------RB5
Pata 12:-------------------RB6
Pata 13:-------------------RB7
Pata 14:-------------------Vcc
Pata 15:-------------------Osc2
Pata 16:-------------------Osc1
Pata 17:-------------------RA0
Pata18:--------------------RA1

El puerto A est denotado por el color Azul oscuro, el cual tiene slo cinco pines que
puedes configurar como entrada o salida. La pata 3, o sea, RA4/TOCKI puede ser

configurado a su vez como entrada/salida o como temporizador/contador. Cuando es


salida se comporta como colector abierto, por lo tanto debemos poner una resistencia
Pull-up a Vcc de 1 Kohm. Cuando es configurada como entrada, funciona como
disparador Schmitt Trigger por lo que puede reconocer seales con un poco de
distorcin.
El puerto B est denotado por el color anaranjado, y tiene ocho pines que igualmente se
pueden configurar como entrada o salida. Los pines 15 y 16 son nicamente para el
oscilador externo el cual estudiaremos con ms detalle ms adelante. El pin 4, o sea, el
Reset se debe conectar con una resistencia de 10 Kohm a Vcc para que el Pic funcione,
si lo queremos resetear entonces pondremos un micropulsador con una resistencia de
100 Ohm a tierra.
La mxima capacidad de corriente para los puertos se muestra en la siguiente tabla:

MODO SUMIDERO
MODO FUENTE

PUERTO A
80 mA
50 mA

PUERTO B
150 mA
100 mA

Por ltimo tenemos los pines 14 y 5 que son la alimentacin la cual no debe sobrepasar
los 5 Voltios. Para esto nos aseguramos poniendo un regulador de voltaje (7805) en
nuestro circuito.
Es importante denotar que los pines de los puertos no utilizados los debemos conectar a
+5V (Vcc) con una resistencia de 10 Kohm.

Oscilador Externo:

Es necesario para que nuestro PIC pueda funcionar, puede ser contectado de cuatro
maneras diferentes. En la siguiente tabla encontraras los diagramas necesarios para su
conexin y una brebe descripcin de cada uno.

RC

Oscilador

compuesto

por

una

resistencia

(R=10Kiloohms, C=20 picofaradios)

XT Oscilador compuesto por un cristal y dos condensadores.

HS Oscilador compuesto por un cristal de alta velocidad.

un

condensador.

LP Oscilador compuesto por un cristal de baja frecuencia y bajo consumo de


potencia.
El siguiente paso importante para tener claro como debemos empezar a programar es
conocer la tabla de registros. Esta tabla est dividida en dos partes llamadas BANCO 0
y Banco 1. Nos debemos interezar momentneamente en: STATUS, PORTA, PORTB,
TRISA y TRISB.
Para que nuestro PIC pueda trabajar debemos configurar sus puertos segun sea el caso,
como entrada o como salida, haciendo antes la acotacin que si le asignamos un
CERO(0) a un pin ste ser SALIDA y si asignamos un UNO (1) ste ser ENTRADA.
Esta asignacin de pines se hace programando los registros TRISA y TRIS B.
TRISA es el registro donde se almacenan los bits que asignan un pin como entrada o
salida del PUERTO A. Recordemos que el puerto A slo tiene 5 pines, por lo tanto un
ejemplo de esto sera:
Si TRISA (puerto A) es igual a 00110 entonces esto se leera,
TRISA
RA0
RA1
RA2
RA3
RA4

ASIGNACION
0
1
1
0
0

ESTADO
SALIDA
ENTRADA
ENTRADA
SALIDA
SALIDA

El bit menos significativo se asigna desde RA0.

Si TRISB (puerto B) es igual a 00110010, entonces esto se leera:

TRISB

ASIGNACION

ESTADO

RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

0
1
0
0
1
1
0
0

SALIDA
ENTRADA
SALIDA
SALIDA
ENTRADA
ENTRADA
SALIDA
SALIDA

Ahora bien, pero como ponemos este nmero en TRISA y TRISB?


Para esto tenemos que ir a la tabla, la cual se divide en BANCO 0 y BANCO 1. Cuando
el PIC arranca a correr el programa siempre se va a encontrar en el BANCO 0, por lo
tanto debemos pasar al BANCO 1 para poder configurar los puertos asignando valores a
TRISA y TRISB. Esto se logra a travs del Registro STATUS, el cual nos servir para
cambiarnos de BANCO.

Tambin es importante saber que este registro es de 8 BIT, o sea, ocho casillas, en la
cual la No. 5 (RP0) define la posicin del BANCO donde nos encontramos, por defecto
siempre se encuentra en el BANCO 0.

Registro STATUS:
7

IRP

RP1

RP0

TO

PD

DC

Si en la casilla 5 (RP0) del registro STATUS hay un CERO entonces estamos en el


BANCO 0.
Si en la casilla 5 (RP0) del registro STATUS hay un UNO entonces estamos en el
BANCO 1.
Pero como ponemos un UNO en la posicin 5 del registro STATUS para entrar al
BANCO 1?
Aqui es donde empezamos a ver las instrucciones de programacion.
La dos primeras a utilizar son:
BSF que significa SET FILE REGISTER, es decir, pone un uno en la localizacin de la
RAM especificada.
BCF que significa BIT CLEAR FILE REGISTER, es decir, pone un cero en la
localizacin de memoria especificada.
Quiere decir entonces que para entrar al BANCO 1 tendriamos que poner un UNO en la
posicin 5 (RP0) del registro STATUS. La sintaxis sera:
bsf STATUS,5
Se lee, poner un UNO en la posicin CINCO del registro STATUS. En este momento ya
estamos dentro del BANCO 1.
NOTA: las intrucciones pueden se escritas en minusculas o mayusculas.

Ahora nos toca decidir segn el proyecto que vallamos a hacer quien va a ser
ENTRADA y quien va a ser SALIDA. Supongamos entonces que todos los pines del
puerto A van a ser ENTRADA y el puerto B SALIDA.
Tentriamos que asignar al puerto A : 11111
Y al puerto B : 00000000
Movamos entonces estos valores a TRISA y TRISB respectivamente a travs de la
siguiente sintxis:
movlw B'11111'
movwf TRISA
En la primera lnea estamos moviendo 11111 a W. La W es el Registro de Trabajo, el
cual

usaremos

para almacenar

momentneamente

los

datos

que queramos

mover.Despus que los datos estn en el registro de trabajo W, los podemos mover a
TRISA, de esta manera ya cofiguramos el puerto A. La B y las comillas es la manera
ms comn de designar el dato como NUMERO BINARIO, de esta manera se nos hace
ms fcil saber en determinado momento a quin pusimos como ENTRADA o
SALIDA.
Ahora configuremos el puerto B.
movlw B'00000000'
movwf TRISB
Configurado el puerto B nos salimos del BANCO 1 al BANCO 0 para enpezar ya a
programar.

Para salirnos del BANCO 1 solo debemos poner un CERO en la posicin 5 (RP0) del
registro STATUS.
bcf STATUS,5
En este momento nos encontramos en el BANCO 0.

Arquitectura
La estructura interna de los PIC 16C8XX se basa en registros con memoria y buses
separados para las instrucciones y los datos, llamada arquitectura Harvard. La memoria
y el bus de datos (RAM) son de 8 bits de ancho, mientras que la memoria y su bus
tienen 14 bits.
Esta estructura emplea 2 espacios de memoria diferentes, uno para datos y otro para
programas y adems se utilizan 2 buses distintos: uno para el trfico entre la CPU y los
datos y otro para la comunicacin entre la memoria de programa y la CPU. Esto permite
que, mientras una instruccin se ejecuta utilizando el bus de datos (8 bits). La siguiente
se est leyendo desde la memoria de programa y cargndose en el registro de
instruccin utilizando el bus de instrucciones de 14 bits.
Direccionamiento indirecto de datos
Es un registro que no est disponible en forma fsica, se utiliza el contenido del registro
f4 (selector o FSR), para seleccionar de manera indirecta uno de los 32 registros
disponibles como registro de datos o registro puntero, segn el tipo de instruccin que
llame a f0.
Contador y reloj del tiempo real (RTCC)
En este registro se puede leer o escribir como en cualquiera de los otros registros. Este
registro puede ser incrementado por una seal externa aplicada al pin RTCC o por el
reloj interno de instrucciones. Las aplicaciones ms obvias de este registro son el conteo
de eventos y la medicin de tiempos. El incremento del registro RTCC se puede
determinar por medio de un prescalador interno programable.

Un divisor de frecuencia, "PRESCALER" puede ser programado al RTCC, asignando el


estado apropiado a los bits RTS, RTE, PS1, PS2, PS0 del registro option.
Todo incremento en f1 es retardado 2 ciclos de instruccin independiente de la fuente
del pulso. Vlido tambin para instrucciones que modifican el RTCC.
El bit RTE determina si el flanco de la seal externa es de subida (RTE=0) o de bajada
(RTE=1) siempre y cuando haya sido programado su incremento con seal externa.
Contador de programa
Se utiliza para direccionar las palabras de 14 bits del programa del usuario, almacenadas
en la memoria segn el tipo de microcontrolador que se utilice. El nmero de bits de
este registro y de la pila (STACK), es de 9 para los PIC.
El set de instrucciones para la programacin de un microcontrolador 16f84 es el
siguiente:

Instrucciones orientadas a los bytes


Mnemnico

Parmetros

Descripcin

Ciclos

Banderas
afectadas

ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
DECFSZ
INCF
INCFSZ
IORWF
MOVF
MOVWF
NOP
RLF
RRF
SUBWF
SWAPF
XORWF

f, d

Sumar W y f

C,DC,Z

f, d

AND W con f

Borrar f

Borrar W

f, d

Complemento de f

f, d

Decrementar f

f, d

Decrementar f, Salta si0

1(2)

Ninguna

f, d

Incrementa f

f, d

Incrementa f, Salte si 0

1(2)

Ninguna

f, d

IOR W con f

f, d

Mover a f

Mover W a f

Ninguna

No Operatiocion

Ninguna

f, d

Rotar a la izquierda

f, d

Rotar a la derecha

f, d

Subtraccion W de f

C,DC,Z

f, d

Intercambio de nibbles en f

Ninguna

f, d

X-OR W con f

Instrucciones orientadas a los bits


Mnemnico

Parmetros

Descripcin

Ciclos

Banderas
afectadas

BCF
BSF

f, b

Bit borrar de f

Ninguna

f, b

Bit colocar bit de f

Ninguna

BTFSC

f, b

Bit Test a bit de f, Salte si


cero.

1 (2) Ninguna

BTFSS

f, b

Bit Test a bit de f, Salte si uno 1 (2) Ninguna

Operaciones con literales y de control


Mnemnico

Parmetros

ADDLW k
ANDLW k
k
CALL
CLRWDT k
GOTO
IORLW k
MOVLW k
RETLW k
SLEEP
SUBLW k
XORLW k

Descripcin

NroCic Banderas
.
afectadas

Add literal y W

C,DC,Z

AND literal con W

Call subrutina

Clear Watchdog Timer

TO,PD

Go to direccion de memoria

Ninguna

OR literal con W

Mover literal a W

Ninguna

Retornar con literal en W

Ninguna

Modo de bajo consumo

TO,PD

Subtraer W del literal

C,DC,Z

X-OR literal con W

You might also like