Sunteți pe pagina 1din 38

Ao del centenario de Machu Picchu para el mundo

UNIVERSIDAD NACIONAL SANTIAGO ANTNEZ DE MAYOLO

- - - - - - - - - - - - - - - -o- - - - - - - - - - - - - - - PROYECTO FINAL FACULTAD ESCUELA REA DOCENTE TEMA TTULO CICLO ALUMNOS : CIENCIAS : INGENIERA DE SISTEMAS E INFORMTICA : MICROPROCESADORES Y PERIFERICOS : ING. LUIS ALVARADO CCERES : MICROCONTROLADORES : PIC 16F84A : VI :  ARANIBAL REGALADO NELSON MARTIN  DE LA CRUZ MAGUIA DANTE  VILLARREAL VILLON FRANK LUIS

Huaraz, Agosto 2011

UNASAM

Ing. Sistemas E informtica

n Microcontrolador es un circuito integrado programable que contiene todos los componentes necesarios para controlar el funcionamiento de una tarea determinada, como el control de una lavadora, un teclado de ordenador, una impresora, un sistema de alarma, etc. Para esto, el Microcontrolador utiliza muy pocos componentes asociados. Un sistema con Microcontrolador debe disponer de una memoria donde se almacena el programa que gobierna el funcionamiento del mismo que una vez programado y configurado, solo sirve para realizar la tarea asignada. La utilizacin de un Microcontrolador en un circuito reduce notablemente el tamao y nmero de componentes y, en consecuencia, disminuye el nmero de averas y el volumen y el peso de los equipos, entre otras ventajas. El Microcontrolador es uno de los inventos ms notables del siglo XX. En el mercado hay gran cantidad de ellos, con multitud de posibilidades y caractersticas. Cada tipo de Microcontrolador sirve para una serie de casos y es el diseador del sistema quien debe decidir cul es el Microcontrolador ms idneo para cada uso. Un Microcontrolador difiere de una CPU normal, debido a que es ms fcil convertirla en una computadora en funcionamiento, con un mnimo de chips

Microprocesadores Y Perifricos

Pg. 2

UNASAM

Ing. Sistemas E informtica

externos de apoyo. La idea es que el chip se coloque en el dispositivo, enganchado a la fuente de energa y de informacin que ne cesite, y eso es todo. Un microprocesador tradicional no le permitir hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los mdulos de entrada/salida (puertos) y la memoria para almacenamiento de informacin. Por ejemplo, un Microcontrolador tpico tendr un generador de reloj integrado y una pequea cantidad de memoria RAM y ROM/EPROM/EEPROM/FLASH, significando que para hacerlo funcionar, todo lo que se necesita son unos pocos programas de control y un cristal de sincronizacin. Los microcontroladores disponen generalmente tambin de una gran variedad de dispositivos de entrada/salida, como convertidores de analgico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programacin integrado, como el BASIC que se utili za bastante con este propsito.

Microprocesadores Y Perifricos

Pg. 3

UNASAM

Ing. Sistemas E informtica

PI

I.

JE IV S

P I

IP

ES

Disear e implementar un visualizador de mensaje usando un display LCD o en conjunto de Led y que muestre el mensaje "su turno: XX". Donde XX inicie en 1 y cada vez se incremente en 1 mediante un pulsador hasta 99.

ESPE I I

 Conocer el funcionamiento del PIC 16F84A.  Aprender a utilizar el programa MPLAB v8.63 .  Aprender a utilizar el programa Proteus v7.1 SP2 .  Aprender manipular el JDM programador.  Conocer los fundamentos bsicos de un Microcontrolador.

Microprocesadores Y Perifricos

Pg. 4

UNASAM

Ing. Sistemas E informtica

II. . I

EP

E E

ES

Un Microcontrolador es un circuito integrado programable para controlar el funcionamiento de una tarea determinada. En su interior encontramos un:  Procesador.  Memoria.  Varios perifricos.

Microprocesadores Y Perifricos

Pg. 5

UNASAM

Ing. Sistemas E informtica

III.

PI

El PI una memoria memoria

est fabricado en tecnologa

S, posee memoria

S , y consumo bajo de potencia. Est compuesto bsicamente de

(1024 palabras de memoria de programa), una (de acceso aleatorio, 68 bytes), lneas de entrada y salida

(2 Puertos) y una lgica de control que coordina la interaccin de los dems bloques. Estos micros pertenecen a la gama media y dispones de un set de 35 instrucciones, tipo RISC (Computador con Set de Instrucciones Reducido) pocas pero muy poderosas. Algunas funciones especiales que dispone este PIC:

Temporizador programable ( Tim ). Si se quiere medir periodos de tiempo entre eventos, generar temporizaciones o salidas con frecuencia especfica, etc.

Perro Guardin o Watchdog. Consiste en un temporizador que, cuando se desborda ya pasa por 0, provoca un reset automtico, utilizado para sistemas que no tienen control de un supervisor, y al bloquearse el micro se resetea. Si se utiliza el cdigo debe resetearlo antes de que se desborde.

Memoria EEPROM de 64 bytes, para guardar datos que no se alteran a pesar de quitar la alimentacin.

Interrupciones, cuando una seal externa, o una condici n interna activa una lnea de interrupcin, dejando de lado la tarea que est ejecutando, atiende dicha interrupcin y luego contina con lo que estaba haciendo.

Microprocesadores Y Perifricos

Pg. 6

UNASAM

Ing. Sistemas E informtica

Proteccin ante fallo de alimentacin. Se trata de un circuito que resetea al micro cuando el voltaje Vdd es inferior al mnimo.

Estado de bajo consumo. Sleep. Si el micro debe esperar mucho tiempo sin hacer nada, posee una instruccin especial, Sleep, que lo pasa al estado de reposo. Al activarse una interrupcin se despierta y reanuda su trabajo. (Reset externo, desbordamiento de Watchdog, interrupcin por RB0, interrupcin por cambio de nivel en RB4 a RB7, interrupcin por escritura completada en EEPROM)

3.

ESTRUCTURA

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 set de instrucciones RISC muy amigable para memorizar y fcil de entender, internamente consta de:       Memoria Flash de programa (1K x 14). Memoria EEPROM de datos (64 x 8). Memoria RAM (68 registros x 8). Un temporizador/contador (timer de 8 bits). Un divisor de frecuencia. Varios puertos de entrada -salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el puerto B). Otras caractersticas son:     Manejo de interrupciones (de 4 fuentes). Perro guardin (watchdog). Bajo consumo. Frecuencia de reloj externa mxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia de reloj interna es un

Microprocesadores Y Perifricos

Pg. 7

cuart

la

t rna, l

ue i nifica

ue con un reloj IPS ni

, el reloj interno era e  

as ues se ejecutan

illones e Instrucciones or Segundo o osee conversores

anal gicos-digital

digital-

anal gicos. Pi e-line de etapas, para squeda de instrucci n otra para la ejecuci n de la instrucci n los saltos ocupan un ciclo s).    epertorio de instrucciones reducido instrucciones distintas. tipos distintos de instrucciones, orientadas a orientadas a it, operaci n entre registros, de salto. Encapsulado en tecnologa con una frecuencia I de pines, puede trabajar . i a de te, IS ), con tan solo

op o

ado

 

   

  

UN S

ng S

no

g 8

UNASAM

Ing. Sistemas E informtica

3.

COMPONENTES

 ALIMENTACIN DE UN PIC16F84A, Normalmente el Microcontrolador PIC16F84A se alimenta con 5 voltios aplicados entre los pines Vdd(Vcc) y Vss ( Gnd)  PUERTOS DE ENTRADA/SALIDA. El Microcontrolador se comunica con el mundo exterior a travs de los puertos. El PIC16F84A tiene dos puertos :   El Puerto A con 5 lneas, pines RA0 a RA4. El Puerto B con 8 lneas, pines RB0 a RB7

 OSCILADOR. Todo Microcontrolador requiere de un circuito que le indique la velocidad de trabajo, es el llamado oscilador reloj. ste genera una onda cuadrada de alta frecuencia que se utiliza como seal para sincronizar todas las operaciones del sistema. OSC1/CLKIN y OSC2/CLKOUT son las lneas utilizadas para este fin.

 RESET El pin de reset en lo PIC se denomina MCLR (Master Clear) provoca la reinicializacin de su funcionamiento, un comienzo a funcionar desde cero. El reset permanecer mientras tengamos el pulsador presionado y no comenzar la secuencia de arranque hasta que no lo liberemos.

Microprocesadores Y Perifricos

Pg. 9

UNASAM

Ing. Sistemas E informtica

 VSS y VDD (Pines 5 y 14) son respectivamente las patitas de masa y alimentacin. Est comprendida entre 2V y 6V (Recomendados 5V).  OSC1/CLKIN y OSC2/CLKOUT (pines15 y 16) son los pines de la entrada de cristal/ fuente externa de reloj y salida de oscilador a cristal respectivamente. Los distintos elementos de la familia 16X84X, dependiendo de la nomenclatura que utilizan tienen dist intas caractersticas de:
y y

Frecuencia mxima de funcionamiento. Tipo de oscilador utilizado para generar frecuencias de reloj. Margen de la tensin de alimentacin.

Los modelos que contienen las letras C, F o CR admiten tensiones de alimentacin comprend idas entre 4V y 4,5V como mnimo hasta 5,5V a 6V como mximo. Los modelos que contienen las letras LC, LF o LCR admiten desde 2V a 6V. Los microcontroladores externos PIC, permiten aplicarles cuatro la tipos de de

osciladores

para

frecuencia

funcionamiento. Durante el proceso de grabacin, antes de introducir el programa en memoria, debe indicarse el tipo de oscilador empleado en los bits FSOC1 y FSOC2 de la Palabra de Configuracin. Los tipos de osciladores que puede utilizar nuestro Microcontrolador son:
y

Oscilador de cristal o resonador de alta velocidad "HS"(High Speed Crytal/Resonator): Es un oscilador una frecuencia comprendida entre 4MHz y 20MHz. Oscilador o resonador cermico "XT"

(Crystal/Resonator): Se trata de un oscilador estndar que permite una frecuencia de reloj comprendidas entre 100KHz y 4 MHz.
Microprocesadores Y Perifricos Pg. 10

UNASAM

Ing. Sistemas E informtica

Oscilador de cristal de cuarzo o resonador cermico de baja potencia "LP" (Low Power Crystal): Se trata de un oscilador de bajo consumo con un cristal o resonador diseado para trabajar con frecuencias comprendidas entre 32KHz y 200KHz.

El circuito para cualquiera de las configuraciones anteriores se representa en la siguiente figura y depende de los valores de C1, C2 y del cristal para el buen funcionamiento del mismo. Se recomienda ver la tabla de datos del fabricante.
y

Oscilador tipo "RC": Es un oscilador de bajo coste formado por una red RC. Su circuito de aplicacin es el que se muestra en la siguiente figura Se trata de un oscilador de baja precisin que depende de la estabilidad de la red RC, pero como contrapartida est su bajo precio que lo hace interesante para muchas aplicaciones.

 MLCR /Vpp (Pin 4) Entrada de Reset, si est a nivel bajo y entrada de la tensin de programacin cuando se est programando el dispositivo.  RA0-RA4/TOCK1 (Pines 17, 18, 1,2 y 3 respectivamente) Corresponden a cuatro lneas bidireccionales de E/S del PORTA. Es capaz de entregar niveles TTL cuando la tensin de alimentacin aplicada en VDD es de 5V 5%. El pin RA4, si se programa como salida es de colector TMR0.
Microprocesadores Y Perifricos Pg. 11

abierto.

Como

entra da

puede

programarse

en

funcionamiento normal o como entrada del contador/temporizador

UNASAM

Ing. Sistemas E informtica

 RB0-RB7 (Pines 6, 7, 8, 9, 10, 11,12 y 13 respectivamente) Corresponden a ocho lneas bidireccionales de E/S del PORTB. Es capaz de entregar niveles TTL cuando la tensin de alimentacin aplicada en VDD es de 5V 5%. RB0 puede programarse adems como entrada de interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para responder a interrupciones por cambio de estado. La patilla RB6 y RB7 corresponden con las lneas de entrada de reloj y entrada de datos respectivamente, cuando est en modo programacin.

Microprocesadores Y Perifricos

Pg. 12

IV.

PERIFRICOS BSICOS Para la i plementaci n de proyectos con ayudaran al PI correcto. icrocontrolador, se utili an

dispositivos y compontes electrnicos, conocidos como perif ricos, que a formar un sistema estable y darle un funcionamiento

a pantalla de cristal lquido o

a pantalla de cristal lquido o

iquid

rystal

isplay) es un

dispositivo microcontrolador de visuali acin grafico para la presentacin de caracteres, smbolos o incluso dibujos en algunos modelos). En este caso dispone de filas de caracteres cada una y cada carcter puntos pi els), aunque los ay de otro itachi y regula todos los

dispone de una matri de

nmero de filas y caracteres. Este dispositivo est gobernado internamente por un microcontrolador

parmetros de presentacin, este modelo es el ms comnmente usado y la informacin que se adjunta se basar en el manejo de este u otro compatible.

 0

op o

ado

( " $'

3 4 2

! ( '1 & '#0 ) !#'

!#( ' '( 

 2

UN S

ng S

no

&

% ! $#" !  

 

g 13

Pulsadores Elemento que permite el paso o interrupcin de la corriente mientras es accionado. reposo. Puede ser el contacto normalmente cerrado en reposo contacto normalmente abierto a. onsta del botn pulsador; una lmina conductora que establece contacto con los dos terminales al oprimir el botn y un muelle que hace recobrar a la lmina su posicin primitiva al cesar la presin sobre el botn pulsador. , o con el uando ya no se acta sobre l vuelve a su posicin de

esistencias

Propiedad de un objeto o sustancia que hace que se resista u oponga al paso de una corriente el ctrica. a resistenciade un circuito el ctrico hmcunta corriente fluye en el a unidad de determina segn la llamada ley de

circuito cuando se le aplica un voltaje determinado.

resistencia es el ohmio, que es la resistencia de un conductor si es recorrido por una corriente de u n amperio cuando se le aplica una tensin de
@BG F FG96
op o ado

voltio. a abreviatura habitual para la resistencia el ctrica


8 I
o g 14

G9A CF

@ G9FP E9FBI H @BF

UN S

ng S

no

9 D @ CBA @9 8 7

5 5

es

, y el smbolo del ohmio es la letra griega omega, .

. En algunos

c lculos el ctricos se emplea el inverso de la resistencia, / , que se denomina conductancia y se representa por a unidad de conductancia es siemens, cuyo smbolo es S. An puede encontrarse en ciertas obras la denominacin antigua de esta unidad, mho.

Condensadores

El condensador es uno de los componentes ms utili ados en los circuitos el ctricos. n condensador es un componente pasivo que presenta la cualidad de almacenar energa el ctrica. Est formado por dos lminas de material conductor metal) que se encuentran separados por un material diel ctrico material aislante). En un condensador simple, cualquiera sea su aspecto exterior, dispondr de dos terminales, los cuales a su vez estn conectados a las dos laminas conductoras.

U f

op o

ado

dVX `c

W dVcg bVcYf e WYc

WYd c cdVS

UN S

ng S

no

V a W `YX WV U T

R R

g 15

UNASAM

Ing. Sistemas E informtica

V.

MP AB v . 3

MPLAB es una herramienta para escribir y desarrollar cdigo en lenguaje ensamblador para los microcontroladores PIC. MPLAB incorpora todas las herramientas necesarias para la realizacin de cualquier proyecto, ya que adems de un editor de textos cuenta co n un simulador en el que se puede ejecutar el cdigo paso a paso para ver as su evolucin y el estado en el que se encuentran sus registros en cada momento.

VI.

PROTEUS v7. SP

Proteus es una compilacin de programas de diseo y simulacin electrnica, desarrollado por Labcenter Electronics que consta de los dos programas principales: Ares e Isis, y los mdulos VSM y Electra. El Programa ISIS, Intelligent Schematic Input System (Sistema de Enrutado de Esquemas Inteligente) permite disear el plano elctric o del circuito que se desea realizar con componentes muy variados, desde simples resistencias, hasta algno que otro microprocesador o microcontrolador, incluyendo fuentes de alimentacin, generadores de seales y muchos otros componentes con prestaciones diferentes. Los diseos realizados en Isis pueden ser simulados en tiempo real, mediante el mdulo VSM, asociado directamente con ISIS. En el Programa ISIS, Se pueden simular circuitos con

microcontroladores conectados a distintos dispositivos, como motore s, lcds, teclados en matriz, etc. Incluye, entre otras, las familias de PIC's PIC10, PIC12, PIC16, PIC18, PIC24 y dsPIC33. ISIS es el corazn del entorno integrado PROTEUS. Combina un entorno de diseo de una potencia excepcional con una enorme capacidad de controlar la apariencia final de los dibujos.
Microprocesadores Y Perifricos Pg. 16

UNASAM

Ing. Sistemas E informtica

VII.

EXPERIMENTACIN CON PIC E PROBLEMA

7. P ANTEAMIENTO

Disear e implementar, un visualizador de mensaje, que se muestre en un display LCD o en conjunto de Leds el siguiente mensaje "su turno: xx", donde xx inicie en 1 y cada vez se incremente en 1 mediante un pulsador hasta 99, y que se reinicie en 1.
7. PROCE IMIENTO E ANLISIS

Partimos del enunciado del problema, para plasmar los requerimientos en las instrucciones del programa, elaborado en MPLAB IDE v8.63. Como paso siguiente mostramos la funcin de cada instruccin:
LIST IFNDEF __16F84A ENDIF ;====================== =============================== ; ; Register Defini tions ; ;===================================================== W EQU H'0000' F EQU H'0001' ; ----- Register Files ---------------------------------INDF EQU H'0000' TMR0 EQU H'0001' PCL EQU H'0002' STATUS EQU H'0003' FSR EQU H'0004' PORTA EQU H'0005' PORTB EQU H'0006' EEDATA EQU H'0008' EEADR EQU H'0009' PCLATH EQU H'000A' INTCON EQU H'000B' OPTION_REG EQU H'0081' TRISA EQU H'0085' TRISB EQU H'0086' EECON1 EQU H'0088' EECON2 EQU H'0089' ; ----- STATUS Bits ---------------------------------------IRP EQU H'0007' RP1 EQU H'0006' RP0 EQU H'0005'
Microprocesadores Y Perifricos Pg. 17

UNASAM

Ing. Sistemas E informtica

NOT_TO EQU H'0004' NOT_PD EQU H'0003' Z EQU H'0002' DC EQU H'0001' C EQU H'0000' ; ----- INTCON Bits ----------------------------------------- GIE EQU H'0007' EEIE EQU H'0006' T0IE EQU H'0005' INTE EQU H'0004' RBIE EQU H'0003' T0IF EQU H'0002' INTF EQU H'0001' RBIF EQU H'0000' ; ----- OPTION Bits -----------------------------------------NOT_RBPU EQU H'0007' INTEDG EQU H'0006' T0CS EQU H'0005' T0SE EQU H'0004' PSA EQU H'0003' PS2 EQU H'0002' PS1 EQU H'0001' PS0 EQU H'0000' ; ----- EECON1 Bits -----------------------------------------EEIF EQU H'0004' WRERR EQU H'0003' WREN EQU H'0002' WR EQU H'0001' RD EQU H'0000' ;=============================== ============================== ; ; RAM Definition ; ;============================================================== __MAXRAM H'CF' __BADRAM H'07', H'50' -H'7F', H'87' ;==============================================================; ; Configuration Bits ; ;============================================================== _CP_ON EQU H'000F' _CP_OFF EQU H'3FFF' _PWRTE_ON EQU H'3FF7' _PWRTE_OFF EQU H'3FFF' _WDT_ON EQU H'3FFF' _WDT_OFF EQU H'3FFB' _LP_OSC EQU H'3FFC' _XT_OSC EQU H'3FFD' _HS_OSC EQU H'3FFE' _RC_OSC EQU H'3FFF' LIST

Microprocesadores Y Perifricos

Pg. 18

UNASAM

Ing. Sistemas E informtica

; Librera "LCD_4BIT.INC" ; ; ZONA DE DATOS ;************************************************************** CBLOCK LCD_Dato LCD_GuardaDato LCD_GuardaTRISB LCD_Auxiliar1 LCD_Auxiliar2 ENDC LCD_CaracteresPorLinea lnea de la pantalla. #DEFINE #DEFINE #DEFINE #DEFINE EQU .16 ; Nmero de caracteres por

LCD_PinRS PORTA,0 LCD_PinRW PORTA,1 LCD_PinEnable PORTA,2 LCD_BusDatos PORTB

; Subrutina "LCD_Inicializa" --------------------------------; ; Inicializacin del mdulo L CD: Configura funciones del LCD, produce reset por software, ; borra memoria y enciende pantalla. El fabricante especifica que para garantizar la ; Configuracin inicial hay que hacerla como sigue: ; LCD_Inicializa bsf STATUS,RP0 ; Configura las lneas c onectadas al pines RS, bcf LCD_PinRS ; R/W y E. bcf LCD_PinEnable bcf LCD_PinRW bcf STATUS,RP0 bcf LCD_PinRW ; En caso de que est conectado le indica ; que se va a escribir en el LCD. bcf LCD_PinEnable ; Impide funcionamiento del LCD poniendo E=0. bcf LCD_PinRS ; Activa el Modo Comando poniendo RS=0. call Retardo_20ms movlw b'00110000' call LCD_EscribeLCD ; Escribe el dato en el LCD. call Retardo_5ms movlw b'00110000' call LCD_EscribeLCD call Retardo_200micros movlw b'00110000' call LCD_EscribeLCD movlw b'00100000' ; Interface de 4 bits. call LCD_EscribeLCD ; Ahora configura el resto de los parmetros:
Microprocesadores Y Perifricos Pg. 19

UNASAM

Ing. Sistemas E informtica

call LCD_2Lineas4Bits5x7 ; LCD de 2 lneas y caracteres de 5x7 puntos. call LCD_Borra ; Pantalla encendida y limpia. Cursor al principio call LCD_CursorOFF ; de la lnea 1. Cursor apagado. call LCD_CursorIncr ; Cursor en modo incrementar. return ; Subrutina "LCD_EscribeLCD" --------------------------------; ; Enva el dato del registro de trabajo W al bus de dato y produce un pequeo pulso en el pin ; Enable del LCD. Para no alterar el contenido de las lneas de la parte baja del Puerto B que ; no son utilizadas para el LCD (pines RB3:RB0), primero se lee estas lneas y despus se ; vuelve a enviar este dato sin c ambiarlo. LCD_EscribeLCD andlw b'11110000' del dato que es el movwf LCD_Dato movf LCD_BusDatos,W la parte baja andlw b'00001111' alterar. iorwf LCD_Dato,F entrada ; Se queda con el nibble alto ; que hay que enviar y lo guarda. ; Lee la informacin actual de ; del Puerto B, que no se debe ; Enviar la parte alta del dato de y en la parte baja lo que haba Acceso al Banco 1. Guarda la configuracin que tena ; Las 4 lneas inferiores del ; como estaban y las 4 Acceso al Banco 0. Recupera el dato a enviar. ; Enva el dato al m dulo LCD. ; Permite funcionamiento del LCD ; pulso y termina impidiendo el Acceso al Banco 1. Restaura el ; la configuracin del Puerto B. Realmente es TRISB. Acceso al Banco 0. -------

; antes. bsf STATUS,RP0 ; movf TRISB,W ; antes TRISB. movwf LCD_GuardaTRISB movlw b'00001111' Puerto B se dejan andwf PORTB,F superiores como salida. bcf STATUS,RP0 ; ; movf LCD_Dato,W ; movwf LCD_BusDatos bsf LCD_PinEnable mediante un pequeo bcf LCD_PinEnable funcionamiento del LCD. bsf STATUS,RP0 ; antiguo valor en movf LCD_GuardaTRISB,W movwf PORTB ; bcf STATUS,RP0 ; return

; Subrutinas variadas para el control del mdulo LCD ;


Microprocesadores Y Perifricos

Pg. 20

UNASAM

Ing. Sistemas E informtica

;Los comandos que pueden ser ; LCD_CursorIncr movlw b'00000110' goto LCD_EnviaComando LCD_Linea1 ; movlw b'10000000' goto LCD_EnviaComando LCD_Linea2 ; movlw b'11000000' goto LCD_EnviaComando LCD_PosicionLinea1 1, a partir de la iorlw b'10000000' el valor del goto LCD_EnviaComando ; LCD_PosicionLinea2 2, a partir de la iorlw b'11000000' el valor del goto LCD_EnviaComando ; LCD_OFF ; movlw b'00001000' goto LCD_EnviaComando LCD_CursorON encendido. movlw b'00001110' goto LCD_EnviaComando LCD_CursorOFF apagado. movlw b'00001100' goto LCD_EnviaComando LCD_Borra ; DDRAM y pone el movlw b'00000001' 1. goto LCD_EnviaComando LCD_2Lineas4Bits5x7 lneas, con caracteres movlw b'00101000' PIC mediante bus de ; goto LCD_EnviaComando ;

ejecutados son: ; Cursor en modo incrementar. Cursor al principio de la Lnea 1. ; Direccin 00h de la DDRAM Cursor al principio de la Lnea 2. ; Direccin 40h de la DDRAM ; Cursor a posicin de la Lnea ; direccin 00h de la DDRAM ms registro W. ; Cursor a posicin de la Lnea ; direccin 40h de la DDRAM ms registro W. Pantalla apagada. ; Pantalla encendida y curso r

; Pantalla encendida y cursor

Borra toda la pantalla, memoria ; cursor a principi o de la lnea ; Define la pantalla de 2 ; de 5x7 puntos y conexin al 4 bits.

; Subrutinas "LCD_EnviaComando" y "LCD_ Caracter" ------------ ; ; "LCD_EnviaComando". Escribe un comando en el registro del mdulo LCD. La palabra de ; comando ha sido entregada a travs del registro W. Trabaja en Modo Comando. ; "LCD_Caracter". Escribe en la memoria DDRAM del LCD el carcter ASCII introducido a ; a travs del registro W. Trabaja en Modo Dato. ; LCD_EnviaComando bcf LCD_PinRS ; Activa el Modo Comando, poniendo RS=0. goto LCD_Envia
Microprocesadores Y Perifricos Pg. 21

UNASAM

Ing. Sistemas E informtica

LCD_Caracter bsf LCD_PinRS ; RS=1. call LCD_CodigoCGROM ; visualizacin. LCD_Envia movwf LCD_GuardaDato call LCD_EscribeLCD swapf LCD_GuardaDato,W ; ello pasa el ; parte alta del byte. call LCD_EscribeLCD btfss LCD_PinRS ; escritura manteniendo call Retardo_2ms en modo cracter. call Retardo_50micros return

Activa el "Modo Dato", poniendo Obtiene el cdigo para correcta ; Guarda el dato a enviar. ; Primero enva el nibble alto. Ahora enva el nibble bajo. Para nibble bajo del da to a enviar a ; Se enva al visualizador LCD. Debe garantizar una correcta ; 2 ms en modo comando y 50 s

; Subrutina "LCD_CodigoCGROM" -------------------------------; ; A partir del carcter ASCII nmero 127 los cdigos de los caracteres definidos en la ; tabla CGROM del LM016L no coinciden con los cdigos ASCII. As por ejemplo, el cdigo ; ASCII de la "" en la tabla CGRAM del LM016L es EEh. ; ; Esta subrutina convierte los cdigos ASCII de la "", "" y otros, a cdigos CGROM para que ; que puedan ser visualizado en el mdulo LM016L. ; ; Entrada: En (W) el cdigo ASCII del carcter que se desea visualizar. ; Salida: En (W) el cdigo definido en la tabla CGROM. LCD_CodigoCGROM movwf LCD_Dato ; comprueba si es LCD_EnheMinuscula sublw '' ; btfss STATUS,Z goto LCD_EnheMayuscula movlw b'11101110' movwf LCD_Dato goto LCD_FinCGROM LCD_EnheMayuscula movf LCD_Dato,W ; entrada. sublw '' ; btfss STATUS,Z goto LCD_Grado ; movlw b'11101110' hay smbolo para movwf LCD_Dato ; goto LCD_FinCGROM
Microprocesadores Y Perifricos

Guarda el valor del carcter y ; un carcter especial. Es la ""? ; No es "". ; Cdigo CGROM de la "".

Recupera el cdigo ASCII de Es la ""? No es "". ; Cdigo CGROM de la "". (No la "" mayscula en la CGROM).

Pg. 22

UNASAM

Ing. Sistemas E informtica

LCD_Grado movf LCD_Dato,W entrada. sublw '' btfss STATUS,Z goto LCD_FinCGROM movlw b'11011111' movwf LCD_Dato LCD_FinCGROM movf LCD_Dato,W return

; Recupera el cdigo ASCII de ; Es el smbolo ""? ; No es "". ; Cdigo CGROM del smbolo "". ; En (W) el cdigo buscado. ----

; Subrutina "LCD_DosEspaciosBlancos" y "LCD_LineaBlanco" ; Visualiza espacios en blanco.

LCD_LineaEnBlanco movlw LCD_CaracteresPorLinea goto LCD_EnviaBlancos LCD_UnEspacioBlanco movlw .1 goto LCD_EnviaBlancos LCD_DosEspaciosBlancos movlw .2 goto LCD_EnviaBlancos LCD_TresEspaciosBlancos movlw .3 LCD_EnviaBlancos movwf LCD_Auxiliar1 ; (LCD_Auxiliar1) se utiliza como contador. LCD_EnviaOtroBlanco movlw ' ' ; Esto es un espacio en blanco. call LCD_Caracter ; Visualiza tanto espacios en blanco como se decfsz LCD_Auxiliar1,F ; haya cargado en (LCD_Auxiliar1). goto LCD_EnviaOtroBlanco return ; Subrutinas "LCD_ByteCompleto" y "LCD_Byte" ---------------; ; Subrutina "LCD_ByteCompleto", visualiza el byte que almacena el registro W en el ; lugar actual de la pantalla. Por ejemplo, si (W)=b'10101110' visualiza "AE". ; ; Subrutina "LCD_Byte" igual que la anterior, pero en caso de que el nibble alto sea cero ; visualiza en su lugar un espacio en blanco. Por ejemplo si (W)=b'10101110' visualiza "AE" ; y si (W)=b'00001110', visualiza " E" (un espacio blanco delante). ; ; Utilizan la su brutina "LCD_Nibble" que se analiza ms adelante. ; LCD_Byte
Microprocesadores Y Perifricos Pg. 23

UNASAM

Ing. Sistemas E informtica

movwf LCD_Auxiliar2 andlw b'11110000' cero.

; Guarda el valor de entrada. ; Analiza si el nibble alto es

btfss STATUS,Z ; Si es cero lo apaga. goto LCD_VisualizaAlto ; No es cero y lo visualiza. movlw ' ' ; Visualiza un espacio en blanco. call LCD_Caracter goto LCD_VisualizaBajo LCD_ByteCompleto movwf LCD_Auxiliar2 LCD_VisualizaAlto swapf LCD_Auxiliar2,W parte baja. call LCD_Nibble ; Lo LCD_VisualizaBajo movf LCD_Auxiliar2,W nibble bajo. ; call LCD_Nibble ; Lo ; return ; Guarda el valor de entrada. ; Pone el nibble alto en la visualiza. ; Repite el proceso con el visualiza.

; Subrutina "LCD_Nibble" -----------------------------------; ; Visualiza en el lugar actual de la pantalla, el valor hexadecimal que almacena en el nibble ; bajo del registro W. El nibble alto de W no es tenido en cuenta. Ejemplos: ; - Si (W)=b'01010110', se visualizar "6". ; - Si (W)=b'10101110', se visualizar " E". ; LCD_Nibble andlw b'00001111' ; Se queda con la parte baja. movwf LCD_Auxiliar1 ; Lo guarda. sublw 0x09 ; Comprueba si hay que representarlo con letra. btfss STATUS,C goto LCD_EnviaByteLetra movf LCD_Auxiliar1,W addlw '0' ; El nmero se pasa a carcter ASCII sumndole goto LCD_FinVisualizaDigito ; el ASCII del cero y lo visualiza. LCD_EnviaByteLetra movf LCD_Auxiliar1,W addlw 'A'-0x0A ; S, por tanto, se le suma el ASCII de la 'A'. LCD_FinVisualizaDigito goto LCD_Caracter ; Y visualiza el carcter. Se hace con un "goto" ; para no sobrecargar la pila. ;

Microprocesadores Y Perifricos

Pg. 24

UNASAM

Ing. Sistemas E informtica

; Librera "LCD_MENS.INC" ******************************** ; ; Librera de subrutinas para el manejo de mensajes a visualizar en un visualizador LCD. CBLOCK LCD_ApuntaCaracter carcter a visualizar mensajes, ; (posicin de la etiqueta "Mensajes"). LCD_ValorCaracter carcter a ENDC ; Cdigo ASCII del ; visualizar. ; Indica la posicin del ; respecto del comienzo de todos los

; Los mensajes t ienen que estar situados dentro de las 256 primeras posiciones de la ; memoria de programa, es decir, no pueden superar la direccin 0FFh. ; Subrutina "LCD_Mensaje" -------------------------------------------------------------; ; Visualiza por pantall a el mensaje apuntado por el registro W. ; ; Los mensajes deben localizarse dentro de una zona encabezada por la etiqueta "Mensajes" y que ; tenga la siguiente estructura: ; ; Mensajes ; Etiqueta obligatoria! ; addwf PCL,F ; Mensaje0 ; Posicin inicial del mensaje. ; DT ".. ..", 0x00 ; Mensaje terminado en 0x00. ; Mensaje1 ; ... ; ... ; FinMensajes ; ; La llamada a esta subrutina se realizar siguiendo este ejemplo: ; ; movlw Mensaje0 ; Carga la posicin del mensaje. ; call LCD_Mensaje ; Visualiza el mensaje. ; LCD_Mensaje movwf LCD_ApuntaCaracter ; Posicin del primer carcter del mensaje. movlw Mensajes ; Halla la posicin relativa del primer carcter subwf LCD_ApuntaCaracter,F ; del mensaje respecto de etiqueta "Mensajes". decf LCD_ApuntaCaracter,F ; Compensa la posicin que ocupa "addwf PCL,F". LCD_VisualizaOtroCaracter
Microprocesadores Y Perifricos Pg. 25

UNASAM

Ing. Sistemas E informtica

movf LCD_ApuntaCaracter,W call Mensajes ; Obtiene el cdigo ASCII del carcter apuntado. movwf LCD_ValorCaracter ; Guarda el valor de carcter. movf LCD_ValorCaracter,F ; Lo nico que hace es posicionar flag Z. En caso btfsc STATUS,Z ; que sea "0x00", que es cdigo indicador final goto LCD_FinMensaje ; de mensaje, sale fuera. LCD_NoUltimoCaracter call LCD_Caracter ; Visualiza el carcter ASCII ledo. incf LCD_ApuntaCaracter,F ; Apunta a la posicin del siguiente carcter goto LCD_VisualizaOtroCaracter ; dentro del mensaje. LCD_FinMensaje return ; Vuelve al programa principal. ; Subrutina "LCD_MensajeMovimiento" ---------------------------------------------------; ; Visualiza un mensaje de mayor longitud que los 16 caracteres que pueden representarse ; en una lnea, por tanto se desplaza a travs de la pantalla. ; ; En el mensaje debe dejarse 16 espacios en bla nco, al principio y al final para ; conseguir que el desplazamiento del mensaje sea lo ms legible posible. ; CBLOCK LCD_CursorPosicion ; Contabiliza la posicin del cursor dentro de la ENDC ; pantalla LCD LCD_MensajeMovimiento movwf LCD_ApuntaCaracter ; Posicin del primer carcter del mensaje. movlw Mensajes ; Halla la posicin relativa del primer carcter subwf LCD_ApuntaCaracter,F ; del mensaje respecto de la etiqueta "Mensajes". decf LCD_ApuntaCaracter,F ; Compensa la posicin que ocupa "addwf PCL,F". LCD_PrimeraPosicion clrf LCD_CursorPosicion ; El cursor en la posicin 0 de la lnea. call LCD_Borra ; Se sita en la primera posicin de la lnea 1 y LCD_VisualizaCaracter ; borra la pantalla. movlw LCD_CaracteresPorLinea ; Ha llegado a final de lnea? subwf LCD_CursorPosicion,W btfss STATUS,Z goto LCD_NoEsFinalLinea
Microprocesadores Y Perifricos Pg. 26

UNASAM

Ing. Sistemas E informtica

LCD_EsFinalLinea call Retardo_200ms ; Lo mantiene visualizado durante este tiempo. call Retardo_200ms movlw LCD_CaracteresPorLinea -1; Apunta a la posicin del segundo carcter visualizado subwf LCD_ApuntaCaracter,F ; en pantalla, que ser el primero en la siguiente goto LCD_PrimeraPosicion ; visualizacin de lnea, para producir el efecto LCD_NoEsFinalLinea ; de desplazamiento hacia la izquierda. movf LCD_ApuntaCaracter,W call Mensajes ; Obtiene el ASCII del carcter apuntado. movwf LCD_ValorCaracter ; Guarda el valor de carcter. movf LCD_ValorCaracter,F ; Lo nico que hace es posicionar flag Z. En caso btfsc STATUS,Z ; que sea "0x00", que es cdig o indicador final goto LCD_FinMovimiento ; de mensaje, sale fuera. LCD_NoUltimoCaracter2 call LCD_Caracter ; Visualiza el carcter ASCII ledo. incf LCD_CursorPosicion,F ; Contabiliza el incremento de posicin del ; cursor en la pantalla. incf LCD_ApuntaCaracter,F ; Apunta a la siguiente posicin por visualizar. goto LCD_VisualizaCaracter ; Vuelve a visualizar el siguiente carcter LCD_FinMovimiento ; de la lnea. return ; Vuelve al programa principal.

Microprocesadores Y Perifricos

Pg. 27

UNASAM

Ing. Sistemas E informtica

; Librera "RETARDOS.INC" ; ZONA DE DATOS ;******************************************************** CBLOCK R_ContA R_ContB R_ContC ENDC ; Contadores para los retardos.

; ; RETARDOS de 4 hasta 10 microsegundos -------------------------------------------------; ; A continuacin retardos pequeos teniendo en cuenta que para una frecuencia de 4 MHZ, ; la llamada a subrutina "call" tarda 2 ciclos mquina, el retorno de subrutina ; "return" toma otros 2 ciclos mquina y cada instruccin "nop" tarda 1 ciclo mquina. ; Retardo_10micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. nop ; Aporta 1 ciclo mquina. nop ; Aporta 1 ciclo mquina. nop ; Aporta 1 ciclo mquina. nop ; Aporta 1 ciclo mquina. Retardo_5micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. Retardo_4micros ; La llamada "call" aporta 2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina. ; ; RETARDOS de 20 hasta 500 micros egundos ----------------------------------------------; Retardo_500micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. movlw d'164' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_200micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. movlw d'64' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_100micros ; La llamada "call" aporta 2 ciclos mquina.

Microprocesadores Y Perifricos

Pg. 28

UNASAM

Ing. Sistemas E informtica

movlw d'31' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_50micros ; La llamada "call" aporta 2 ciclos mquina. nop ; Aporta 1 ciclo mquina. movlw d'14' ; Aporta 1 ciclo mquina. Este es el valor de "K". goto RetardoMicros ; Aporta 2 ciclos mquina. Retardo_20micros ; La llamada "call" aporta 2 ciclos mquina. movlw d'5' ; Aporta 1 ciclo mquina. Este es el valor de "K". ; ; El prximo bloque "RetardoMicros" tarda: ; 1 + (K-1) + 2 + (K-1)x2 + 2 = (2 + 3K) ciclos mquina. ; RetardoMicros movwf R_ContA ; Aporta 1 ciclo mquina. Rmicros_Bucle decfsz R_ContA,F ; (K-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto Rmicros_Bucle ; Aporta (K-1)x2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina. ; ;En total estas subrutinas tardan: ; - Retardo_500micros: 2 + 1 + 1 + 2 + (2 + 3K) = 500 cm = 500 s. (para K=164 y 4 MHz). ; - Retardo_200micros: 2 + 1 + 1 + 2 + (2 + 3K) = 200 cm = 200 s. (para K= 64 y 4 MHz). ; - Retardo_100micros: 2 + 1 + 2 + (2 + 3K) = 100 cm = 100 s. (para K= 31 y 4 MHz). ; - Retardo_50micros : 2 + 1 + 1 + 2 + (2 + 3K) = 50 cm = 50 s. (para K= 14 y 4 MHz). ; - Retardo_20micros : 2 + 1 + (2 + 3K) = 20 cm = 20 s. (para K= 5 y 4 MHz). ; ; RETARDOS de 1 ms hasta 200 ms. ------------------------------------------------------; Retardo_200ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'200' ; Aporta 1 ciclo m quina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_100ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'100' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_50ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'50' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina.
Microprocesadores Y Perifricos Pg. 29

UNASAM

Ing. Sistemas E informtica

Retardo_20ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'20' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_10ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'10' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mqui na. Retardo_5ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'5' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_2ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'2' ; Aporta 1 ciclo mquina. Este es el valor de "M". goto Retardos_ms ; Aporta 2 ciclos mquina. Retardo_1ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'1' ; Aporta 1 ciclo mquina. Este es el valor de "M". ; ; El prximo bloque "Retardos_ms" tarda : ; 1 + M + M + KxM + (K -1)xM + Mx2 + (K -1)Mx2 + (M-1) + 2 + (M1)x2 + 2 = ; = (2 + 4M + 4KM) ciclos mquina. Para K=249 y M=1 supone 1002 ciclos mquina ; que a 4 MHz son 1002 s = 1 ms. ; Retardos_ms movwf R_ContB ; Aporta 1 ciclo mquina. R1ms_BucleExterno movlw d'249' ; Aporta Mx1 ciclos mquina. Este es el valor de "K". movwf R_ContA ; Aporta Mx1 ciclos mquina. R1ms_BucleInterno nop ; Aporta KxMx1 ciclos mquina. decfsz R_ContA,F ; (K-1)xMx1 cm (cuando no salta) + Mx2 cm (al saltar). goto R1ms_BucleInterno ; Aporta (K-1)xMx2 ciclos mquina. decfsz R_ContB,F ; (M-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1ms_BucleExterno ; Aporta (M-1)x2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina. ; ;En total estas subrutinas tardan: ; - Retardo_200ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 200007 cm = 200 ms. (M=200 y K=249). ; - Retardo_100ms: 2 + 1 + 2 + (2 + 4M + 4KM) = 100007 cm = 100 ms. (M=100 y K=249).

Microprocesadores Y Perifricos

Pg. 30

UNASAM

Ing. Sistemas E informtica

; - Retardo_50ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 50007 cm = 50 ms. (M= 50 y K=249). ; - Retardo_20ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 20007 cm = 20 ms. (M= 20 y K=249). ; - Retardo_10ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 10007 cm = 10 ms. (M= 10 y K=249). ; - Retardo_5ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 5007 cm = 5 ms. (M= 5 y K=249). ; - Retardo_2ms : 2 + 1 + 2 + (2 + 4M + 4KM) = 2007 cm = 2 ms. (M= 2 y K=249). ; - Retardo_1ms : 2 + 1 + (2 + 4M + 4KM) = 1005 cm = 1 ms. (M= 1 y K=249). ; ; RETARDOS de 0.5 hasta 20 segundos ----------------------- --------------------------; Retardo_20s ; La llamada "call" aporta 2 ciclos mquina. movlw d'200' ; Aporta 1 ciclo mquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos mquina. Retardo_10s ; La llamada "call" aporta 2 ciclos mquina. movlw d'100' ; Aporta 1 ciclo mquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos mquina. Retardo_5s ; La llamada "call" aporta 2 ciclos mquina. movlw d'50' ; Aporta 1 ciclo mquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos mquina. Retardo_2s ; La llamada "call" aporta 2 ciclos mquina. movlw d'20' ; Aporta 1 ciclo mquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos mquina. Retardo_1s ; La llamada "call" aporta 2 ciclos mquina. movlw d'10' ; Aporta 1 ciclo mquina. Este es el valor de "N". goto Retardo_1Decima ; Aporta 2 ciclos mquina. Retardo_500ms ; La llamada "call" aporta 2 ciclos mquina. movlw d'5' ; Aporta 1 ciclo mquina. Este es el valor de "N". ; ; El prximo bloque "Retardo_1Decima" tarda: ; 1 + N + N + MxN + MxN + KxMxN + (K -1)xMxN + MxNx2 + (K 1)xMxNx2 + ; + (M-1)xN + Nx2 + (M -1)xNx2 + (N-1) + 2 + (N-1)x2 + 2 = ; = (2 + 4M + 4MN + 4KM) ciclos mquina. Para K=249, M=100 y N=1 supone 100011 ; ciclos mquina que a 4 MHz son 100011 s = 100 ms = 0,1 s = 1 dcima de segundo. ; Retardo_1Decima
Microprocesadores Y Perifricos Pg. 31

UNASAM

Ing. Sistemas E informtica

movwf R_ContC ; Aporta 1 ciclo mquina. R1Decima_BucleExterno2 movlw d'100' ; Aporta Nx1 ciclos mquina. Este es el valor de "M". movwf R_ContB ; Aporta Nx1 ciclos mquina. R1Decima_BucleExterno movlw d'249' ; Aporta MxNx1 ciclos mquina. Este es el valor de "K". movwf R_ContA ; Aporta MxNx1 ciclos mquina. R1Decima_BucleInterno nop ; Aporta KxMxNx1 ciclos mquina. decfsz R_ContA,F ; (K-1)xMxNx1 cm (si no salta) + MxNx2 cm (al saltar). goto R1Decima_BucleInterno ; Aporta (K-1)xMxNx2 ciclos mquina. decfsz R_ContB,F ; (M-1)xNx1 cm (cuando no salta) + Nx2 cm (al saltar). goto R1Decima_BucleExterno ; Aporta (M-1)xNx2 ciclos mquina. decfsz R_ContC,F ; (N-1)x1 cm (cuando no salta) + 2 cm (al saltar). goto R1Decima_BucleExterno2 ; Aporta (N-1)x2 ciclos mquina. return ; El salto del retorno aporta 2 ciclos mquina. ; ;En total estas subrutinas tardan: ; - Retardo_20s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 20000807 cm = 20 s. ; (N=200, M=100 y K=249). ; - Retardo_10s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 10000407 cm = 10 s. ; (N=100, M=100 y K=249). ; - Retardo_5s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 5000207 cm = 5 s. ; (N= 50, M=100 y K=249). ; - Retardo_2s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 2000087 cm = 2 s. ; (N= 20, M=100 y K=249). ; - Retardo_1s: 2 + 1 + 2 + (2 + 4N + 4MN + 4KMN) = 1000047 cm = 1 s. ; (N= 10, M=100 y K=249). ; - Retardo_500ms: 2 + 1 + (2 + 4N + 4MN + 4KMN) = 500025 cm = 0,5 s. ; (N= 5, M=100 y K=249).

Microprocesadores Y Perifricos

Pg. 32

UNASAM

Ing. Sistemas E informtica

; ZONA DE DATOS ;*************************************************************** ******* __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC LIST P=16F84A INCLUDE <P16F84A.INC> CBLOCK Apuntador ENDC 0x0C ; Apunta al nmero de pgina donde se almacenan ; cada uno de los mensajes en la 24LC256.

UltimoMensaje EQU .10; Seala el nmero del ltimo mensaje. ; ZONA DE CDIGOS ;************************************************************** ORG 0 Inicio call LCD_Inicializa clrf Apuntador ; Inicializa el contador Principal movf Apuntador,W ; Apunta al inicio de cada mensaje ya que esta call M24LC256_Mensaje_a_LCD ; subrutina lo carga en (M24LC256_AddressHigh). call Retardo_2s ; Visualiza el mensaje durante este tiempo. incf Apuntador,F ; Apunta al siguiente mensaje. movf Apuntador,W ; Comprueba si ha llegado al ltimo mensaje. sublw UltimoMensaje ; (W)=UltimoMensaje -(Apuntador). btfss STATUS,C ; C=1?, (W) positivo? clrf Apuntador ; Ha resultado UltimoMensaje<(Apuntador). goto Principal INCLUDE <BUS_I2C.INC> del bus I2C. INCLUDE <M24LC256.INC> memoria 24LC256. INCLUDE <RETARDOS.INC> INCLUDE <LCD_4BIT.INC> END ; Subrutinas de control ; Subrutinas de control de la

Microprocesadores Y Perifricos

Pg. 33

UNASAM

Ing. Sistemas E informtica

7.3

PROCE IMIENTO

E PRUEBA

Exportamos el programa anterior con la extensin HEX. Para poder realizar la simulacin en el programa Proteus 7. SP , tenemos que construir un modelo con los perifricos que necesitamos; grabar el programa ya exportado en el PIC16F84A , posteriormente procedemos a simular el modelo, pulsando en el botn Play, y presionar dispositivos de entrada, para poder verificar su funcionamiento.

7.

UNCIONAMIENTO PRACTICO

EL PROYECTO

Al grabar la informacin del programa en circuitos verdaderos, Ud. podr elegir el sonido que desee que se emita al tocar un timbre de casa, telfono u otro dispositivo.

Microprocesadores Y Perifricos

Pg. 34

UNASAM

Ing. Sistemas E informtica

VIII.

COCLUSIONES

Se logro implementar y disear el visualizador de mensaje con PIC 16F84A. Se logr adquirir conocimientos fundamentales de l Microcontrolador. Se logr conocer el funcionamiento del PIC 16F84A. Se adquiri nociones bsicas de programacin con el programa MPLAB v8.63 Se adquiri nociones del simulador Proteus v7.1 SP2

Microprocesadores Y Perifricos

Pg. 35

UNASAM

Ing. Sistemas E informtica

IX.

ANEXOS

1. Proyecto En Funcionamiento

Microprocesadores Y Perifricos

Pg. 36

UNASAM

Ing. Sistemas E informtica

Microprocesadores Y Perifricos

Pg. 37

UNASAM

Ing. Sistemas E informtica

As sucesivamente hasta:

2. Se adjunta el CD del proyecto

Microprocesadores Y Perifricos

Pg. 38