Upload
independent
View
1
Download
0
Embed Size (px)
Citation preview
Proyecto finalIntegrantes de equipo P:
Rojo Medina Luis Edgar Mascareño Zazueta Carlos Alfonso
Materia: Arquitectura de Computadoras
Profesor: Alejandro Seleme
Carrera: Ingeniería en Tecnologías de laInformación y Comunicaciones
Universidad: Instituto Tecnológico de Culiacán
Fecha: 27 de Noviembre del 2014
Índice: pag
1. Introducción………………………………………..32. Objetivos…………………………………………..3
3. Materiales………………………………………….34. Practica (desarrollo y resultado)……………4,5
5. Conclusiones……………………………………66. Bibliografia……………………………………….6
Introducción:
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 específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.El PIC16F84 es un microcontrolador a 8 bits de la familia PIC perteneciente a la Gama Media (según la clasificación dada a los microcontroladores por la misma empresa fabricante) Microchip.Se trata de uno de los microcontroladores más populares del mercado actual, ideal para principiantes, debido a su arquitecturade 8 bits, 18 pines, y un conjunto de instrucciones RISC muy amigable para memorizar y fácil de entender
Objetivos:-Montar un circuito en el protoboard conformado principalmente porel 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 mínimo. 1 Software de simulación Proteus versión 6.9 mínimo
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 cerámicos de 33p. Protoboard. Cable Telefonico (UTP).
Desarrollo:
1. Primero Adquirimos los Componentes necesarios para la Realización del Proyecto.
2. Antes de Comenzar a colocar los componentes en el protoboard , Diseñamos el Circuito en el Programa de simulación PROTEUS, basándonos en el circuito de laTarea 5.
3. Ya Teniendo el Circuito Diseñado, 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 programaal 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 las5 formas de entrada.
Codigo del Programa
; InicoR0L EQU 0xCR0H EQU 0xDR1L EQU 0xER1H EQU 0xFR2L EQU 0x10R2H EQU 0x11R3L EQU 0x12R3H EQU 0x13R4L EQU 0x14R4H EQU 0x15R5L EQU 0x16R5H EQU 0x17ORG 0x0000BCF PCLATH,3BCF PCLATH,4GOTO L0002ORG 0x0004RETFIE
L0002:; 1: AllDigital; 2: TRISA = %11111111
BSF STATUS,RP0MOVLW 0xFFMOVWF 0x05
; 3: TRISB = %00000000
CLRF 0x06BCF 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,0GOTO L0003
; 9: For veces = 0 To 2CLRF 0x1A
L0004:MOVF 0x1A,WSUBLW 0x02BTFSS STATUS,CGOTO L0005
; 10: For digito = 0 To 9CLRF 0x19
L0006:MOVF 0x19,WSUBLW 0x09BTFSS STATUS,CGOTO L0007
; 11: PORTB = LookUp(0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff), digito
MOVF 0x19,WSUBLW 0x08BTFSS STATUS,CGOTO L0008CALL L0009MOVWF 0x06GOTO L0008
L0009:MOVLW 0x00MOVWF PCLATHMOVF 0x19,WADDWF PCL,FRETLW 0x00RETLW 0x01RETLW 0x03
RETLW 0x07RETLW 0x0FRETLW 0x1FRETLW 0x3FRETLW 0x7FRETLW 0xFF
L0008:; 12: WaitMs 75
MOVLW 0x4BMOVWF R0LCLRF R0HCALL W001
; 13: Next digitoMOVLW 0x01ADDWF 0x19,FBTFSS STATUS,CGOTO L0006
L0007: MOVLW 0x1FANDWF STATUS,F
; 14: Next vecesMOVLW 0x01ADDWF 0x1A,FBTFSS STATUS,CGOTO L0004
L0005: MOVLW 0x1FANDWF STATUS,F
; 15: EndifL0003: MOVLW 0x1F
ANDWF STATUS,F; 16: If PORTA.1 = 1 Then
BTFSS 0x05,1GOTO L0010
; 17: For veces = 0 To 2CLRF 0x1A
L0011:MOVF 0x1A,WSUBLW 0x02BTFSS STATUS,CGOTO L0012
; 18: For digito = 0 To 9CLRF 0x19
L0013:MOVF 0x19,WSUBLW 0x09BTFSS STATUS,CGOTO L0014
; 19: PORTB = LookUp(0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff), digito
MOVF 0x19,WSUBLW 0x08BTFSS STATUS,CGOTO L0015CALL L0016MOVWF 0x06GOTO L0015
L0016:MOVLW 0x00MOVWF PCLATHMOVF 0x19,WADDWF PCL,FRETLW 0x00RETLW 0x80RETLW 0xC0RETLW 0xE0RETLW 0xF0RETLW 0xF8RETLW 0xFCRETLW 0xFERETLW 0xFF
L0015:; 20: WaitMs 75
MOVLW 0x4BMOVWF R0LCLRF R0HCALL W001
; 21: Next digitoMOVLW 0x01ADDWF 0x19,FBTFSS STATUS,CGOTO L0013
L0014: MOVLW 0x1FANDWF STATUS,F
; 22: Next vecesMOVLW 0x01ADDWF 0x1A,FBTFSS STATUS,CGOTO L0011
L0012: MOVLW 0x1FANDWF STATUS,F
; 23: EndifL0010: MOVLW 0x1F
ANDWF STATUS,F; 24:
; 25: If PORTA.2 = 1 ThenBTFSS 0x05,2GOTO L0017
; 26: For veces = 0 To 2CLRF 0x1A
L0018:MOVF 0x1A,WSUBLW 0x02BTFSS STATUS,CGOTO L0019
; 27: For digito = 0 To 9CLRF 0x19
L0020:MOVF 0x19,WSUBLW 0x09BTFSS STATUS,CGOTO L0021
; 28: PORTB = LookUp(0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80), digito
MOVF 0x19,WSUBLW 0x08BTFSS STATUS,CGOTO L0022CALL L0023MOVWF 0x06GOTO L0022
L0023:MOVLW 0x00MOVWF PCLATHMOVF 0x19,WADDWF PCL,FRETLW 0x00RETLW 0x01RETLW 0x02RETLW 0x04RETLW 0x08RETLW 0x10RETLW 0x20RETLW 0x40RETLW 0x80
L0022:; 29: WaitMs 75
MOVLW 0x4BMOVWF R0LCLRF R0HCALL W001
; 30: Next digito
MOVLW 0x01ADDWF 0x19,FBTFSS STATUS,CGOTO L0020
L0021: MOVLW 0x1FANDWF STATUS,F
; 31: Next vecesMOVLW 0x01ADDWF 0x1A,FBTFSS STATUS,CGOTO L0018
L0019: MOVLW 0x1FANDWF STATUS,F
; 32: EndifL0017: MOVLW 0x1F
ANDWF STATUS,F; 33: If PORTA.3 = 1 Then
BTFSS 0x05,3GOTO L0024
; 34: For veces = 0 To 2CLRF 0x1A
L0025:MOVF 0x1A,WSUBLW 0x02BTFSS STATUS,CGOTO L0026
; 35: For digito = 0 To 9CLRF 0x19
L0027:MOVF 0x19,WSUBLW 0x09BTFSS STATUS,CGOTO L0028
; 36: PORTB = LookUp(0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01), digito
MOVF 0x19,WSUBLW 0x08BTFSS STATUS,CGOTO L0029CALL L0030MOVWF 0x06GOTO L0029
L0030:MOVLW 0x00MOVWF PCLATHMOVF 0x19,WADDWF PCL,F
RETLW 0x00RETLW 0x80RETLW 0x40RETLW 0x20RETLW 0x10RETLW 0x08RETLW 0x04RETLW 0x02RETLW 0x01
L0029:; 37: WaitMs 75
MOVLW 0x4BMOVWF R0LCLRF R0HCALL W001
; 38: Next digitoMOVLW 0x01ADDWF 0x19,FBTFSS STATUS,CGOTO L0027
L0028: MOVLW 0x1FANDWF STATUS,F
; 39: Next vecesMOVLW 0x01ADDWF 0x1A,FBTFSS STATUS,CGOTO L0025
L0026: MOVLW 0x1FANDWF STATUS,F
; 40: EndifL0024: MOVLW 0x1F
ANDWF STATUS,F; 41: If PORTA.4 = 1 Then
BTFSS 0x05,4GOTO L0031
; 42: For veces = 0 To 2CLRF 0x1A
L0032:MOVF 0x1A,WSUBLW 0x02BTFSS STATUS,CGOTO L0033
; 43: For digito = 0 To 8CLRF 0x19
L0034:MOVF 0x19,WSUBLW 0x08
BTFSS STATUS,CGOTO L0035
; 44: PORTB = LookUp(0x00, 0x81, 0x42, 0x24, 0x18, 0x24, 0x42, 0x81), digito
MOVF 0x19,WSUBLW 0x07BTFSS STATUS,CGOTO L0036CALL L0037MOVWF 0x06GOTO L0036
L0037:MOVLW 0x00MOVWF PCLATHMOVF 0x19,WADDWF PCL,FRETLW 0x00RETLW 0x81RETLW 0x42RETLW 0x24RETLW 0x18RETLW 0x24RETLW 0x42RETLW 0x81
L0036:; 45: WaitMs 75
MOVLW 0x4BMOVWF R0LCLRF R0HCALL W001
; 46: Next digitoMOVLW 0x01ADDWF 0x19,FBTFSS STATUS,CGOTO L0034
L0035: MOVLW 0x1FANDWF STATUS,F
; 47: Next vecesMOVLW 0x01ADDWF 0x1A,FBTFSS STATUS,CGOTO L0032
L0033: MOVLW 0x1FANDWF STATUS,F
; 48: EndifL0031: MOVLW 0x1F
ANDWF STATUS,F
; 49: PORTB = 0CLRF 0x06
; 50: Goto loopGOTO L0001
; End of programL0038: GOTO L0038; Waitms RoutineW001: MOVF R0L,F
BTFSC STATUS,ZGOTO W002CALL W003DECF R0L,FNOPNOPNOPNOPNOPGOTO W001
W002: MOVF R0H,FBTFSC STATUS,ZRETURNCALL W003DECF R0H,FDECF R0L,FGOTO W001
W003: MOVLW 0x0CMOVWF R2H
W004: DECFSZ R2H,FGOTO W004NOPNOPMOVLW 0x12MOVWF R1L
W005: DECFSZ R1L,FGOTO W006CALL W007CALL W007NOPNOPRETURN
W006: CALL W007GOTO W005
W007: MOVLW 0x0DMOVWF R2L
W008: DECFSZ R2L,FGOTO W008NOP
Conclusiones:En conclusión los Microcontroladores (PIC) son muy importantes para que los aparatos electrónicos que nos rodean cotidianamente en nuestra vida actual como las computadoras, los celulares, radios, estéreos, tabletas, cañones, etc. Tengan un correcto funcionamiento y gracias a este proyecto nos dimos cuenta cómo es que funcionan.
Bibliografía:
http://es.wikipedia.org/wiki/Microcontrolador