Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CARRILLO ABRIGO CLAUDIA VARGAS MORI, CARLOS VERA PORTOCARRERO RENZO GUERRERO SUAREZ SANDRA CASTRO ITA MARTN CASAS CHVEZ CARLOS SALAS OSORIO, WILLY
DOCENTE: OSCAR NUEZ MORI
El presente trabajo est dedicado a todos los autores que nos han ayudado en nuestro trabajo de investigacin
proporcionndonos informacin precisa y detallada que nos permiti terminar de manera satisfactoria nuestro trabajo.
TABLA DE CONTENIDO
INTRODUCCIN...............................................................................................................4 PIC 16F84DE MICROCHIP ...............................................................................................5 Qu es un microcontrolador? ......................................................................................6 Estructura del PIC 16F84 ..............................................................................................7 ........................................................................................................................................8 Caractersticas de la PIC 16F84 ....................................................................................9 Alimentacin ...............................................................................................................9 Frecuencia de trabajo .................................................................................................9 Circuitera Bsica ..................................................................................................... 10 Puertos de Entrada y Salida .................................................................................... 10 Memoria .................................................................................................................... 11 Registros de propsito general .................................................................................... 14 Registros de Funciones Especiales (SFR).................................................................. 15 Cmo utilizar los registros SFR? ........................................................................... 16 Bancos de la memoria RAM ........................................................................................ 17 Sistema de Interrupciones ........................................................................................... 18 Lenguaje ASSEMBLER ............................................................................................... 19 Ventajas .................................................................................................................... 20 Desventajas .............................................................................................................. 21 Programacin en ensamblador PIC 16F84 ............................................................. 24 Aplicaciones bsicas en Assembler......................................................................... 26 Compilaremos con el MPASM ................................................................................. 27 Comandos Bsicos................................................................................................... 27 TRABAJOS CITADOS..................................................................................................... 28
INTRODUCCIN
En este documento hablaremos de las caractersticas del micro controlador PIC16F84. Este micro controlador es creado por la compaa PIC16f84. Adems veremos cmo se programa. Que aplicaciones tiene, o que podemos hacer con l. 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.
Qu es un microcontrolador?
Un microcontrolador, es un circuito integrado programable que contiene los elementos necesarios para controlar un sistema. PIC significa Peripheral Interface Controler es decir un controlador de perifricos. Cuando hablamos de un circuito integrado programable que controla perifricos, estamos hablando de un sistema que contiene entre otras cosas una unidad aritmtico-lgica, unas memorias de datos y programas, unos puertos de entrada y salida, es decir estamos hablando de un pequeo ordenador diseado para realizar unas funciones especficas (Serra)1. 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 y un largo etc. dependiendo de cada tipo de microcontrolador . (Serra)El presente documento est basado en el popular microcontrolador PIC 16F84 del fabricante Microchip TechnologyInc ya que es un sistema sencillo, barato y potente para muchas aplicaciones electrnicas.
Los microcontroladores se conocen tambin como microcomputadoras ya que en su interior poseen todos los elementos de una computadora como: Una CPU Un medio de almacenamiento para guardar el programa Una memoria RAM para almacenar variables Una serie de LINEAS de E/S para controlar dispositivos externos o datos de sensores. Y otros como un reloj, buses, contadores y otros registros de utilidad El tener todos estos recursos en un solo chip hace ventajoso el uso de este dispositivo ya que en poco tiempo y con pocos componentes podemos hacer lo que sera trabajoso hacer con circuitos tradicionales . (Calcena)2
3 4
Fig. 4
PIC16F84 (Calcena)5
Como se puede ver, el PIC16F84 est dotado de un total de 18 pines dispuestos en dos hileras paralelas de 9 pines cada una. Los pines con flechas amarillas son las lneas de E/S (Entrada/Salida) disponibles para nuestra aplicacin, los RA son del puerto A y los que dicen RB son del puerto B Los pines con flechas rojas son los pines de alimentacin, Los verdes son reservados para el funcionamiento del reloj del PIC. Y el MCLR para el reset.
Algunas caractersticas ms representativas son: 1Kbyte de memoria EEPROM para nuestro programa 68 bytes (de 8 bits) de memoria RAM 64 bytes de memoria EEPROM para datos Solo 35 instrucciones 13 pines de entrada/salida (un puerto de 8 bits + otro de 5 bits) Timer/contador de 8 bits
Fuente: http://www.robotpy.com/images/stories/PIC16F84.gif
Frecuencia de trabajo
Los PICs 16F84 necesitan de un reloj oscilador que marcar la frecuencia de trabajo. Estos osciladores pueden ser del tipo: RC formado por una resistencia y un condensador, HS: se utiliza un cristal de cuarzo o resonador cermico (hasta 10 MHz), XT: cristal o resonador (hasta 4 MHz), LP: bajo consumo (hasta 200 KHz). Los osciladores se colocan entre las patillas OSC1 y OSC2.
6 7
Circuitera Bsica
El PIC se compone de los siguientes elementos que son claves para el PIC pueda funcionar:
R1: Resistencia 100 R2: Resistencia 10k C1 y C2: Condensadores cermicos D1: Diodo 1N4148 XTAL: Cristal de cuarzo 4 MHz SW1: Pulsador NA
8 9
Memoria
Todos los programas necesitan de una memoria para su funcionamiento, en el caso de la PIC 16F84 se ocupa una memoria de tipo flash de 1 Kb (1024 posiciones) lo que permite una grabacin sencilla, y cmoda, y no voltil. y est organizada en palabras de 14 bits, as, la memoria del programa comienza en la posicin 000h (posicin inicial de reset) y llega hasta la 3FFh. Admite hasta 1000 grabaciones, y el fabricante garantiza que la informacin permanece hasta decenas de aos. Resumiendo: se pueden encontrar en un PIC 16F84 las siguientes caractersticas:
-salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el puerto B). ).
versiones). La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un reloj de 20Mhz, el reloj interno sera de 5Mhz y as pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS) -analgicos.
Tipos de M emoria
10
Fuente: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
MEMORIA DE PROGRAMA
En el PIC 16F84 la memoria de programa o de instrucciones es una memoria tipo FLASH de 1K En esta memoria almacenaremos el programa que ejecutar el microcontrolador. Existe un registro especial llamado contador de programa PC cuya finalidad es avanzar por las instrucciones del programa de forma secuencial excepto cuando se encuentran instrucciones de salto.
11
Fuente: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
MEMORIA DE DATOS
La memoria de datos sirve para almacenar variables, leer puertos de entrada o escribir en los puertos de salida, podemos tambin acceder al temporizador o al registro EEPROM La memoria de datos en el PIC 16F84 est formada por dos zonas: MEMORIA RAM de 68 registros MEMORIA EEPROM de 68 registros cuya caracterstica principal es que no se perdern los datos cuando se desconecta la alimentacin.
12
Fuente:http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
13
Fuente: http://www.mikroe.com/
14 15
FUNCIN DE REGISTRO
17
19
20
20
Fuente: http://www.mikroe.com/
Sistema de Interrupciones
Al aparecer una peticin de interrupcin lo primero que hace el microcontrolador es
ejecutar la instruccin actual despus de que se detiene el proceso de ejecucin de programa. Como resultado, la direccin de memoria de programa actual se apila automticamente y la direccin por defecto (predefinida por el fabricante) se escribe en el contador de programa. La localidad en la que el programa contina con la ejecucin se le denomina vector de interrupcin. En el caso del microcontrolador PIC16F887 esta direccin es 0x0004h. Como se muestra en la siguiente figura la localidad que contiene el vector de interrupcin se omite durante la ejecucin de programa regular. Una parte de programa que se ejecutar al hacer una peticin de interrupcin se le denomina rutina de interrupcin. Su primera instruccin se encuentra en el vector de interrupcin. Cunto tiempo tardar en ejecutar esta subrutina y cmo ser depende de la destreza del programador as como de la fuente de interrupcin. Algunos microcontroladores tienen ms de un vector de interrupcin (cada peticin de interrupcin tiene su vector), pero en este caso slo hay uno. En consecuencia, la primera parte da la rutina de interrupcin consiste en detectar la fuente de interrupcin. Por fin, al reconocer la fuente de interrupcin y al terminar de ejecutar la rutina de interrupcin el microcontrolador alcanza la instruccin RETFIE, toma la direccin de la pila y contina con la ejecucin de programa desde donde se interrumpi. (mikroe)21
22
21 22
Lenguaje ASSEMBLER
El Lenguaje ensamblador o assembler trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en l se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sera que los programas en ensamblador ocupan menos espaci en memoria. (RESENDIZ, 2008)23 Permitir adentrarnos al estudio del hardware de una PC. Este lenguaje proporciona las herramientas para tomar control sobre todo lo que la computadora realiza fsicamente. (RESENDIZ, 2008) Es importante como se puede ver, el Lenguaje Ensamblador es directamente traducible al Lenguaje de Mquina, y viceversa; simplemente, es una abstraccin que facilita su uso para los seres humanos. Por otro lado, la computadora no entiende directamente al Lenguaje Ensamblador; es necesario traducirle a Lenguaje de Mquina. Pero, al ser tan directa la traduccin, pronto aparecieron los programas Ensambladores, que son traductores que convierten el cdigo fuente(en Lenguaje Ensamblador) a cdigo objeto (es decir, a Lenguaje de Mquina. (RESENDIZ, 2008) Surge como una necesidad de facilitar al programador la tarea de trabajar con lenguaje mquina sin perder el control directo con el hardware. (RESENDIZ, 2008)
23 24
Ventajas
Proporciona un control absoluto sobre la PC. Los programas en ensamblador son rpidos y compactos. 1. Velocidad.- Como trabaja directamente con el microprocesador al ejecutar unprograma, pues como este lenguaje es el ms cercano a la mquina la computadora lo procesa ms rpido. 2. Eficiencia de tamao.- Un programa en ensamblador no ocupa muchoespacioen memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto nivel 3. Flexibilidad.-Es flexible porque todo lo que puede hacerse con una mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al mximo los recursos dela mquina. O sea que en lenguaje ensamblador se pueden hacer tareas especficas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecucin que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C. (RESENDIZ, 2008)25 El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy tcnicas que seran difciles, si no es que imposibles de realizar en un lenguaje de alto nivel (RESENDIZ, 2008). El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la mquina que ningn lenguaje de alto nivel puede ofrecer. (RESENDIZ, 2008)
26
25 26
Desventajas
Tiempo de programacin.- Como es un lenguaje de bajo nivel requiere ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin . (RESENDIZ, 2008)27 Programas fuente grandes.- Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos ms instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. Peligro de afectar recursos inesperadamente.- Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la mquina, programar en este lenguaje lo ms comn que pueda pasar es que la mquina se bloquee o se reinicialice. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. Falta de portabilidad.- Porque para cada mquina existe un lenguaje ensamblador; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. (RESENDIZ, 2008)
27
Fuente: http://es.scribd.com/doc/2520374/IMPORTANCIA-DEL-LENGUAJE-ENSAMBLADOR
ACALL ADD ADDC AJMP ANL ANL bit CJNE CLR A CLR bit CPL A CPL bit DA DEC DIV DJNZ INC JB JBC JC JMP @ JNB JNC JNZ JZ LCALL LJMP MOV
Absolute Call Add Accumulator Add Accumulator with Carry Absolute Jump Logical AND for byte variables Logical AND for bit variables Compare and Jump if Not Equal Clear Accumulator Clear bit Complement Accumulator Complement bit Decimal Adjust of Accumulator Decrement Register Divide Accumulator by B Decrement Register and Jump if Not Zero Increment Register Jump if Bit Set Jump if Bit Set and Clear Bit Jump if Carry Set Jump indirect to Address Jump if Bit Not Set Jump if Carry Not Set Jump if Accumulator Not Zero Jump if Accumulator Zero Long Call Long Jump Move byte variable (EHU) 28
28
http://www.sc.ehu.es/sbweb/webcentro/automatica/web_8051/Contenido/set_8051/set8051.htm
MOV bit
Move bit
MOVC MOVX MUL NOP ORL ORL bit POP PUSH RET RETI RL RLC RR RRC SETB SJMP SUBB SWAP XCH XCHD XRL ??
Move Code Memory Move External Memory Multiply Accumulator by B No Operation Logical OR for byte variables Logical OR for bit variables Pop From Stack Push Onto Stack Return From Subroutine Return From Interrupt Rotate Accumulator Left Rotate Accumulator Left Through Carry Rotate Accumulator Right Rotate Accumulator Right Through Carry Set Bit Short Jump Subtract From Accumulator With Borrow Sw ap Accumulator Nibbles Exchange Bytes Exchange Digits Exclusive OR Undefined Instruction
(EHU) 29
29
http://www.sc.ehu.es/sbweb/webcentro/automatica/web_8051/Contenido/set_8051/set8051.htm
30
Fuente: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
EJEMPLOS DE LENGUAJE ENSAMBLADOR Hola mundo escrito para la arquitectura de procesador x86 (bajo el sistema operativo DOS) en modo texto (por defecto). .model small .stack .data Cadena1 DB 'Hola Mundo.$' .code programa: mov ax, @data mov ds, ax mov dx, offset Cadena1 mov ah, 9 int 21h int 20h end programa . (Ecured)
Ejemplo de Programa que suma cuatro enteros
main: push %eax mov num1, %eax acumula add num2, %eax add num3, %eax add num4, %eax mov %eax, result pop %eax ret 31 # Almacena resultado # Restaura registros # Salva registros # Carga primer nmero y
(Lc.fie)
31
https://lc.fie.umich.mx/~rochoa/Manuales/ENS_Arquitectura_5ium/ASM.html#asm:sec:example
32
Fuente: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
Comandos Bsicos
33
Fuente: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf
TRABAJOS CITADOS
Calcena, L. (s.f.). Acerca de nosotros: Tutoriales . Recuperado el 1 de Junio de 2013, de robotpy: http://www.robotpy.com/tutoriales/54-microcontrolador-pic16f84 Ecured. (s.f.). www.ecured.cu . Recuperado el 3 de Junio de 2013, de www.ecured.cu: http://www.ecured.cu/index.php/Lenguaje_ensamblador EHU. (s.f.). www.sc.ehu.es. Recuperado el 4 de Junio de 2013, de www.sc.ehu.es: http://www.sc.ehu.es/sbweb/webcentro/automatica/web_8051/Contenido/set_8051 /set8051.htm Flores, K. (s.f.). Acerca de nosotros Lenguaje ensamblador . Recuperado el 01 de Junio de 2013, de http://pitagoras.usach.cl/: http://pitagoras.usach.cl/~eflores/lcc/micro/Temas/LengEnsambladorSobrePIC16F84. pdf Lc.fie. (s.f.). www.lc.fie.umich.mx . Recuperado el 2 de Junio de 2013, de www.lc.fie.umich.mx: https://lc.fie.umich.mx/~rochoa/Manuales/ENS_Arquitectura_5ium/ASM.html#asm:se c:example Madrid, U. P. (s.f.). EUI. Recuperado el 06 de Junio de 2013, de sitio web de la Universidad Politcnica de Madrid: http://www.eui.upm.es/sites/default/files/museo/Ensamblador.jpg mikroe. (s.f.). http://www.mikroe.com/ . Recuperado el 4 de Junio de 2013, de http://www.mikroe.com/: http://www.mikroe.com/chapters/view/81/capitulo-3microcontrolador-pic16f887/ RESENDIZ, G. V. (11 de Abril de 2008). http://es.scribd.com/ . Recuperado el 05 de Mayo de 2013, de http://es.scribd.com/: http://es.scribd.com/doc/2520374/IMPORTANCIADEL-LENGUAJE-ENSAMBLADOR Rodriguez, D. (s.f.). xer0bits. Recuperado el 06 de Junio de 2013, de xer0bits: http://2.bp.blogspot.com/_4M2FqFNfsOo/TI0kM8Pnn5I/AAAAAAAAAGU/AYEFmE27n G0/s320/ejemplo_ASM1.PNG Serra, E. (s.f.). Acerca de nosotros Introduccin a la microeconoma . Recuperado el 02 de Junio de 2013, de sputnik.eps: http://sputnik.epsj23.net/~eserra/elect/pics/pic16f84.pdf