You are on page 1of 14

ESCUELA SUPERIOR POLITCNICA DE CHIMBORAZO

FACULTAD DE INFORMTICA Y ELECTRNICA


ESCUELA DE INGENIERA ELECTRNICA EN CONTROL Y
REDES INDUSTRIALES
MICROCONTROLADORES
PRCTICA 1
INTEGRANTES:
Gabriela Estrada (668)
Anglica Len (201)
Luis Allauca (359)
Bladimir Rocha (295)
William Caar (591)
CURSO:
Sexto Semestre A
FECHA DE ENTREGA:
19/ 05/ 2014

1

1. JUSTIFICACIN

Actualmente muchos sistemas de equipos requieren de servicios para compartir
recursos, aplicaciones, enlaces de comunicaciones mediante componentes
inteligentes de la red, que se puede conseguir a partir los microcontroladores
PIC, permitiendo la interconexin entre mltiples computadores o dispositivos
de la misma.

Este documento ser una fuente de informacin valiosa para aquellas personas
que necesiten ampliar sus conocimientos acerca de los distintos tipos de
microcontroladores que utilizamos diariamente en nuestra computadora.
Puesto, que se conseguir comprender el funcionamiento, las distintas
caractersticas y facilidades que nos brindan, para desarrollarnos en nuestro
entorno estudiantil, universitario, postgrado, laboral y personal.

2. OBJETIVOS:
General:
Elaborar e implementar un programa con el PIC16F877A que simula una
el barrido de luces efecto ruleta con diodos led los cuales se van
encendiendo a diferentes velocidades controlado con un switch.
Especficos:
Definir los tipos de puertos para la implementacin del PIC.
Identificar los diferentes medios que usa el PIC16F877A.
Lograr una implementacin correcta del proyecto.

3. INTRODUCCIN

Los principiantes en electrnica creen que un microcontrolador es igual a un
microprocesador. Esto no es cierto. Difieren uno del otro en muchos sentidos.
La primera y la ms importante diferencia es su funcionalidad. Para utilizar al
microprocesador en una aplicacin real, se debe de conectar con otros
componentes, en primer lugar con la memoria. Aunque el microprocesador se
considera una mquina de computacin poderosa, no est preparado para la
comunicacin con los dispositivos perifricos que se le conectan. Para que el
microprocesador se comunique con algn perifrico, se deben utilizar los
circuitos especiales. As era en el principio y esta prctica sigue vigente en la
actualidad. Por otro lado, al microcontrolador se le disea de tal manera que
tenga todas las componentes integradas en el mismo chip. No necesita de otros
componentes especializados para su aplicacin, porque todos los circuitos
necesarios, que de otra manera correspondan a los perifricos, ya se
encuentran incorporados. As se ahorra tiempo y espacio necesario para
construir un dispositivo. Cuando el dispositivo finalmente empiece a funcionar
2

perfectamente y todo el mundo est satisfecho, y le paguen por el trabajo que
ha hecho, muchas compaas de desarrollo estarn interesadas en su trabajo.

4. MARCO TERICO:
MICROCONTROLADORES
Un microcontrolador es un circuito integrado programable que contiene todos
los componentes de un computador, aunque de limitadas prestaciones. Se
emplea para controlar el funcionamiento de una tarea determinada y, debido a
su reducido tamao, suele ir incorporado en el propio dispositivo al que
gobierna. Esta ltima caracterstica es la que le confiere la denominacin de
controlador incrustado. Podemos encontrar microcontroladores en lavadoras,
teclados, telfonos mviles, ratones etc. Hay multitud de microcontroladores
con ms memoria, entradas y salidas, frecuencia de trabajo, coste, subsistemas
integrados, etc., dependiendo de cada tipo de microcontrolador. El nombre
actual no es un acrnimo. En realidad, el nombre completo es PICmicro, aunque
generalmente se utiliza como Peripheral Interface Controller (controlador de
interfaz perifrico). Los microcontroladores ofrecen una amplia gama de
aplicaciones y slo algunas se exploran normalmente.


























3

Caractersticas y aplicaciones

Con las Gamas de PIC se dispone de gran diversidad de modelos y
encapsulados, pudiendo seleccionar el que mejor se acople a las necesidades de
acuerdo con el tipo y capacidad de las memorias, el nmero de lneas de
entrada y salida (E/S) y las funciones auxiliares precisas. Sin embargo, todas
las versiones estn construidas alrededor de una arquitectura comn.

Gama Baja: Repertorio de 33 instrucciones de 12 bits y dos niveles de
pila.
Gama Media: Repertorio de 35 instrucciones de 14 bits, 8 niveles de
pila y un vector de interrupcin.
Gama Alta: Repertorio de 58 instrucciones de 16 bits, 16 niveles de pila
y cuatro vectores de interrupcin.
Gama Mejorada: Repertorio de 77 instrucciones de 16 bits, 32 niveles
de pila y cuatro vectores de interrupcin.

La nica limitacin que tienen las aplicaciones de los microcontroladores
actuales est en la imaginacin de los desarrolladores, los campos ms
destacados de los microcontroladores son:
Automatizacin industrial
Medidas y control de procesos
Enseanza e investigacin
Perifricos para computadores
Electrodomsticos
Aparatos porttiles o de bolsillo
Juguetes
Instrumentacin
Electro medicina
Robtica
Domtica
Sistemas de seguridad y alarmas

Programacin del PIC:

La mayora de PICs que Microchip distribuye hoy en da incorporan ICSP (In
Circuit Serial Programming, programacin serie incorporada) o LVP (Low
Voltage Programming, programacin a bajo voltaje), lo que permite programar
el PIC directamente en el circuito destino. Para la ICSP se usan los pines RB6 y
RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o el
RA0 y RA1) como reloj y datos y el MCLR para activar el modo programacin
aplicando un voltaje de 13 voltios.

Existen muchos programadores de PICs, desde los ms simples que dejan al
software los detalles de comunicaciones, a los ms complejos, que pueden
verificar el dispositivo a diversas tensiones de alimentacin e implementan en
4

hardware casi todas las funcionalidades. Muchos de estos programadores
complejos incluyen ellos mismos PICs pre programado como interfaz para
enviar las rdenes al PIC que se desea programar.

MICROCONTROLADOR PIC16F877A

Es un microcontrolador con memoria de programa tipo FLASH, lo que
representa gran facilidad en el desarrollo de prototipos y en su aprendizaje ya
que no se requiere borrarlo con luz ultravioleta como las versiones EPROM, sino
que permite reprogramarlo nuevamente sin ser borrado con anterioridad.

El PIC16F877A es un microcontrolador de Microchip Technology fabricado en
tecnologa CMOS, su consumo de potencia es muy bajo y adems es
completamente esttico, esto quiere decir que el reloj puede detenerse y los
datos de la memoria no se pierden.

Los pines de entrada/salida de este microcontrolador estn organizados en
cinco puertos, el puerto A con 6 lneas, el puerto B con 8 lneas, el puerto C con
8 lneas, el puerto D con 8 lneas y el puerto E con 3 lneas. Cada pin de esos
puertos se puede configurar como entrada o como salida independiente
programando un par de registros diseados para tal fin. En ese registro un bit
en "0" configura el pin del puerto correspondiente como salida y un bit en "1" lo
configura como entrada. Dichos pines del microcontrolador tambin pueden
cumplir otras funciones especiales, siempre y cuando se configuren para ello.

En estos PICs se requiere de un oscilador externo para las prcticas con un
cristal de 4 MHz, porque garantiza precisin y es muy comercial. Internamente
esta frecuencia es dividida por cuatro, lo que hace que la frecuencia efectiva de
trabajo sea de 1 MHz en este caso, por lo que cada instruccin se ejecuta en un
microsegundo. El cristal debe ir acompaado de dos condensadores y se
conecta como se muestra en la figura.


5

5. PRCTICA:
Materiales:
PIC16F877A
XTAL 4 MHz
2 Capacitores de 22pF
16 Leds distintos colores
16 Resistencias 220 ohmios
4 Resistencias 4.7k ohmios
1 Dip switch
Programador Pickit2
Protoboard
Fuente de 5V
Multmetro
Cortadora
Pinzas
Cables de conexin
Simulacin en PROTEUS 7:


RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-/CVREF
4
RA4/T0CKI/C1OUT
6
RA5/AN4/SS/C2OUT
7
RE0/AN5/RD
8
RE1/AN6/WR
9
RE2/AN7/CS
10
OSC1/CLKIN
13
OSC2/CLKOUT
14
RC1/T1OSI/CCP2
16
RC2/CCP1
17
RC3/SCK/SCL
18
RD0/PSP0
19
RD1/PSP1
20
RB7/PGD
40
RB6/PGC
39
RB5
38
RB4
37
RB3/PGM
36
RB2
35
RB1
34
RB0/INT
33
RD7/PSP7
30
RD6/PSP6
29
RD5/PSP5
28
RD4/PSP4
27
RD3/PSP3
22
RD2/PSP2
21
RC7/RX/DT
26
RC6/TX/CK
25
RC5/SDO
24
RC4/SDI/SDA
23
RA3/AN3/VREF+
5
RC0/T1OSO/T1CKI
15
MCLR/Vpp/THV
1
U1
PIC16F877A
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
RN1
220 1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
RN2
220
D1
LED-BLUE
D2
LED-GREEN
D3
LED-RED
D4
LED-YELLOW
D5
LED-BLUE
D6
LED-GREEN
D7
LED-RED
D8
LED-YELLOW
D9
LED-BLUE
D10
LED-GREEN
D11
LED-RED
D12
LED-YELLOW
D13
LED-BLUE
D14
LED-GREEN
D15
LED-RED
D16
LED-YELLOW
1
2
3
4
5
6
7
8
16
15
14
13
12
11
10
9
RN3
4.7k
OFF ON
1
2
3
4
8
7
6
5
DSW1
DIPSW_4
X1
CRYSTAL
C1
22pF
C2
22pF
R1
10k
6

Cdigo:
;RULETA CON DIFERENTES DURACIONES DE PULSOS
;Realizamos en un editor el siguiente listado de programa que llamaremos
;RULETA.ASM
; -------------------------------------------------------

; --------------------------------------------------------
; LIST P=16F877A; Modelo de PIC ; list directive to define processor
#include <p16F877A.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &
_WRT_OFF & _LVP_OFF & _CPD_OFF

reg1 EQU 0X20
reg2 EQU 0X21
reg3 EQU 0X22

ORG 0 ;org coloca el programa en el origen, 0x000 para el 16F877A, Por
aqu es por donde empieza el programa a ejecutarse

; -------------------------------------------------------
; CONFIGURACION DE RECUROS
; --------------------------------------------------------

bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISA
movlw 0X07
movwf ADCON1 ;Deshabilito los comparadores
movlw b'00001111' ;Configuro 4 bits menos significativos del PortA para que sean de entrada
movwf TRISA
bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0

bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISB
movlw 0x00 ;Configuro todo el PortB para que sea de salida
movwf TRISB
bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0

bsf STATUS,RP0 ;Selecciono el Bank 1 para poder acceder a TRISC
movlw 0x00 ;Configuro todo el PortC para que sea de salida
movwf TRISC
bcf STATUS,RP0 ;Selecciono de nuevo el Bank 0

clrf PORTB ;Pongo 0 en todos los bits de PORTB
clrf PORTC ;Pongo 0 en todos los bits de PORTC

; -------------------------------------------------------
; INICIO DE CICLO REPETITIVO
; --------------------------------------------------------

LECTURA
movlw b'00000000'
xorwf PORTA,0 ; verificacin de OPCION respecto a W
btfsc STATUS,Z ; verificando la bandera Z
goto LIMPIAR
7


movlw b'00000001'
xorwf PORTA,0 ; verificacin de OPCION respecto a W
btfsc STATUS,Z ; verificando la bandera Z
goto ACCION1

movlw b'00000010'
xorwf PORTA,0 ; verificacin de OPCION respecto a W
btfsc STATUS,Z ; verificando la bandera Z
goto ACCION2

movlw b'00000100'
xorwf PORTA,0 ; verificacin de OPCION respecto a W
btfsc STATUS,Z ; verificando la bandera Z
goto ACCION3

movlw b'00001000'
xorwf PORTA,0 ; verificacin de OPCION respecto a W
btfsc STATUS,Z ; verificando la bandera Z
goto ACCION4

goto LECTURA

LIMPIAR
clrf PORTB ;Pongo 0 en todos los bits de PORTB
clrf PORTC ;Pongo 0 en todos los bits de PORTC
goto LECTURA

ACCION1 ; Inicio del programa
call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1
call Delay1 ; Demora de 0.5 s
bcf PORTC,7 ; Apaga RC7
bsf PORTB,0 ; Prende RB0
bcf STATUS,0 ; Limpia el carry de STATUS
goto REPETIR1

REPETIR1
MOVPUERTOB1
call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1
call Delay1 ; Demora de 0.5 s
rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda
btfss PORTB,7 ; Hasta que prenda RB7, luego se salta
goto MOVPUERTOB1 ; una linea

call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1
call Delay1 ; Demora de 0.5 s
bcf PORTB,7 ; Apaga RB7
bsf PORTC,0 ; Prende RC0
bcf STATUS,0 ; Limpia el carry de STATUS

MOVPUERTOC1
call COMPRUEBA1 ; Comprueba que esta todavia en la ACCION1
call Delay1 ; Demora de 0.5 s
8

rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda
btfss PORTC,7 ; Hasta que prenda RC7, luego salta
goto MOVPUERTOC1 ; una linea
goto LECTURA ; va a inicio

COMPRUEBA1
btfss PORTA,0
goto LECTURA
return

ACCION2 ; Inicio del programa
call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2
call Delay2 ; Demora de 100 ms
bcf PORTC,7 ; Apaga RC7
bsf PORTB,0 ; Prende RB0
bcf STATUS,0 ; Limpia el carry de STATUS
goto REPETIR2

REPETIR2
MOVPUERTOB2
call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2
call Delay2 ; Demora de 1 s
rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda
calL COMPRUEBA2
btfss PORTB,7 ; Hasta que prenda RB7, luego se salta
goto MOVPUERTOB2 ; una linea

call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2
call Delay2 ; Demora de 1 s
bcf PORTB,7 ; Apaga RB7
bsf PORTC,0 ; Prende RC0
bcf STATUS,0 ; Limpia el carry de STATUS

MOVPUERTOC2
call COMPRUEBA2 ; Comprueba que esta todavia en la ACCION2
call Delay2 ; Demora de 1 s
rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda
btfss PORTC,7 ; Hasta que prenda RC7, luego salta
goto MOVPUERTOC2 ; una linea
goto LECTURA ; va a inicio

COMPRUEBA2
btfss PORTA,1
goto LECTURA
return

ACCION3 ; Inicio del programa
call COMPRUEBA3 ; Comprueba que esta todavia en la ACCION3
call Delay3 ; Demora de 3 s
bcf PORTC,7 ; Apaga RC7
bsf PORTB,0 ; Prende RB0
bcf STATUS,0 ; Limpia el carry de STATUS
goto REPETIR3
9


REPETIR3
MOVPUERTOB3
call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3
call Delay3 ; Demora de 3 s
rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda
btfss PORTB,7 ; Hasta que prenda RB7, luego se salta
goto MOVPUERTOB3 ; una lnea

call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3
call Delay3 ; Demora de 3 s
bcf PORTB,7 ; Apaga RB7
bsf PORTC,0 ; Prende RC0
bcf STATUS,0 ; Limpia el carry de STATUS

MOVPUERTOC3
call COMPRUEBA3 ; Comprueba que esta todava en la ACCION3
call Delay3 ; Demora de 3 s
rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda
btfss PORTC,7 ; Hasta que prenda RC7, luego salta
goto MOVPUERTOC3 ; una linea
goto LECTURA ; va a inicio

COMPRUEBA3
btfss PORTA,2
goto LECTURA
return

ACCION4 ; Inicio del programa
call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4
call Delay4 ; Demora de 5 s
bcf PORTC,7 ; Apaga RC7
bsf PORTB,0 ; Prende RB0
bcf STATUS,0 ; Limpia el carry de STATUS
goto REPETIR4

REPETIR4
MOVPUERTOB4
call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4
call Delay4 ; Demora de 5 s
rlf PORTB,1 ; Rota el contenido de PORTB a la izquierda
btfss PORTB,7 ; Hasta que prenda RB7, luego se salta
goto MOVPUERTOB4 ; una linea

call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4
call Delay4 ; Demora de 5 s
bcf PORTB,7 ; Apaga RB7
bsf PORTC,0 ; Prende RC0
bcf STATUS,0 ; Limpia el carry de STATUS

MOVPUERTOC4
call COMPRUEBA4 ; Comprueba que esta todavia en la ACCION4
call Delay4 ; Demora de 5 s
10

rlf PORTC,1 ; Rota el contenido de PORTC a la izquierda
call COMPRUEBA4
btfss PORTC,7 ; Hasta que prenda RC7, luego salta
goto MOVPUERTOC4 ; una linea
goto LECTURA ; va a inicio

COMPRUEBA4
btfss PORTA,3
goto LECTURA
return

; -------------------------------------------------------
;SUBRUTINA DELAY DE LAS SECUENCIAS
; --------------------------------------------------------

Delay1 movlw 0xEF ;Espero 0.5 s (Para un reloj de 4 MHz)
movwf reg1
dos1 movlw 0xE8
movwf reg2
uno1 clrwdt
dem11 goto dem12
dem12 goto dem13
dem13 clrwdt
decfsz reg2,f
goto uno1
decfsz reg1,f
goto dos1
dem14 goto dem15
dem15 goto dem16
dem16 goto dem17
dem17 clrwdt
return

Delay2 movlw 0x0E ;Espero 1 s (Para un reloj de 4 MHz)
movwf reg1
tres2 movlw 0x48
movwf reg2
dos2 movlw 0xF7
movwf reg3
uno2 clrwdt
decfsz reg3,f
goto uno2
decfsz reg2,f
goto dos2
decfsz reg1,f
goto tres2
dem21 goto dem22
dem22 clrwdt
return

Delay3 movlw 0x43 ;Espero 3 s (Para un reloj de 4 MHz)
movwf reg1
tres3 movlw 0x5B
11

movwf reg2
dos3 movlw 0x7A
movwf reg3
uno3 clrwdt
decfsz reg3,f
goto uno3
decfsz reg2,f
goto dos3
decfsz reg1,f
goto tres3
dem31 goto dem32
dem32 clrwdt
return

Delay4 movlw 0xA5 ;Espero 5 s (Para un reloj de 4 MHz)
movwf reg1
tres4 movlw 0x29
movwf reg2
dos4 movlw 0x93
movwf reg3
uno4 clrwdt
clrwdt
decfsz reg3,f
goto uno4
decfsz reg2,f
goto dos4
decfsz reg1,f
goto tres4
return

end

6. CONCLUSIONES:

El programa MPLAB es una herramienta muy importante para la realizacin de
los programas.
La programacin es un factor importante para la correcta funcin del circuito.
El PIC16F877A posee 5 puertos (A, B, C, D y E) tiles al momento de la
realizacin del proyecto ya que pueden ser usados como entradas o salidas.
Los retardos programados en la ejecucin del programa dependen directamente
del nmero de ciclo de mquina que efectu la subrutina delay.
La palabra de configuracin al momento de quemar el PIC es muy importante
ya que de esto depende su correcto funcionamiento.

7. RECOMENDACIN:

Se debe tener cuidado al manipulas el PIC ya que este se puede daar por ser
de tecnologa CMOS.
Al momento de la alimentacin debemos estar seguros de proporcionar al
circuito el voltaje adecuado 5 voltios para su funcionamiento.
12

Verificar que el MCLR no este activado para as poder evitar que el PIC se
resetee a cada momento; esto se evita conectndolo a Vdd.

8. WEBGRAFA:

- http://es.wikipedia.org/wiki/Microcontrolador_PIC
- http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los
microcontroladores/
- http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf

9. ANEXOS




















13

You might also like