Vous êtes sur la page 1sur 26

Proyecto final

Integrantes de equipo P:
Rojo Medina Luis Edgar
Mascareo Zazueta Carlos Alfonso
Materia: Arquitectura de Computadoras
Profesor: Alejandro Seleme
Carrera: Ingeniera en Tecnologas de la Informacin y
Comunicaciones
Universidad: Instituto Tecnolgico de Culiacn
Fecha: 27 de Noviembre del 2014

ndice:
pag
1. Introduccin..3
2. Objetivos..3

3. Materiales.3
4. Practica (desarrollo y resultado)4,5

5. Conclusiones6
6. Bibliografia.6

Introduccin:
Un microcontrolador (abreviado C, UC o MCU) es un circuito integrado programable,
capaz de ejecutar las rdenes grabadas en su memoria. Est compuesto de varios

bloques funcionales, los cuales cumplen una tarea especfica. Un microcontrolador incluye
en su interior las tres principales unidades funcionales de una computadora: unidad
central de procesamiento, memoria y perifricos de entrada/salida.
El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama
Media (segn la clasificacin dada a los microcontroladores por la misma empresa
fabricante) Microchip.
Se trata de uno de los microcontroladores ms populares del mercado actual, ideal para
principiantes, debido a su arquitectura de 8 bits, 18 pines, y un conjunto de instrucciones
RISC muy amigable para memorizar y fcil de entender

Objetivos:
-Montar un circuito en el protoboard conformado principalmente por el microcontrolador
(PIC) 16F84A, un cristal de cuarzo como oscilador y dos capacitores conectados al cristal.
-Programar el Microcontrolador (PIC) 16F84A en Ensamblador para lograr que el Circuito
logre hacer 5 tipos de secuencias en 8 LEDs, Cada secuencia estar programado para
una entrada del PIC (Patas 1, 2, 3, 17, 18).

Materiales:

1 Computadora Pentium III, 0.8 GHz con 0.5 GB de RAM mnimo.


1 Software de simulacin Proteus versin 6.9 mnimo instalado.
1 Software de Desarrollo MPLAB IDE MR Ver. 8.00.00.00 o Superior.
1 Placa de Protoboard.
PIC 16F84A.

8 LEDs.
5 Pulsadores.
1 Cristal de Cuarzo de 4 mhz.
2 capacitores cermicos de 33p.
Protoboard.
Cable Telefonico (UTP).

Desarrollo:
1. Primero Adquirimos los Componentes necesarios para la Realizacin del Proyecto.
2. Antes de Comenzar a colocar los componentes en el protoboard , Diseamos el
Circuito en el Programa de simulacin PROTEUS, basndonos en el circuito de la
Tarea 5.

3. Ya Teniendo el Circuito Diseado, Empezamos a Desarrollar el Programa con la


herramienta MPLAB en el Lenguaje Ensamblador.
4. Creamos un nuevo proyecto y luego lo guardamos como proyectofinal.asm

5. Comenzamos con el Desarrollo del Programa.


6. Ya que terminamos de Desarrollar el Programa, seleccionamos el componente que
vamos a programar en este caso ser el PIC16F84A. Para hacer eso nos vamos a
Configure, Select Device y por ultimo seleccionamos el PIC16F84A.
7. Y para compilarlo nos vamos a Project y luego le damos a Quickbuild
proyectofinal.asm, el cual nos creara el archivo proyectofinal.HEX que
necesitaremos para programar el PIC.
8. Ya que esta compilado, nos vamos a nuestro circuito en proteus y le damos doble
click al PIC16F84A, le damos click en program file y all buscamos nuestro
programa proyectofinal.HEX, lo seleccionamos y le cargamos el programa al
Microcontrolador.
9. Lo Ejecutamos y observamos que nuestro programa hace las 5 secuencias con las
5 entradas que le programamos.
10. Ya Asegurados que el Programa Funciona Correctamente, Empezamos el Montaje
del Circuito en el Protoboard.
11. Ya teniendo todos los componentes Correctamente Conectados, Procedimos a
Solicitar el apoyo de nuestro profesor para que con la ayuda de una placa
programadora nos grabara nuestro programa en el PIC16F84A.
12. Colocamos el PIC16F84A en nuestro protoboard y conectamos el circuito a una
fuenta regulada de 5V, y nuestras 5 secuencias de LED funcionaron correctamente
en las 5 formas de entrada.

Codigo del Programa

; Inico
R0L EQU 0xC
R0H EQU 0xD
R1L EQU 0xE
R1H EQU 0xF
R2L EQU 0x10
R2H EQU 0x11
R3L EQU 0x12
R3H EQU 0x13
R4L EQU 0x14
R4H EQU 0x15
R5L EQU 0x16
R5H EQU 0x17
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO L0002
ORG 0x0004
RETFIE
L0002:
; 1: AllDigital
; 2: TRISA = %11111111
BSF STATUS,RP0

MOVLW 0xFF
MOVWF 0x05
; 3: TRISB = %00000000
CLRF 0x06
BCF STATUS,RP0
; 4: Dim mascara As Byte
;

The address of 'mascara' is 0x18


mascara EQU 0x18

; 5: Dim digito As Byte


;

The address of 'digito' is 0x19


digito EQU 0x19

; 6: Dim veces As Byte


;

The address of 'veces' is 0x1A


veces EQU 0x1A

; 7: loop:
L0001:
; 8: If PORTA.0 = 1 Then
BTFSS 0x05,0
GOTO L0003
; 9: For veces = 0 To 2
CLRF 0x1A
L0004:
MOVF 0x1A,W
SUBLW 0x02

BTFSS STATUS,C
GOTO L0005
; 10: For digito = 0 To 9
CLRF 0x19
L0006:
MOVF 0x19,W
SUBLW 0x09
BTFSS STATUS,C
GOTO L0007
; 11: PORTB = LookUp(0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff), digito
MOVF 0x19,W
SUBLW 0x08
BTFSS STATUS,C
GOTO L0008
CALL L0009
MOVWF 0x06
GOTO L0008
L0009:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x19,W
ADDWF PCL,F
RETLW 0x00
RETLW 0x01

RETLW 0x03
RETLW 0x07
RETLW 0x0F
RETLW 0x1F
RETLW 0x3F
RETLW 0x7F
RETLW 0xFF
L0008:
; 12: WaitMs 75
MOVLW 0x4B
MOVWF R0L
CLRF R0H
CALL W001
; 13: Next digito
MOVLW 0x01
ADDWF 0x19,F
BTFSS STATUS,C
GOTO L0006
L0007: MOVLW 0x1F
ANDWF STATUS,F
; 14: Next veces
MOVLW 0x01
ADDWF 0x1A,F
BTFSS STATUS,C

GOTO L0004
L0005: MOVLW 0x1F
ANDWF STATUS,F
; 15: Endif
L0003: MOVLW 0x1F
ANDWF STATUS,F
; 16: If PORTA.1 = 1 Then
BTFSS 0x05,1
GOTO L0010
; 17: For veces = 0 To 2
CLRF 0x1A
L0011:
MOVF 0x1A,W
SUBLW 0x02
BTFSS STATUS,C
GOTO L0012
; 18: For digito = 0 To 9
CLRF 0x19
L0013:
MOVF 0x19,W
SUBLW 0x09
BTFSS STATUS,C
GOTO L0014
; 19: PORTB = LookUp(0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff), digito

MOVF 0x19,W
SUBLW 0x08
BTFSS STATUS,C
GOTO L0015
CALL L0016
MOVWF 0x06
GOTO L0015
L0016:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x19,W
ADDWF PCL,F
RETLW 0x00
RETLW 0x80
RETLW 0xC0
RETLW 0xE0
RETLW 0xF0
RETLW 0xF8
RETLW 0xFC
RETLW 0xFE
RETLW 0xFF
L0015:
; 20: WaitMs 75
MOVLW 0x4B

MOVWF R0L
CLRF R0H
CALL W001
; 21: Next digito
MOVLW 0x01
ADDWF 0x19,F
BTFSS STATUS,C
GOTO L0013
L0014: MOVLW 0x1F
ANDWF STATUS,F
; 22: Next veces
MOVLW 0x01
ADDWF 0x1A,F
BTFSS STATUS,C
GOTO L0011
L0012: MOVLW 0x1F
ANDWF STATUS,F
; 23: Endif
L0010: MOVLW 0x1F
ANDWF STATUS,F
; 24:
; 25: If PORTA.2 = 1 Then
BTFSS 0x05,2
GOTO L0017

; 26: For veces = 0 To 2


CLRF 0x1A
L0018:
MOVF 0x1A,W
SUBLW 0x02
BTFSS STATUS,C
GOTO L0019
; 27: For digito = 0 To 9
CLRF 0x19
L0020:
MOVF 0x19,W
SUBLW 0x09
BTFSS STATUS,C
GOTO L0021
; 28: PORTB = LookUp(0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80), digito
MOVF 0x19,W
SUBLW 0x08
BTFSS STATUS,C
GOTO L0022
CALL L0023
MOVWF 0x06
GOTO L0022
L0023:
MOVLW 0x00

MOVWF PCLATH
MOVF 0x19,W
ADDWF PCL,F
RETLW 0x00
RETLW 0x01
RETLW 0x02
RETLW 0x04
RETLW 0x08
RETLW 0x10
RETLW 0x20
RETLW 0x40
RETLW 0x80
L0022:
; 29: WaitMs 75
MOVLW 0x4B
MOVWF R0L
CLRF R0H
CALL W001
; 30: Next digito
MOVLW 0x01
ADDWF 0x19,F
BTFSS STATUS,C
GOTO L0020
L0021: MOVLW 0x1F

ANDWF STATUS,F
; 31: Next veces
MOVLW 0x01
ADDWF 0x1A,F
BTFSS STATUS,C
GOTO L0018
L0019: MOVLW 0x1F
ANDWF STATUS,F
; 32: Endif
L0017: MOVLW 0x1F
ANDWF STATUS,F
; 33: If PORTA.3 = 1 Then
BTFSS 0x05,3
GOTO L0024
; 34: For veces = 0 To 2
CLRF 0x1A
L0025:
MOVF 0x1A,W
SUBLW 0x02
BTFSS STATUS,C
GOTO L0026
; 35: For digito = 0 To 9
CLRF 0x19
L0027:

MOVF 0x19,W
SUBLW 0x09
BTFSS STATUS,C
GOTO L0028
; 36: PORTB = LookUp(0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01), digito
MOVF 0x19,W
SUBLW 0x08
BTFSS STATUS,C
GOTO L0029
CALL L0030
MOVWF 0x06
GOTO L0029
L0030:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x19,W
ADDWF PCL,F
RETLW 0x00
RETLW 0x80
RETLW 0x40
RETLW 0x20
RETLW 0x10
RETLW 0x08
RETLW 0x04

RETLW 0x02
RETLW 0x01
L0029:
; 37: WaitMs 75
MOVLW 0x4B
MOVWF R0L
CLRF R0H
CALL W001
; 38: Next digito
MOVLW 0x01
ADDWF 0x19,F
BTFSS STATUS,C
GOTO L0027
L0028: MOVLW 0x1F
ANDWF STATUS,F
; 39: Next veces
MOVLW 0x01
ADDWF 0x1A,F
BTFSS STATUS,C
GOTO L0025
L0026: MOVLW 0x1F
ANDWF STATUS,F
; 40: Endif
L0024: MOVLW 0x1F

ANDWF STATUS,F
; 41: If PORTA.4 = 1 Then
BTFSS 0x05,4
GOTO L0031
; 42: For veces = 0 To 2
CLRF 0x1A
L0032:
MOVF 0x1A,W
SUBLW 0x02
BTFSS STATUS,C
GOTO L0033
; 43: For digito = 0 To 8
CLRF 0x19
L0034:
MOVF 0x19,W
SUBLW 0x08
BTFSS STATUS,C
GOTO L0035
; 44: PORTB = LookUp(0x00, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81), digito
MOVF 0x19,W
SUBLW 0x07
BTFSS STATUS,C
GOTO L0036
CALL L0037

MOVWF 0x06
GOTO L0036
L0037:
MOVLW 0x00
MOVWF PCLATH
MOVF 0x19,W
ADDWF PCL,F
RETLW 0x00
RETLW 0x81
RETLW 0x42
RETLW 0x24
RETLW 0x18
RETLW 0x24
RETLW 0x42
RETLW 0x81
L0036:
; 45: WaitMs 75
MOVLW 0x4B
MOVWF R0L
CLRF R0H
CALL W001
; 46: Next digito
MOVLW 0x01
ADDWF 0x19,F

BTFSS STATUS,C
GOTO L0034
L0035: MOVLW 0x1F
ANDWF STATUS,F
; 47: Next veces
MOVLW 0x01
ADDWF 0x1A,F
BTFSS STATUS,C
GOTO L0032
L0033: MOVLW 0x1F
ANDWF STATUS,F
; 48: Endif
L0031: MOVLW 0x1F
ANDWF STATUS,F
; 49: PORTB = 0
CLRF 0x06
; 50: Goto loop
GOTO L0001
; End of program
L0038: GOTO L0038
; Waitms Routine
W001: MOVF R0L,F
BTFSC STATUS,Z
GOTO W002

CALL W003
DECF R0L,F
NOP
NOP
NOP
NOP
NOP
GOTO W001
W002: MOVF R0H,F
BTFSC STATUS,Z
RETURN
CALL W003
DECF R0H,F
DECF R0L,F
GOTO W001
W003: MOVLW 0x0C
MOVWF R2H
W004: DECFSZ R2H,F
GOTO W004
NOP
NOP
MOVLW 0x12
MOVWF R1L
W005: DECFSZ R1L,F

GOTO W006
CALL W007
CALL W007
NOP
NOP
RETURN
W006: CALL W007
GOTO W005
W007: MOVLW 0x0D
MOVWF R2L
W008: DECFSZ R2L,F
GOTO W008
NOP
RETURN
; Fin
END

Proyecto realizado en Protoboard.

Conclusiones:
En conclusin los Microcontroladores (PIC) son muy importantes para que los
aparatos electrnicos que nos rodean cotidianamente en nuestra vida actual
como las computadoras, los celulares, radios, estreos, tabletas, caones, etc.
Tengan un correcto funcionamiento y gracias a este proyecto nos dimos cuenta
cmo es que funcionan.
Bibliografa:

http://es.wikipedia.org/wiki/Microcontrolador

Vous aimerez peut-être aussi