IMPLEMENTACIÓN DE UNA PALANCA DE JUEGO (JOISTYCK).

Tamaño: px
Comenzar la demostración a partir de la página:

Download "IMPLEMENTACIÓN DE UNA PALANCA DE JUEGO (JOISTYCK)."

Transcripción

1 IMPLEMENTACIÓN DE UNA PALANCA DE JUEGO (JOISTYCK). Proyecto de Ingeniería Electrónica 1 Y 11 Ingeniería Electrónica. Alumnos: Jiménez Silva Javier Laguna Martínez Narda María Ramírez García Martín Asesor: Dr. Fausto Casco Sánchez. Abril

2 ÍNDICE Página 1. RESUMEN INTRODUCCIÓN 3 3. PRIMERA PROPUESTA. 4 Implementación con motores de corriente directa 3.1 DESARROLLO ANÁLISIS DE RESULTADOS SEGUNDA PROPUESTA. 7 Implementación 4.1 DESARROLLO ANALISIS DE RESULTADOS TERCERA PROPUESTA INTRODUCCIÓN CARACTERÍSTICAS DEL PIC DESCRIPCIÓN DE SUS PINES ORGANIZACIÓN DE LA MEMORIA PROGRAMA EN LENGUAJE ENSAMBLADOR PARA EL PIC 16F DESARROLLO ANALISIS DE RESULTADOS CONCLUSIONES BIBLIOGRAFIA APENDICE A 25 2

3 I. RESUMEN Se implementó la función de un Mouse mecánico a un joystick de juego, con el fin de que la población infantil pueda interactuar, con juegos en computadora, con un mayor rango de fuerza en sus movimientos. Para lo cual se investigo el funcionamiento interno de un ratón mecánico, en lo cual nos basamos para plantear una primera solución de tratar de controlar la velocidad del puntero en pantalla por medio de reducir el número de orificios para que el lector del ratón leyera más lento, no resulto, después se propuso el uso de motores, que se activarían al mover la palanca, se explicara más adelante por lo que se opto por utilizar pics obteniendo los resultados esperados. II. INTRODUCCIÓN. El ratón (o mouse) es un periférico de ordenador, generalmente fabricado en plástico, que podemos considerar, al mismo tiempo, como un dispositivo de entrada de datos y de control, dependiendo del software que maneje en cada momento. El nombre ratón hace referencia a un parecido físico con ese pequeño roedor. En los programas relacionados con el diseño y entornos operativos gráficos muchas veces el ratón permite utilizar el software de forma más sencilla y rápida que mediante el teclado. Fue diseñado por Douglas Engelbart y Bill English, y más tarde perfeccionado en los laboratorios de Palo Alto de la compañía Xerox (conocidos como Xerox Parc). Aunque fue empleado en varios ordenadores personales como por ejemplo el Apple Lisa, no fue hasta la aparición del Macintosh de Apple cuando este periférico definitivamente se dio a conocer a la gran masa de usuarios. Desde que la mayoría de los ratones modernos se conectan con USB, es posible usar ratones marca Apple en computadoras con otros sistemas operativos y viceversa. Hasta mediados de 2005 las computadoras de Apple seguían incluyendo ratones con un solo botón, pero la empresa ha lanzado un modelo con dos botones "virtuales" con sensores debajo de la cubierta plástica, dos botones laterales programables y una bolita que permite mover el puntero 360º, llamado Mighty Mouse. El ratón se desplaza con movimientos suaves sin apretarlo contra la alfombrilla, ya que esto lo hará funcionar mal y acabará por dañarlo. El ratón es el componente hardware (físico) del ordenador que antes se estropea y que hay que renovar y limpiar con más frecuencia, inclusive aunque se tenga mucho cuidado con él. Funcionamiento Dentro de la carcasa de plástico de un ratón se encuentran sus componentes básicos, una pequeña placa de circuito impreso, varios microinterruptores, sensores y algunos componentes más. El centro del mecanismo de un ratón es una gran bola de acero, recubierto de material plástico o goma, sujeta a la base del ratón por dos ejes que están en contacto con la superficie de la bola para transmitir cualquier movimiento que haga. Unidos a dos pequeñas ruedas radiales (una situada en el eje vertical y la otra en el horizontal). 3

4 Fig.1.1.Mecánica interna del ratón mecánico. Funcionamiento Dentro de la carcasa de plástico de un ratón se encuentran sus componentes básicos, una pequeña placa de circuito impreso, varios microinterruptores, sensores y algunos componentes más. El centro del mecanismo de un ratón es una gran bola de acero, recubierto de material plástico o goma, sujeta a la base del ratón por dos ejes que están en contacto con la superficie de la bola para transmitir cualquier movimiento que haga. Unidos a dos pequeñas ruedas radiales (una situada en el eje vertical y la otra en el horizontal). [1] Podemos decir que las operaciones básicas con el ratón son: Señalar, hacer clic, arrastrar, hacer doble clic y la más importante transmitir datos independientemente del puerto en el cual estén conectados. III. PRIMERA PROPUESTA. Implementación con motores de corriente directa DESARROLLO. Con respecto a lo investigado se propone sustituir la parte de la bola de acero de un mouse mecánico, con el fin de buscar una alternativa de menos sensibilidad, y mayor atracción para usuarios de juegos por computadora. En este caso se esta pensando en una población infantil de entre 6 y 12 años. El mouse mecánico se mueve sobre dos ejes, controlando la dirección y la velocidad por medio de la bola mecánica y por los lectores ópticos a través de las ruedas radiales. Los lectores ópticos del ratón mecánico nos proporcionan la velocidad del cursor en pantalla con respecto al número de perforaciones en las ruedas radiales. Por lo tanto se les disminuyo el número de perforaciones con el fin de ayudar a disminuir la velocidad del cursor. Para sustituir la bola de acero, se implemento un mecanismo que trabajara igual, pero por medio de motores, donde cada motor controlaba uno de los ejes. Para controlar el cambio de polaridad de ambos motores se utilizaron cuatro switches de dos polos dos tiros. 4

5 Fig. 1.2 Switch 2 polos 2 tiros. SERIE "TM" 15 Ampers en contactos 250VAC Homologación UL Alta precisión Diferentes opciones de contacto Vida mecánica; 20x106 operaciones Vida eléctrica; 5x105 operaciones Arreglo: 2 polo 2 tiros SPDT Terminales de tornillo Terminales para soldar y quick bajo pedido [2]. Fig.1.3 Aquí mostramos las especificaciones de cómo funcionan los pines de los switches para controlar el movimiento de cada motor. C = Terminal común. NC=Terminal normalmente cerrada. NA=Terminal normalmente abierta. Se alimento con ±9V. Fig.1.4. Conexión de los switches con el motor para controlar el movimiento vertical con un motor y el horizontal con otro, se muestra solo un motor ya que para el otro la conexión fue la misma. Sabemos que al cambiar la polaridad de un motor podemos controlar el movimiento de este, en este caso un motor controlaba el movimiento hacia delante y hacia atrás, es decir el eje vertical; Y el segundo motor de forma análoga controla el movimiento en forma horizontal. 5

6 Fig La conexión de los switch en el punto central que se ve en la fig.1.3 nos proporciona las polaridades en los nodos N1 y N2, Para este caso en que ninguno de los switches están conectados las polaridades para ambos nodos son (Tabla 1): Nodo Polaridad N1 - N2 - Fig Cuando se conecta el switch de arriba se tiene en los nodos las siguientes polaridades (Tabla 2). Nodo Polaridad N1 + N2 - Es esta polaridad la que nos da un determinado sentido En el giro del motor Fig Al conectarse el switch de abajo en los nodos se presentan las siguientes polaridades (Tabla 3). Nodo Polaridad N1 - N2 + Con esta polaridad obtenemos el giro en sentido contrario al que nos proporciona la conexión de la figura Es importante mencionar que bajo esta implementación el movimiento inclinado se lograba por medio de la activación de los dos motores al mismo tiempo. Esto se vera más claro con la siguiente figura. Fig.1.5 Esquema de la implementación a la que se llego ya con la palanca incorporada al circuito, de la primera propuesta. 6

7 ANALISIS DE RESULTADOS. Para esta primera propuesta se obtuvo los movimientos deseados con respecto a la dirección del cursor en pantalla, pero la velocidad no era del todo controlable, ya que la velocidad a la que trabajaban los motores no era proporcional a la velocidad del los lectores ópticos, con respecto a las ruedas radiales. Por lo tanto se realizó una segunda idea trabajando bajo esta misma implementación. IV SEGUNDA PROPUESTA. DESARROLLO. En primera instancia se trato de controlar la velocidad del cursor en pantalla controlando la cantidad de corriente con la que se alimentaba a los motores y así reducir su velocidad. Esto se logro por medio de transistores como se muestra en la figura siguiente: Fig.1.5. Circuito controlador de corriente. Este circuito controla la corriente que alimenta a los motores y con esto se pudo controlar la velocidad del cursor en pantalla. 7

8 ANALISIS DE RESULTADOS. Se llego al resultado deseado, ya que en el monitor se observo un comportamiento normal del cursor controlado por una palanca, sustituyendo así el mouse mecánico de una computadora. Sin embargo se presento un problema de bastante consideración, que es el costo del material, ya que se utilizaron motores de alta precisión con un costo de $500 por motor más el precio de los demás componentes del circuito ya con la palanca y base de esta implementada, el precio se elevo a $1500. La exposición donde se presento este proyecto requería 14 palancas donde los niños estuvieran interactuando con estos juegos de computadora. Donde cuatro de estas palancas eran de repuesto, por si se presentaban fallas en las que estaban en funcionamiento. Por lo tanto el costo se elevo hasta $ Podemos ver que esto no era costeable por lo que se realiza una nueva investigación para que por medio de otra alternativa se lograra lo que se nos pedía, con un costo menor. Por lo que se propuso lo siguiente. III. TERCERA PROPUESTA Joystick con un PIC 16F84 En esta parte haremos nuestro joystick con un PIC16f84, en esta etapa tendremos un propuesta mucho mas económica y mucho mas fácil de implementar, ya que el número de componentes electrónicos y mecánicos son menos. El precio a pagar es la parte de programación de nuestro Pic16f84 para construir el joystick. INTRODUCCIÓN. El PIC16F84 es un microcontrolador, una especie de "ordenador en miniatura", que podemos programar. En su interior posee un microprocesador, una memoria RAM (volátil) donde guardaremos las variables, una memoria EEPROM (no volátil) donde guardaremos nuestro programa, un Timer o contador que nos facilitará algunas tareas CARACTERÍSTICAS DEL PIC. 1Kbyte de memoria EEPROM para nuestro programa 68 bytes (de 8 bits) de memória RAM 64 bytes de memoria EEPROM para datos (no volátiles) Solo 35 instrucciones 13 pines de entrada/salida (un puerto de 8 bits + otro de 5 bits) Timer/contador de 8 bits 8

9 DESCRIPCIÓN DE SUS PINES Fig. 1.6.PINES del PIC16F8X. La figura 1.6 Es un diagrama de los PINES que conforman el PIC. Con la siguiente funcionalidad: RA0, RA1, RA2, RA3 y RA4: son los pines del puerto A RB0, RB1, RB2, RB3, RB4, RB5, RB6 y RB7: son los pines del puerto B. MCLR: Pin de reseteo del pic, cuando se pone a "0" el pic se resetea. Vdd y Vss: pines de alimentación (Vdd 5V y Vss a masa) OSC1/CLKIN y OSC2/CLKOUT: son para el oscilador. Los tipos de osciladores más usados son el XT (cristal de cuarzo) y el RC (resistencia y condensador) el modo de conexionado es el siguiente: Fig Osciladores utilizados. Tabla 4. Oscilador XT C1=C2=33pF Crystal = 4MHz Oscilador RC C1 alrededor de 20pF 5K O = R1 = 100K O En la tabla 4, se presentan los valores de los componentes para el armado de los osciladores. ORGANIZACIÓN DE LA MEMORIA. El PIC tiene tres tipos de memoria que tenemos que distinguir. La memoria EEPROM, la memoria RAM y la memoria EEPROM. 9

10 La memoria se organiza como lo muestra la Fig.1.7 Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podrá ser leída por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra. Dos: la memoria RAM en cuyos registros se irán almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratará aquí por ser una memoria más difícil de emplear. Fig Organización de la memoria. La memoria EEPROM o memoria de programa. El espacio marcado como "User memory Space" es el espacio de memoria donde irá nuestro programa, comprende las direcciones de memoria desde la 0000h hasta la 3FFh (3FFh en decimal es 1023, mas la dirección 0000h hacen 1024 direcciones, es decir, 1Kbyte) "Reset Vector" es la primera dirección a la que se dirige el pic al encenderlo o al resetearlo. "PC" y los "Stack Level" son empleados por el pic y nosotros no tenemos acceso a ellos. DESARROLLO. Para esta parte de programación nos apoyamos en nuestro asesor, y en el manual del PIC 16F8X. El programa es el siguiente: PROGRAMA EN LENGUAJE ENSAMBLADOR PARA EL PIC 16F84 PARA EL JOYSTICK ; Emulador PS/2 Mouse ; Escrito para el PIC16F84 con un oscilador RC con una capacitancia de 20pFy una 10

11 Resistencia de 5Kohm. ; Oscilador entre 3.50 MHz MHz) ; ; INFORMACION ; ; PS/2 bus de baja velocidad = 40 us +/- 25% (30 us - 50 us), con 40 instrucciones por ; ciclo de reloj. ; PS/2 bus de alta velocidad = 40 us +/- 25% (30 us - 50 us) ; RC oscilador 20pF/5k = 4.61 MHz +/- 25% (3.50 MHz MHz) ; 1 instrucción por ciclo de reloj 4.61 MHz (RC) = 0.87 us +/- 25% (0.65 us us) ; Actual PS/2 bus frecuencia del (RC) = 12.5 khz +/- 25% (10.0kHz- 16.7kHz) ; CABECERA: TITLE PROGRAMA DE JOYSTICK" LIST P=16F84 INCLUDE "p16f84.inc" RADIX DEC ERRORLEVEL -224, 1 CONFIG _CP_OFF & _WDT_OFF & _XT_OSC ; DEFINES: #DEFINE DATA PORTA, 2 ; Puede ser asignado para un pin de entrada_salida #DEFINE CLOCK PORTA, 3 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Yp PORTB, 0 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Yn PORTB, 1 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Xp PORTB, 2 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Xn PORTB, 3 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Bl PORTB, 4 ; Puede ser asignado para un pin de entrada_salida #DEFINE PS2_Br PORTB, 5 ; Puede ser asignado para un pin de entrada_salida #DEFINE PERIOD 20 ;Tiempo par lectura entre cada entrda Min=(osc frecuencia)/ #DEFINE DISTANCE 2 ;Suma para que los contadores de X/Y son los incremento/decremento ; ASIGNACION DE MEMORIA RAM cblock 0x0C 11

12 TEMP0, TEMP1 RECEIVE, PARITY, COUNTER; Para rutinas de entrada salida REPORT_RATE, RESOLUTION ;Contesta a las demandas de estado endc FLAGS, XY_FLAGS dbuttons X_COUNTER Y_COUNTER ;"Boton de estados" ;FLAGS: ; bit 7--Siempre 0 ; bit 6--Stream(0)/Remote(1) el modo ; bit 5 -- Disable(0)/Enable(1) el modo ; bit :1(0)/2:1(1) ; bit 3 -- siempre 0 ; bit 2 -- Siempre 0 ; bit 1 -- Siempre 0 ; bit 0 -- Siempre 0 MODE equ 6 ENABLE equ 5 SCALE equ 4 ;XY_FLAGS: ; bit 7 -- Y saturacion ; bit 6 -- X saturacion ; bit 5 -- Y ; bit 4 -- X ; bit 3 -- Siempre 1 ; bit 2 -- Siempre 0 (boton medio) ; bit 1 -- El estado anterior del botón derecho ; bit 0 El estado anterior del botón izquierdo yovf equ 7 xovf equ 6 ysign equ 5 xsign equ 4 ;dbuttons ; bit 7 -- Siempre 0 ; bit 6 -- Siempre 0 ; bit 5 Siempre 0 ; bit 4 Siempre 0 12

13 ; bit 3 Siempre 0 ; bit 2 Siempre 0 ; bit 1 Cambia el estado del boton derecho ; bit 0 Cambia el estado del boton izquierdo cblock LENGTH SEND1 SEND2 SEND3 endc ; MACROS: ;Delay "Cycles" instruccion por ciclo Delay macro Time if (Time==1) nop exitm endif if (Time==2) goto $ + 1 exitm endif if (Time==3) nop goto $ + 1 exitm endif if (Time==4) goto $ + 1 goto $ + 1 exitm endif if (Time==5) goto $ + 1 goto $ + 1 nop exitm endif if (Time==6) goto $ + 1 goto $ + 1 goto $

14 exitm endif if (Time==7) goto $ + 1 goto $ + 1 goto $ + 1 nop exitm endif if (Time%4==0) movlw (Time-4)/4 call Delay_us exitm endif if (Time%4==1) movlw (Time-5)/4 call Delay_us nop exitm endif if (Time%4==2) movlw (Time-6)/4 endif if (Time%4==3) call goto $ + 1 exitm Delay_us movlw (Time-7)/4 call Delay_us goto $ + 1 nop exitm endif endm ; ORG 0x000: org goto 0x000 Start ; COMANDOS: if (high Table1End!= 0) ERROR endif "No se encuentra este comando" 14

15 Command movlw 0x04 subwf RECEIVE, w bnc SetResolution movlw 0xC8 subwf RECEIVE, w bnc SetReportRate movlw 0xE6 ;0xE6 codigo subwf RECEIVE, w bnc MainLoop HandlerTable addwf PCL, f ;suma offset goto Mouse_E6 ;0xE6 - escala 1:1 goto Mouse_E7 ;0xE7 - escala 2:1 goto MainLoop ;0xE8 - resolucion goto Mouse_E9 ;0xE9 - demanda goto Mouse_EA ;0xEA - modo goto Report ;0xEB lectura de datos goto MainLoop ;0xEC - Reset del modo goto MainLoop ;0xED goto WrapMode ;0xEE Selecciona el modo goto MainLoop ;0xEF goto Mouse_F0 ;0xF0 selecciona el modo temporal goto MainLoop ;0xF1 goto Mouse_F2 ;0xF2 tipo de escritura goto MainLoop ;0xF3 cantidad de respuesta goto Mouse_F4 ;0xF4 - Enable goto Mouse_F5 ;0xF5 - Disable goto Mouse_F6 ;0xF6 - Default goto MainLoop ;0xF7 goto MainLoop ;0xF8 goto MainLoop ;0xF9 goto MainLoop ;0xFA goto MainLoop ;0xFB goto MainLoop ;0xFC goto MainLoop ;0xFD goto PacketOut ;0xFE Table1End goto Reset ;0xFF - Reset ; START: Start clrf PORTA clrf PORTB bsf STATUS, RP0 ;(TRISA=TRISB=0xFF por default) movlw 0x57 movwf OPTION_REG 15

16 bcf STATUS, RP0 movlw 0x08 ;Bit 3 siempre = 1, borrado previo del estado del ;boton movwf XY_FLAGS ; goto Reset ; Reset Mode: Reset movlw 0xAA movwf SEND1 ;carga codigo call LoadDefaults clrf SEND2 ;carga el dispositivo movlw 0x02 movwf LENGTH call BATdelay goto PacketOut ;salida de 2-byte "dispositivo ID" packet ; Stream/Remote Mode: MainLoop clrf X_COUNTER ;limpia los contadores clrf Y_COUNTER MainLoop1 btfss DATA goto PacketIn movlw PERIOD ;periodo subwf TMR0, w btfss STATUS, C ;TMR0=solicita el periodo goto MainLoop1 ; No--loop clrf TMR0 ; Si--reset TMR0, en la lectura de las entradas... call ReadInputs btfsc FLAGS, MODE goto MainLoop1 btfss FLAGS, ENABLE ;Disable(0)/Enable(1) goto MainLoop1 movf X_COUNTER, w ;encuesta el movimiento de X iorwf Y_COUNTER, w ; encuesta el movimiento de Y iorwf dbuttons, w ;encuesta el estado del boton bz MainLoop1 ; goto Report ; REPORT: Report movf dbuttons, w xorwf XY_FLAGS, f ;calcula la corriente del boton de estado 16

17 movf XY_FLAGS, w movwf SEND1 movf X_COUNTER, w movwf SEND2 movf Y_COUNTER, w movwf SEND3 movlw 0x03 ;indica el movimiento de los datos movwf LENGTH ; goto PacketOut ; OUTPUT PACKET PacketOut movlw SEND1 ;primer byte del paquete movwf FSR movf LENGTH, w ;Longitud del paquete movwf TEMP1 PacketOutLoop movf INDF, w ;toma el byte de datos call ByteOut ; salida de bytes xorlw 0xFF ;prueba RTS error bz PacketIn xorlw 0xFE ^ 0xFF bz PacketOut incf FSR, f ; Apunte al próximo byte decfsz TEMP1, f goto PacketOutLoop goto MainLoop ; READ PACKET PacketIn call ByteIn xorlw 0xFF ;error de paridad bz Mouse_ERR xorlw 0xFE ^ 0xFF ;disminuye el error bz MainLoop1 movlw 0xFE xorwf RECEIVE, w bz PacketOut Acknowledge movlw 0xFA ;reconocer call ByteOut goto Command ; LECTURA DE ENTRADAS 17

18 ReadInputs movlw DISTANCE btfss PS2_Xp ;lee entradas addwf X_COUNTER, f btfss PS2_Yp addwf Y_COUNTER, f btfss PS2_Xn subwf X_COUNTER, f btfss PS2_Yn subwf Y_COUNTER, f bcf XY_FLAGS, xsign btfsc X_COUNTER, 7 bsf XY_FLAGS, xsign bcf XY_FLAGS, ysign btfsc Y_COUNTER, 7 bsf XY_FLAGS, ysign movf XY_FLAGS, w ;toma el anterior estado del boton andlw b' ' btfss PS2_Bl ;calcula cambios en el boton de estados xorlw b' ' btfss PS2_Br xorlw b' ' movwf dbuttons ;guarda los cambios en el boton de estados retlw 0x00 ; MODO WRAP WrapMode btfsc DATA ;Espera para el reset goto WrapMode call ByteIn ;lee un byte desde host xorlw 0xFE ;encuesta para abortar la transmision bz WrapMode movf RECEIVE, w xorlw 0xFF ;encuesta para el commando de reset bz Acknowledge xorlw 0xFF^0xEC ;encuesta para "Reset Modo Wrap " comando bz Acknowledge xorlw 0xEC call ByteOut ;Otro, echo goto WrapMode 18

19 ; LOAD DEFAULT VALUES: LoadDefaults movlw 100 ;longitude de la respuesta por default movwf REPORT_RATE movlw 0x02 ;resolucion po default movwf RESOLUTION clrf FLAGS ;Modo, escala 1:1, disabled retlw 0x00 ; EMULATE BAT: BATdelay clrf TEMP0 ;retardo 400 ms clrf TEMP1 DelayLoop Delay 6 decfsz TEMP0, f goto DelayLoop decfsz TEMP1, f goto DelayLoop retlw 0x00 ; COMANDOS: SetResolution movf RECEIVE, w movwf RESOLUTION goto MainLoop SetReportRate movf RECEIVE, w movwf REPORT_RATE goto MainLoop ;0xE6 - Set Scaling 1:1 Mouse_E6 bcf FLAGS, SCALE goto MainLoop ;0xE7 - Set Scaling 2:1 Mouse_E7 bsf FLAGS, SCALE goto MainLoop ;0xE9 - Status Request Mouse_E9 movf FLAGS, w btfss PS2_Bl iorlw 0x04 btfss PS2_Br 19

20 iorlw 0x01 movwf SEND1 movf RESOLUTION, w movwf SEND2 movf REPORT_RATE, w movwf SEND3 movlw 0x03 movwf LENGTH goto PacketOut ;0xEA - Set Stream Mode Mouse_EA bcf FLAGS, MODE goto MainLoop ;0xF0 - Set Remote Mode Mouse_F0 bsf FLAGS, MODE goto MainLoop ;0xF2 - Get Device ID Mouse_F2 clrf SEND1 movlw 0x01 movwf LENGTH goto PacketOut ;0xF4 - Enable Reporting Mouse_F4 bsf FLAGS, ENABLE goto MainLoop ;0xF5 - Disable Reporting Mouse_F5 bcf FLAGS, ENABLE goto MainLoop ;0xF6 - Set Default Mouse_F6 call LoadDefaults goto MainLoop ;Invalid command Mouse_ERR movlw 0xFE call ByteOut goto MainLoop ; OUTPUT ONE BYTE: - TIMING IS CRITICAL!!! ByteOut movwf TEMP0 InhibitLoop btfss CLOCK goto InhibitLoop 20

21 Delay 100 ;(50 microseg = 58 ciclos de reloj, min) btfss CLOCK goto InhibitLoop btfss DATA retlw 0xFF clrf PARITY movlw 0x08 movwf COUNTER movlw 0x00 call BitOut ;bit (0) encendido btfss CLOCK goto ByteOutEnd Delay 4 ByteOutLoop movf TEMP0, w xorwf PARITY, f call BitOut ;Bits de datos btfss CLOCK goto ByteOutEnd rrf TEMP0, f decfsz COUNTER, f goto ByteOutLoop Delay 2 comf PARITY, w call BitOut ;Bit de paridad btfss CLOCK goto ByteOutEnd Delay 5 movlw 0xFF call BitOut ;Bit (1) de alto Delay 48 retlw 0x00 ByteOutEnd bsf STATUS, RP0 bsf DATA bsf CLOCK bcf STATUS, RP0 retlw 0xFE BitOut bsf STATUS, RP0 andlw 0x01 btfss STATUS, Z bsf DATA btfsc STATUS, Z bcf DATA Delay 21 bcf CLOCK Delay 45 bsf CLOCK bcf STATUS, RP0 21

22 Delay 5 return ; TIEMPO DE LECTURA DE UN BYTE: (ALREDEDOR DE 1ms) ByteIn btfss CLOCK retlw 0xFE btfsc DATA retlw 0xFE movlw 0x08 movwf COUNTER clrf PARITY Delay 28 ByteInLoop call BitIn ;Bits de datos btfss CLOCK retlw 0xFE bcf STATUS, C rrf RECEIVE, f iorwf RECEIVE, f xorwf PARITY,f decfsz COUNTER, f goto ByteInLoop Delay 1 call BitIn ;Bit de paridad btfss CLOCK retlw 0xFE xorwf PARITY, f Delay 5 ByteInLoop1 Delay 1 call BitIn ;Bit de paro btfss CLOCK retlw 0xFE xorlw 0x00 btfsc STATUS, Z clrf PARITY btfsc STATUS, Z ; bit = 1? De paro goto ByteInLoop1 bsf STATUS, RP0 ;Acknowledge bcf DATA Delay 11 bcf CLOCK Delay 45 bsf CLOCK Delay 7 bsf DATA 22

23 bcf STATUS, RP0 btfss PARITY, 7 ;Paridad correcta? retlw 0xFF ; No regresa error Delay 45 retlw 0x00 BitIn Delay 8 bsf STATUS, RP0 bcf CLOCK Delay 45 bsf CLOCK bcf STATUS, RP0 Delay 21 btfsc DATA retlw 0x80 retlw 0x00 ; RETARDOS(DELAY): ;Delays 4w+4 ciclos (incluyendo llamadas,return, y movlw) (0=256) Delay_us addlw -1 ;retardo usado en I/O btfss STATUS, Z goto Delay_us return end DESARROLLO. El programa anterior se grabo en nuestro PIC y se mando a armar el circuito para nada más anexarlo a la palanca de juegos: 23

24 Fig.1.8. Circuito armado con el PIC16F8X El circuito mostrado en la figura 1.8 Es el que se armo con oscilador(fig. 1.7, tabla 4) y resistencias para proteger el PIC. Podemos ver que con los PIN (6 al 11) se controla el movimiento del cursor en todas las direcciones necesarias. Este circuito se anexo a la palanca de mando. Mostrando también la entrada para la interfaz de la computadora ANALISIS DE RESULTADOS Con esta propuesta se llego a lo que se buscaba la implementación de las funciones de un mouse mecánico en una palanca de mando, con un costo menor al de las propuestas anteriores, ya que cada PIC tiene el valor (en el momento de realizar este proyecto) de $80 más el valor de los demás componentes nos da una valor por palanca de mando de $580 que es el 38.8% del precio total del costo de la propuesta anterior; Ahora El costo para 14 palancas de mando es de $8120 que son $12880 menos que la propuesta anterior es decir se redujo el coste de producción en un 38.66% VI CONCLUSIONES. Este proyecto nos pareció muy interesante, ya que aplicamos bastantes conocimientos de diseño para implementar la parte electrónica de este. Así como profundizar más en la programación de los PIC (en nuestro caso el PIC16F8X). Lo más interesante para nosotros como ingenieros y es en gran parte en lo que se basa nuestro campo de trabajo, es que cuando pensamos que ya teniamos el problema resuelto electrónicamente, surgió la parte económica, fue muy interesante lidiar con esto ya que tuvimos que pensar en otra posibilidad para solucionar lo planteado con un menor coste de producción. Logrando así nuestro cometido, y comprobando la gran gama de posibilidades que tenemos como ingenieros para solucionar problemas de manera más eficiente, para el usuario. Nos impresiono como este proyecto se volvió tangible cuando estuvimos presentes en la exposición que se realizo en Monterrey, y ver como los niños interactuaban con los juegos de computadora por medio de las palancas de mando que diseñamos. 24

25 VII BIBLIOGRAFIA. Circuitos microelectrónicas, Sedra/Smith, editorial Oxford University Press, cuarta edicion Wikkipedia.com Taller sobre PICS impartido por la UAM-I. VIII APENDICE A PROGRAMACION DEL PIC16F84 Registros internos A continuación se explican todos los registros de configuración y control de la memoria RAM. Estos registros se usan para controlar los pines del pic, consultar los resultados de las operaciones de la ALU (unidad aritmética lógica), cambiar de banco de memoria... entre otras cosas. En BANCO "0" INDF (direccionamiento indirecto): Dirección 00h, sirve para ver el dato de la dirección a la que apunta el registro FSR (dir. 04h) que veremos mas adelante TMR0 (Timer/contador): Dirección 01h, Aquí se puede ver el valor en tiempo real del Timer/contador. También se puede introducir un valor y alterar así el conteo. Este conteo puede ser interno (cuenta ciclos de reloj) o externo (cuneta inpulsos introducidos por RA4). PCL (Parte baja del contador de programa): Dirección 02h, Modificando este registro se modifica el contador de programa, este contador de programa es el que señala al pic en que dirección (de EEPROM) tiene que leer la siguiente instrucción. Esto se utiliza mucho para consultar tablas (ya veremos mas adelante) STATUS: Dirección 03h, este es uno de los registros mas importantes y el que mas vas a utilizar. Hay que analizar el funcionamiento de este registro bit a bit: o CARRY, Dirección STATUS,0 (bit 0): bit de desbordamiento. Este bit se pone a "1" cuando la operación anterior ha rebasado la capacidad de un byte. Por ejemplo, si sumo dos números y el resultado no cabe en 8 bit el CARRY se pone a "1", Pasa lo mismo cuando resto dos números y el resultado es un número negativo. Se puede usar para saber si un número es mayor que otro (restándolos, si hay acarreo es que el segundo era mayor que el primero). Una vez que este bit se pone a "1" no se baja solo (a"0"), hay que hacerlo por programa si queremos volverlo a utilizar. o DC (digit carry), Dirección STATUS,1 (bit 1): lo mismo que el anterior pero esta vez nos avisa si el número no cabe en cuatro bits. o Z (zero), Dirección STATUS,2 (bit 2): Se pone a "1" si la operación anterior ha sido cero. Y pasa a "0" si la operación anterior no ha sido cero. Se usa para comprobar la igualdad entre dos números (restándolos, si el resultado es cero ambos números son iguales) o PD (Power - Down bit), Dirección STATUS,3 (bit3) se pone a "0" después de ejecutar la instrucción SLEEP*, se pone a "1" después de ejecutar la instrucción CLRWDT* o después de un power-up*. 25

26 o o o TO (Timer Up), Dirección STATUS,4 (bit4) se pone a "0" cuando se acaba el tiempo del WATCHDOG*, Se pone a "1" despues de ejecutar las instrucciones, CLRWDT* o SLEEP* o despues de un power-up*. RP0 y RP1 (selección de banco), Dirección STATUS,5 y STATUS,6. Como el PIC16F84 solo tiene dos bancos de memoria el RP1 no se usa para nada, la selección del banco se hace mediante RP0 (STATUS,5), si está a "0" nos encontramos en el banco 0, y si está a "1" nos encontramos en el banco 1. IRP, Dirección STATUS,7, En este PIC no se usa para nada. FSR (Puntero), Dirección 04h, se usa para direccionamiento indirecto en combinación con el registro INDF (dir. 00h): se carga la dirección del registro que queremos leer indirectamente en FSR y se lee el contenido de dicho registro en INDF. PORTA (Puerto A), Dirección 05h. Con este registro se puede ver o modificar el estado de los pines del puerto A (RA0 - RA4). Si un bit de este registro está a "1" también lo estará el pin correspondiente a ese bit. El que un pin esté a "1" quiere decir que su tensión es de 5V, si está a "0" su tensión es 0V. Correspondencia: o RA0 ==> PORTA,0 o RA1 ==> PORTA,1 o RA2 ==> PORTA,2 o RA3 ==> PORTA,3 o RA4 ==> PORTA,4 PORTB (Puerto B), Dirección 06h igual que PORTA pero con el puerto B Correspondencia: o RB0 ==> PORTB,0 o RB1 ==> PORTB,1 o RB2 ==> PORTB,2 o RB3 ==> PORTB,3 o RB4 ==> PORTB,4 o RB5 ==> PORTB,5 o RB6 ==> PORTB,6 o RB7 ==> PORTB,7 Dirección 07h, No utilizada por este PIC. EEDATA, Dirección 08h. En este registro se pone el dato que se quiere grabar en la EEPROM de datos EEADR, Dirección 09h. En este registro se pone la dirección de la EEPROM de datos donde queremos almacenar el contenido de EEDATA PCLATH, Dirección 0Ah. Modifica la parte alta del contador de programa (PC), el contador de programa se compone de 13 bits, los 8 bits de menor peso se pueden modificar con PCL (dir. 02h) y los 5 bits de mayor peso se pueden modificar con PCLATH INTCON (controla las interrupciones), Dirección 0Bh. Se estudia bit a bit: o RBIF (Flag de interrupción por cambio de PORTB) Dirección INTCON,0 (bit 0) se pone a "1" cuando alguno de los pines RB4, RB5, RB6, o RB7 cambia su estado. Una vez que está a "1" no pasa a "0" por si mismo: hay que ponerlo a cero por programa. o INTF (Flag de interrupción de RB0) Dirección INTCON,1. Si está a "1" es que ha ocurrido una interrupción por RB0, si está a "0" es que dicha interrupción no ha ocurrido. Este bit es una copia de RB0. o TOIF (Flag de interrupción por desbordamiento de TMR0) Dirección INTCON,2. Cuando TMR0 se desborda este Flag avisa poniendose a "1". Poner a "0" por programa. 26

27 o o o o o RBIE (Habilita la interrupción por cambio de PORTB) Dirección INTCON,3. Si está a "1" las interrupciones por cambio de PORTB son posibles. INTE (Habilita la interrupción por RB0) Dirección INTCON,4. Si lo ponemos a "1" la interrupción por RB0 es posible TOIE (Habilita la interrupción por desbordamiento de TMR0) Dirección INTCON,5. Si este bit esta a "1" la interrupción por desbordamiento de TMR0 es posible. EEIE (Habilita la interrupción por fin de escritura en la EEPROM de datos) Dirección INTCON,6. Cuando este bit está a "1" la interrupción cuando acaba la escritura en la EEPROM de datos es posible. GIE (Habilita las interrupciones globalmente) Dirección INTCON,7. Este bit permite que cualquier interrupción de las anteriores sea posible. Para usar alguna de las interrupciones anteriores hay que habilitarlas globalmente e individualmente. Estos conceptos no serán explicados aqui ya que no los considero importantes para introducirles en la programación de PICs. Ahora vamos con el banco 1, solo un comentario antes de empezar: recuerdas la tabla de registros internos que veíamos en el punto 2.2? (ver tabla) ves que los registros del banco 0 y los del banco 1 tienen direcciones distintas, en realidad podemos utilizar las mismas direcciones para referirnos a registros que están en uno u otro banco. El pic las diferenciará sin problemas gracias al bit de selección de banco (RP0). Por ejemplo, la dirección 05h se refiere a PORTA si estamos en el banco 0 y a TRISA si estamos en el banco 2. Sabiendo esto vamos con los registros del BANCO 1: INDF, Dirección 00h, Igual que en el Banco 0 OPTION, Dirección 01h, (configuración del prescaler, Timer, y alguna cosa mas) Se estudia bit a bit o PS0, PS1 y PS2 (Bits del 0 al 2) Configuración del preescaler: El preescaler es un divisor de pulsos que está a la entrada del Timer-contador. El prescaler divide el número de pulsos que le entran al timer-contador o al Wachtdog. El factor de división es el siguiente (según los valores de PS2, PS1 y PS0 respectivamente o PSA, Dirección OPTION,3. Bit de asignación de prescaler: si está a "1" el prescaler se asigna a WDT (Wachtdog), si está a "0" se asigna al TMR0 27

28 o TOSE, Dirección OPTION,4. Bit de selección del tipo de flanco para TMR0. A "1" se incrementa TMR0 por flanco descendente de RA4, a "0" se incrementa TMR0 por flanco ascendente de RA4. o TOCS, Dirección OPTION,5. Selecciona la entrada de reloj de TMR0. A "1" la entrada de reloj de TMR0 es por flanco de la patilla RA4, a "0" la entrada de reloj de TMR0 es por ciclo de reloj interno. o INTEDG, Dirección OPTION,6. Tipo de flanco para la interrupción por RB0: A "1" la interrupción será por flanco ascendente, a "0" la interrupción será por flanco decendente. o RBPU, dirección OPTION,7. Carga Pull-Up en puerto B. A "0" todas las salidas del puerto B tendrán una carga de pull-up interna. PCL, Dirección 02h, igual que en el banco 0 STATUS, Dirección 03h, Igual que en el banco 0 FSR, Dirección 04h, Igual que en el banco 0 TRISA, Dirección 05h, Configura el puerto A como entrada o salida. Si un bit de este registro se pone a "0" el pin correspondiente en el puerto A será una salida, por el contrario, si se pone a "1" el pin correspondiente en el puerto A será una entrada. TRISB, Dirección 06h, Igual que el anterior pero con el puerto B Dirección 07h, No usada en este pic EECON1, Dirección 08h, Controla la lecturo y escritura en la EEPROM de datos. Se estudia bit a bit: o RD, Dirección EECON1,0 (bit 0) A "1" iniciamos el ciclo de lectura, cuando acaba el ciclo se pone a "0" el solito o WR, Dirección EECON1,1 (bit 1) A "1" indicamos que comienza el ciclo de escritura, cuando acaba el ciclo se pone a "0" él solito o WREN, Dirección EECON1,2 (bit 2) si lo ponemos a "1" se permite la escritura, a "0" no se permite. o WRERR, Dirección EECON1,3 (bit 3) error de escritura, si está a "1" indica que no se ha terminado el ciclo de escritura. o EEIF, Dirección EECON1,4 (bit 4) interrupción de ciclo de escritura de la EEPROM, si está a "1" indica que el ciclo de escritura ha terminado, hay que ponerlo a "0" por programa. o Bits del 5 al 7 no se utilizan. EECON2, Dirección 09h, Se utiliza para la escritura en la EEPROM de datos como medida de seguridad: para poder guardar algo en la EEPROM hay que cargar el valor 55h en este registro. PCLATH, Dirección 0Ah, Igual que en el banco 0 INTCON, Dirección 0Bh, Igual que en el banco 1 Set de Instrucciones del PIC16F84 Para entender mejor cada instrucción se explica a continuación el significado de algunos parámetros: f: Registro al que afecta la instrucción W: Acumulador (Working register) b: Número de bit (hay instrucciones que afectan a un solo bit) k: constante (un número) d: selección de destino del resultado de la instrucción, puede ser "0" o "1", si es "0" el resultado se guarda en el acumulador (W) y si es "1" se guyarda en el registro f al que afecta la instrucción. Instrucciones orientadas a registros: 28

29 ADDWF f,d Suma W y el registro f, el resultado lo guarda según d (si d=0 se guarda en W y si d=1 se guarda en f). ANDWF f,d Realiza la operación AND lógica entre W y f, el resultado lo guarda según d. CLRF f Borra el registro f (pone todos sus bits a cero). CLRW - Borra el acumulador. COMF f,d Calcula el complementario del registro f (los bits que estan a "0" los pone a "1" y viceversa. Resultado según d. DECF f,d Decrementa f en uno (le resta uno). Resultado según d. DECFSZ f,d Decrementa f y se salta la siguiente instrucción si el resultado es cero. Resultado según d. INCF f,d Incrementa f en uno (le suma uno). Resultado según d. INCFSZ f,d Incrementa f y se salta la siguiente instrucción si el resultado es cero (cuando se desborda un registro vuelve al valor 00h). Resultado según d. IORWF f,d Realiza la operación lógica OR entre W y f. Resultado según d. MOVF f,d Mueve el contenido del registro f a W si d=0 (si d=1 lo vuelve a poner en el mismo registro) MOVWF f mueve el valor de W a f. Por ejemplo, si queremos copiar el valor del registro "REG1" al registro "REG2" (ya veremos como ponerles nombres a los registros) escribiremos: MOVF REG1,0 ;mueve el valor de REG1 a W MOVWF REG2 ;mueve el valor de W a REG2 Lo que va después del ; son comentarios NOP - No hace nada, solo pierde el tiempo durante un ciclo. RLF f,d Rota el registro f hacia la izquierda a través del bit CARRY (todos los bits se mueven un lugar hacia la izquierda, el bit 7 de f pasa al CARRY y el bit CARRY pasa al bit 0 de f). Resultado según d. RRF f,d Lo mismo que RLF pero hacia la derecha. SUBWF f,d Resta f y W (f - W). Resultado según d. SWAPF f,d intercambia los 4 primeros bit de f por los otros cuatro. Resultado según d. XORWF f,d Realiza la operación lógica XOR (OR exclusiva) entre W y f. Resultado según d. Instrucciones orientadas a bits: BCF f,b Pone a "0" el bit b del registro f BSF f,d Pone a "1" el bit b del registro f BTFSC f,b Se salta la siguiente instrucción si el bit b del registro f es "0" BTFSS f,b Se salta la siguiente instrucción si el bit b del registro f es "1" Instrucciones orientadas a constantes y de control: ADDLW k Le suma el valor k al acumulador (W). ANDLW k Operación lógica AND entre W y el valor k (resultado en W). CALL k Llamada a subrutina cuyo inicio esta en la dirección k CLRWDT - Borra el registro Watchdog GOTO k Salta a la dirección k de programa. IORLW k Operación lógica OR entre W y el valor k (resultado en W) MOVLW k carga el acumulador con el valor k. Por ejemplo, si queremos cargar el valor 2Ah en el registro "REG1" escribiremos: MOVLW 2AH ;carga el acumulador con el valor 2Ah MOVWF REG1 ;mueve el valor de W a "REG1" 29

30 RETFIE - Instrucción para volver de la interrupción RETLW k carga el valor k en W y vuelve de la interrupción RETURN - vuelve de una subrutina. SLEEP - El pic pasa a modo de Standby Instrucciones para el ensamblador Podemos usar para escribir los programas el bloc de notas de Windows, una vez escrito se guarda con extensión.asm y se convierte (ensambla) con un programa ensamblador, el MPASM. El resultado es un archivo con extensión.hex que podemos transferir al PIC16F84. Todo esto se explica mas detalladamente en Programador del PIC16F84. Existen una serie de instrucciones que son para el ensamblador y nos hacen la tarea de programación mas sencilla y mas legible. EQU: Un ejemplo de esto son las etiquetas, podemos poner un nombre a un registro de memoria, esto se hace mediante la instrucción EQU. Por ejemplo: VARIABLE1 EQU 0CH A partir de ahora en lugar de escribir 0CH podemos escribir VARIABLE1. Con EQU también podemos poner nombre a constantes de la misma forma. #DEFINE: Otra instrucción para el ensamblador que usaremos será la instrucción #DEFINE. Es parecido a EQU, solo que aquí no ponemos etiquetas a un registro, podemos ponerla a una instrucción entera, Por ejemplo: #DEFINE BANCO1 BSF STATUS,5 #DEFINE BANCO0 BCF STATUS,5 A partir de ahora, cuando escribamos BANCO1 se pondrá a "1" el bit de selección de banco y pasaremos al banco 1, al escribir BANCO0 pasaremos al banco 0 ORG: Indica al ensamblador la dirección (de memoria de programa) donde se guardará la instrucción que vaya a continuación. Por ejemplo: ORG 00H CLRF VARIABLE1 La instrucción CLRF está en la dirección de memoria de programa 00H (será la primera instrucción en ser ejecutada por el pic) END: Se escribe al final del programa para indicar que ya ha acabado. (es obligatorio, si no da error). Etiquetas a direcciones de Programa: muy útiles para usar con instrucciones CALL (Llamada a subrutina) o GOTO (Salto). Por ejemplo:... [Hay programa anterior]... BTFSC VARIABLE1,0 ;Si el bit 0 de VARIABLE1 es "0" se salta la siguiente instrucción GOTO ESUNO ;Salta a ESUNO solo si el bit 0 de VARIABLE1 es "1" BSF VARIABLE1,0 Si el bit 0 de VARIABLE1 es 0 se ejecuta esta instrucción y el programa sigue por aquí... [Continúa el programa]... 30

31 ESUNO ;Etiqueta a una dirección de programa BCF VARIABLE1,0 ;Si el bit 0 de VARIABLE1 es "1" se ejecuta esta otra instrucción y el programa sigue por aquí... [Cuntinúa el programa]... Un poco de orden: Es importante llevar un poco de orden a la hora de escribir el programa, nos ayudará mucho: Al principio van los EQU y los #DEFINE, después comenzamos con el programa. El programa se escribe en cuatro columnas separadas por tabuladores: o En la primera columna se ponen las etiquetas a direcciones de programa o En la segunda columna se ponen las instrucciones (BSF, CLRF, BTFSC... etc.) o En la tercera columna se ponen Los registros o parámetros a los que afecta la instrucción. o En la cuarta columna se ponen los comentarios que creas pertinentes (cuantos mas mejor) seguidos de un punto y coma. Ejemplo de programa bien ordenado (se podría mejorar ;): // COPIA DE LA VENTANA UN POCO DE ORDEN // ;************************************ ;* * ;************************************ ;* EJEMPLO 1: PROGRAMA BIEN ORDENADO* ;************************************ ;* El siguiente programa configura * ;* RA1 como entrada y RA0 como * ;* salida y hace que la salida (RA0)* ;* sea la inversa de la entrada * ;* (RA1) * ;************************************ ;(Conviene poner título y una ;pequeña explicación de lo que ;hace el programa) ;(Primero los ECU y los #DEFINE) STATUS EQU 03H TRISA EQU 05H PORTA EQU 05H #DEFINE BANCO0 BCF #DEFINE BANCO1 BSF STATUS,5 STATUS,5 31

32 ;(Después empezamos con el programa) ORG 00H ;Empezamos siempre a escribir en esta dirección BANCO1 ;Pasamos al banco 1 para hacer algunas ;configuraciones BCF TRISA,0 ;Configuramos RA0 como salida BSF TRISA,1 ;Configuramos RA1 como entrada BANCO0 ;Volvemos al banco 0 INICIO BTFSC PORTA,1 ;Comprueba la entrada (RA1), si es "0" se salta la ;siguiente instrucción GOTO ESUNO ;si la entrada (RA1) es "1" va a ESUNO BSF instrucción GOTO PORTA,0 ;Pone a "1" la salida RA0. Ejecuta esta ;porque la entrada RA1 era "0" INICIO ;Vuelve otra vez a comprobar el estado de la ;entrada RA1 ESUNO BCF PORTA,0 ;Pone a "0" la salida RA0. Ejecuta esta instrucción ;porque la entrada RA1 era "1" GOTO INICIO ;Vuelve otra vez a comprobar el estado de la ;entrada RA1 END ;Indica final del programa 7. Subrutinas Una subrutina o subprograma es una parte de 32

33 programa que hace algo concreto y se repite a menudo, para ahorrar memoria y esfuerzo y para hacer el programa mas comprensible se agrupa en forma de subrutina. Una subrutina se debe ejecutar siempre llamándola con la instrucción CALL y al final de dicha subrutina debe haber siempre un RETURN. El esquema de la derecha muestra como funcionan las subrutinas: Durante el programa principal se llama varias veces a la subrutina SUBR (el nombre es lo de menos) con la instrucción CALL. Cuando el pic ejecuta una instrucción CALL se guarda en memoria la dirección de código de programa a la que tiene que retornar de tal forma que cuando se encuentra con la instrucción RETURN vuelve al programa principal donde lo dejó. Una subrutina no solo puede ser llamada desde el programa principal, también puede hacerse desde otra subrutina (una subrutina que llama a otra subrutina) o desde una interrupción (enseguida las veremos). El siguiente ejemplo muestra un programa que utiliza una subrutina de retardo a la que llama DELAY. Esta subrutina de retardo se hace decrementando el registro CUENTA2 desde FFh hasta 00h 16 veces (las veces que se decrementa CUENTA2 son contadas hacia atrás por CUENTA1) De esta forma se consigue perder tiempo (el tiempo perdido con esta subrutina depende de la frecuencia a la que opere el pic) //-----COPIA DE LA VENTANA DE SUBRUTINAS // ;****************************************** ;* * ;****************************************** ;* EJEMPLO 2 USO DE SUBRUTINAS * ;****************************************** ;* Este programa configura RB0 como salida* ;* y genera una intermitencia en dicha * ;* salida * ;****************************************** STATUS EQU 03H TRISB EQU 06H PORTB EQU 06H CUENTA1 EQU 0CH ;Las variables que usemos siempre a ;partir de la dirección 0Ch CUENTA2 EQU 0DH F EQU 1 w EQU 0 ORG 00H BSF STATUS,5 ;banco 1 BCF TRISB,0 ;RB0 como salida BCF STATUS,5 ;banco 0 INICIO BSF TRISB,0 ;Pone a "1" RB0 (enciende) CALL DELAY ;Llama a la subrutina de retardo BCF TRISB,0 ;Cuando vuelve del retardo pone ;a "0" RB0 (apaga) CALL DELAY ;llama a la subrutina de retardo GOTO INICIO ;cuando vuelve del retardo ;ejecuta el GOTO 33

34 ;=================================================== ;= DELAY: Subrutina de retardo = ;= Modifica los siguientes registros: = ;= CUENTA1 = ;= CUENTA2 = ;= ACUMULADOR = ;= STATUS = ;(Conviene hacerse un pequeño resumen de lo que ;hace cada subrutina, puede sernos muy útil para ;usarla en otros programas) DELAY MOVLW 010H ;Carga el acumulador con el valor ;10H (16 en decimal) MOVWF CUENTA1 ;Mueve el contenido del acumulador ;a CUENTA1 ACA1 MOVLW 0FFH ;Carga el acumulador con el valor FFH MOVWF CUENTA2 ;Mueve el contenido del acumulador ;a CUENTA2 ACA DECFSZ CUENTA2,F ;Decrementa CUENTA2, guarda el resultado ;en f, y si es cero se salta la siguiente ;instrucción GOTO ACA ;vuelve a decrementar mientras ;CUENTA2 no sea cero DECFSZ CUENTA1,F ;Se decrementa CUENTA1 cada vez que ;CUENTA2 llega a cero GOTO ACA1 ;mientras CUENTA1 no llegue a cero recarga ;CUENTA2 y repite el proceso RETURN ;retorna al programa principal ;= = ;= FIN DE LA SUBRUTINA DELAY = ;=================================================== END ;Fin del programa Interrupciones Cuando se produce una interrupción el pic deja automáticamente lo que esté haciendo, va directo a la dirección 04h de programa y ejecuta lo que encuentre a partir de allí hasta encontrarse con la instrucción RETFIE que le hará abandonar la interrupción y volver al lugar donde se encontraba antes de producirse dicha interrupción. Para que se pueda producir una interrupción hay que habilitar las interrupciones globalmente y la interrupción en concreto que queremos utilizar (con el registro INTCON). Este pic tiene 4 tipos de posibles interrupciones: 1. Por cambio en los bits RB4-RB7 2. Por el estado de RB0 3. Por desbordamiento del Timer-contador 34

35 4. Por fin de ciclo de escritura de la EEPROM de datos Mientras se está ejecutando una interrupción no se puede producir otra interrupción, el pic no lo permite. Una cosa importante a tener en cuenta al usar interrupciones es que cuando estas se producen podríamos estar trabajando con registros que pueden ser modificados en la propia interrupción, como el acumulador o el STATUS. Para que la interrupción no eche a perder el buen funcionamiento del programa principal conviene guardar los valores de estos registros en otras variables que no vayamos a modificar. Antes de salir de la interrupción volvemos a restaurar los valores guardados y todo solucionado. El siguiente ejemplo muestra un programa que usa la interrupción por cambio en el puerto B (En pines RB4 a RB7) // COPIA DE LA VENTANA DE INTERRUPCIONES // ;******************************************* ;* * ;******************************************* ;* EJEMPLO 3: USO DE INTERRUPCIONES * ;******************************************* ;* Este programa invierte el estado del pin* ;* RA0 cada vez que se modifica el estado * ;* de alguno de los pines RB4, RB5, RB6 o * ;* RB7. Para ello habilita la interrupción * ;* por cambio de RB4-RB7 * ;******************************************* STATUS EQU 03H TRISA EQU 05H PORTA EQU 05H TRISB EQU 06H PORTB EQU 06H INTCON EQU 0BH ACUM EQU 0CH STAT EQU 0DH F EQU 1 w EQU 0 #DEFINE BANCO0 BCF #DEFINE BANCO1 BSF STATUS,5 STATUS,5 poner de ORG 00H GOTO INICIO ;ponemos este GOTO al principio para poder ;el subprograma de las interrupciones a partir ;la dirección 04h ;Comienza la interrupción: ;========================= 35

36 ORG 04H ;El pic salta a esta dirección cuando se produce ;una interrupción BCF INTCON,0 ;bit que indica un cambio en RB4-RB7, recuerda que ;hay que ponerlo a "0" por programa, este es el ;momento acumulador de ;comenzamos guardando el contenido del ;y del STATUS para restaurarlos antes de salir ;la interrupción (es recomendable hacer esto ;siempre que se usen interrupciones) MOVWF ACUM ;Copia el acumulador al registro ACUM MOVF STATUS,W ;Guarda STATUS en el acumulador BANCO0 ;Por si acaso, nunca se sabe en que parte de ;programa principal salta la interrupción MOVWF STAT ;Copia el acumulador al registro STAT ;Invertimos el estado de RA0: ;============================ BTFSC PORTA,0 ;si RA0 es "0" salta la siguiente instrucción GOTO ESUNO ;vete a ESUNO BSF PORTA,0 ;Pon a "1" RA0 (porque era "0") GOTO HECHO ;ya está invertido RA0, vete a HECHO ESUNO BCF PORTA,0 ;Pon a "0" RA0 (Porque era "1") ;Ya se ha invertido el estado de RA0 ;=================================== STATUS y interrupción: ;ahora hay que restaurar los valores del ;del acumulador antes de salir de la HECHO MOVF STAT,W ;Guarda el contenido de STAT en el acumulador MOVWF STATUS ;Restaura el STATUS SWAPF ACUM,F ;Da la vuelta al registro ACUM SWAPF ACUM,W ;Vuelve a dar la vuelta al registro ACUM y restaura ;el acumulador (Con la instruccion SWAPF para no ;alterar el STATUS, la instrucción MOVF altera el ;bit 2 del STATUS) RETFIE ;fin de la interrupción ;Fin de la interrupción ;====================== INICIO BANCO1 ;Pasamos al banco 1 MOVLW 0FFH ;Todos los bits del acumulador a "1" 36

37 MOVWF TRISB ;configuramos todo el puerto B como entradas BCF TRISA,0 ;RA0 como salida BANCO0 ;Volvemos al banco 0 ;Configuración de las interrupciones: ;==================================== B RB7 de BSF BSF INTCON,7 ;Habilita las interrupciones globalmente INTCON,3 ;Habilita la interrupción por cambio de puerto ;==================================== ;ya están configuradas las interrupciones, a ;partir de ahora cuando haya un cambio en RB4- ;saltará la interrupción (a la dirección 04h ;programa) NADA GOTO NADA ;En este ejemplo no se hace nada en el programa ;principal, simplemente se espera a que salte la ;interrupción. La verdadera utilidad de las ;interrupciones es que se pueden hacer "cosas" ;mientras sin preocuparse de la interrupción END ;FIN DE PROGRAMA 9. Timer - Contador TMR0 El registro TMR0 puede contar ciclos de instrucción interna o pulsos de entrada por RA4 según el valor del bit 5 del registro OPTION ( TOCS ). Si este bit está a "1" TMR0 cuenta pulsos por RA4 y se le llama Contador; si el bit está a "0" cuenta ciclos de instrucción interna y se le llama Timer. Cada ciclo de instrucción dura 4 veces el ciclo del reloj del pic (para un reloj de 4MHz ==> Ciclo reloj=0,25 µseg ==> Ciclo instrucción = 4 X 0,25 = 1µSeg) Cuando lo usamos como contador (Por RA4) podemos determinar si el incremento se hará por flanco ascendente o descendente con el bit 4 del registro OPTION ( TOSE ) Podemos leer o escribir el registro TMR0 en cualquier momento. Cuando escribamos en él deja de contar durante dos ciclos, cuando lo leamos no pasa nada. Podemos asignar el prescaler al TMR0, si hacemos esto podemos elegir el factor en el que se verá dividido el conteo mediante los bits del 0 al 2 del registro OPTION según la tabla del factor de división. Por ejemplo, si elegimos un factor de división de 1/2 tienen que entrar 2 pulsos para que TMR0 se incremente en uno, si está a 1/4 tienen que entrar 4... etc. También podemos utilizar la interrupción que se produce cuando se desborda el TMR0, es decir, cuando pasa de FFh a 00h. (se configura desde el registro INTCON ) 37

DESCRIPCIÓN DE LAS INSTRUCCIONES

DESCRIPCIÓN DE LAS INSTRUCCIONES Todas las instrucciones del PIC cumplen las siguientes condiciones: Las instrucciones son simples y rápidas. Todas tienen un tiempo de ejecución de un ciclo de instrucción (cuatro ciclos de reloj) a excepción

Más detalles

Características generales

Características generales REPERTORIO DE INSTRUCCIONES En esta sección se pretende: Conocer las características generales de las instrucciones para el PIC16F84 Los distintos modos de direccionamiento, y Los diferentes grupos de

Más detalles

Practica de PIC 16F84

Practica de PIC 16F84 Practica de PIC 16F84 Los PIC son circuitos que pueden controlar dispositivos y diferentes sistemas, son como los PLC (controles lógico programable), además debo decir que es un circuito que tiene todas

Más detalles

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR

ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR ORGANIZACIÓN INTERNA + INTRODUCCIÓN AL ENSAMBLADOR ORGANIZACIÓN de la MEMORIA Dentro del PIC16F877 se distinguen tres bloques de memoria. Memoria de programa En sus 8192 posiciones (8K) contiene el programa

Más detalles

CONCEPTOS BÁSICOS. + Intensidad

CONCEPTOS BÁSICOS. + Intensidad CONCEPTOS BÁSICOS Si en una frase tuviera que definir que es un microcontrolador, creo que lo más acertado sería definirlo como un controlador de entrada/ salida con capacidad de decisión. Para poder explicar

Más detalles

INSTRUCCIONES DE ENSAMBLADOR

INSTRUCCIONES DE ENSAMBLADOR MPLAB INSTRUCCIONES DE ENSAMBLADOR ORGANIZACIÓN de la MEMORIA Dentro del PIC16F877 se distinguen tres bloques de memoria. Memoria de programa En sus 8192 posiciones (8K) contiene el programa con las instrucciones

Más detalles

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04

INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 2003/04 INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA INDUSTRIAL. ESPECIALIDAD ELECTRÓNICA BOLETÍN 1. CURSO 20/04 1. Se colocan tres interruptores en las líneas RA0, RA1 y RA2 de la puerta A de un PIC16F84. Y

Más detalles

UNIDAD IV PROGRAMACION. Programación del microcontrolador

UNIDAD IV PROGRAMACION. Programación del microcontrolador UNIDAD IV PROGRAMACION Programación del microcontrolador Para grabar la memoria de programa el microcontrolador debe llevarse a un modo especial de trabajo suministrando 13.5V a la línea MCLR y el voltaje

Más detalles

D:\ACCESO\ACCESO.ASM. list p=16f877 include "p16f877.inc" ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24

D:\ACCESO\ACCESO.ASM. list p=16f877 include p16f877.inc ROTA equ 0x20 TEMP equ 0x21 TECLA equ 0x22 DIGITOS equ 0x23 DIR equ 0x24 ;Programa para el control de acceso a un sistema X ;mediante la introducción de una clave a través de un teclado ;matricial. ;Es posible cambiar la clave de acceso y guardarla en la EEPROM ;La velocidad

Más detalles

Instrucciones para programar el PIC16F877

Instrucciones para programar el PIC16F877 Instrucciones para programar el PIC16F877 2 Estos microcontroladores responden a una serie de instrucciones o códigos que se deben grabar en su memoria de programa, en total son 35. A continuación se encuentra

Más detalles

MICROCONTROLADOR PIC DE MICROCHIP

MICROCONTROLADOR PIC DE MICROCHIP MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER PIC16F877: ESTRUCTURA INTERNA Bus de Datos Bus de Datos (programa) Registro de trabajo (acumulador) Conversor A/D Contador/Temporizador

Más detalles

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro.

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro. Las Instrucciones A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro. En general la instrucciones de los microcontroladores pueden clasificarse como:

Más detalles

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 Estructura De La Memoria Ram (1) La memoria de datos RAM está dividida en dos partes diferenciadas: 1.- Zona SFR o zona de Registros

Más detalles

Lenguaje ensamblador Semana 2 Trabajando con el lenguaje ensamblador

Lenguaje ensamblador Semana 2 Trabajando con el lenguaje ensamblador 2016 Lenguaje ensamblador Semana 2 Trabajando con el lenguaje ensamblador Contenido Trabajando con el lenguaje ensamblador... 2 Introducción... 2 UNIDADES DE INFORMACIÓN... 3 BIT... 3 BYTE... 3 NIBBLE...

Más detalles

RECURSOS FUNDAMENTALES

RECURSOS FUNDAMENTALES RECURSOS FUNDAMENTALES Los recursos que se considerarán son : Temporizadores Puertos de E/S La Palabra de Configuración EEPROM de datos 1 TEMPORIZADORES Una labor habitual en los programas de control suele

Más detalles

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic

CODIGO EN ASSEMBLER TRANSMISOR. list p=16f876 ;selecion de pic TRANSMISOR CODIGO EN ASSEMBLER list p=16f876 ;selecion de pic radix hex ; codigo hex indf equ 0h ;direcionamiento indirecto tmro equ 1h ;contador de tiempo real pc equ 2h ;contador del programa status

Más detalles

Microcontrolador PIC16F84: Arquitectura

Microcontrolador PIC16F84: Arquitectura Microcontrolador PIC16F84: Arquitectura La arquitectura del PIC es tipo Harvard: Mem. de Programa (instrucciones) (tipo FLASH) Control DIR DATOS µp (tipo RISC, pipeline de 2 etapas) Control DIR DATOS 14

Más detalles

SISTEMA MÍNIMO BASADO EN EL PIC16F84

SISTEMA MÍNIMO BASADO EN EL PIC16F84 PRÁCTICA 0 CIRCUITO BASE SISTEMA MÍNIMO BASADO EN EL PIC16F84 1 PRÁCTICA 1_1 COMPUERTA AND DE TRES ENTRADAS Hardware X0 X1 X2 Y 2 Comportamiento esperado INICIO Configurar Puerto A como entradas y Puerto

Más detalles

PRÁCTICA 6: Gobierno del display 7 segmentos

PRÁCTICA 6: Gobierno del display 7 segmentos SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 6: Gobierno del display 7 segmentos Display 7 segmentos - 1 - Ingeniería de Sistemas y Automática 1. Objetivos: Gobierno

Más detalles

MICROCONTROLADORES (III)

MICROCONTROLADORES (III) Prof. Manuel Rivas MICROCONTROLADORES (III) Pautas generales de programación Operaciones con datos Operaciones aritméticas Operaciones de comparación Subrutinas Selección múltiple Configuración de puertos

Más detalles

PRÁCTICA 2: Programas básicos. Tipos de direccionamiento.

PRÁCTICA 2: Programas básicos. Tipos de direccionamiento. SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 2: Programas básicos. Tipos de direccionamiento. Tipos de direccionamiento Ejemplos y ejercicios - 1 - 1. Objetivos - Introducir

Más detalles

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón - - (0416)

- FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN. 09/01/2009 Ing. José A. Picón -  - (0416) MICROPROCESADORES Y MICROCONTROLADORES - FUNDAMENTOS TEÓRICOS - EJEMPLOS DE APLICACIÓN 09/01/2009 Ing. José A. Picón - www.joseapicon.com.ve - (0416) 9519990 Informes de Laboratorio Entregar informe con

Más detalles

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández

Carrera: Técnico Superior en Técnicas Digitales. Alumnos: Emiliano Teseo y José Luis Fernández Carrera: Técnico Superior en Técnicas Digitales Instituto: CENT 57 Trabajo final Año 2005 Alumnos: Emiliano Teseo y José Luis Fernández 1 ILUMINACION PARA VIDRIERAS Descripción general (Guía para el usuario)

Más detalles

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA

Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA Programación y Aplicaciones de los Microcontroladores PIC16FXXX (Nivel Básico) ING. EULER DEZA FIGUEROA ESTRUCTURA Y CONTENIDO: SESIONES DE CLASE CONTENIDOS PRACTICA PRIMERA (5 horas ) SEGUNDA (5 horas

Más detalles

Set de instrucciones Microcontrolador PIC.

Set de instrucciones Microcontrolador PIC. Microcontroladores Pic 16F84A. Los PIC son una extensa familia microcontroladores divididos en tres gamas, la gama baja con memoria programa 12 bits, la gama media y la gama alta con memoria programa 14

Más detalles

O B J E T I V O I N T R O D U C C I O N M A R C O T E O R I C O

O B J E T I V O I N T R O D U C C I O N M A R C O T E O R I C O O B J E T I V O Realizar un contador decimal que se exhiba en un display de 7 segmentos, cada número deberá estar exhibido durante un segundo. I N T R O D U C C I O N En la mayoría de los sistemas electrónicos

Más detalles

Registros SFR vistos hasta ahora: Microcontroladores PIC

Registros SFR vistos hasta ahora: Microcontroladores PIC Registros SFR vistos hasta ahora: Microcontroladores PIC Microcontroladores PIC: Timer Características del Timer TMR0: Cumple básicamente la función de contador de eventos (o divisor de frecuencia). El

Más detalles

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes.

Assembler para PICs. Permite la utilización de etiquetas, tanto para apuntar a direcciones como para definir valores constantes. Características generales del lenguaje: Emplea los mnemotécnicos de las instrucciones del μc. En nuestro caso corresponderá al set de instrucciones de los PICs de la gama media (35 instrucciones). Permite

Más detalles

1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7.

1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7. 1. Proponer un circuito que tenga el puerto b como salida conectando 8 leds, realizando un programa que me encienda los bits 0, 1, 3, 5, 7. a. Diagrama de flujo b. Circuito C1 4 MHZ C2 R2 10k 16 15 4 R1

Más detalles

Microprocesadores I - Unidad 5 Hoja 1 de 11. Año Javier Rambaldo Profesor de la cátedra de Microprocesadores I

Microprocesadores I - Unidad 5 Hoja 1 de 11. Año Javier Rambaldo Profesor de la cátedra de Microprocesadores I Microprocesadores I - Unidad 5 Hoja 1 de 11 Año 2003 Profesor de la cátedra de Microprocesadores I Unidad 5: Interrupciones en el 16F84. Rutina de servicio. Registros. Distintas formas de activar una interrupción.

Más detalles

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits MICROCONTROLADORES 2. La memoria de programa del PIC 16F84A es de tipo: a) ROM b) OTP c) RAM d) EPROM e)

Más detalles

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA

GAMA BAJA (PIC16C5X) ARQUITECTURA BÁSICA GAMA BAJA (PIC6CX) ARQUITECTURA BÁSICA Instrucciones -bit de palabra de instrucción ROM/EPROM desde a 04 palabras Hasta 4 páginas (xbits) de memoria de programa -bit de datos RAM desde a bytes Hasta 4

Más detalles

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario.

El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario. 1 LENGUAJE ENSAMBLADOR El único lenguaje que entienden los microcontroladores es el código máquina formado por ceros y unos del sistema binario. El lenguaje ensamblador expresa las instrucciones de una

Más detalles

Microcontroladores PIC

Microcontroladores PIC Introducción Los microcontroladores son procesadores que poseen memoria y dispositivo de entrada salida todo encapsulado en un mismo integrado, lo que permite su uso sin la necesidad de estar disponiendo

Más detalles

Apéndice A. Programas y Diagramas de Bloques para los Microprocesadores

Apéndice A. Programas y Diagramas de Bloques para los Microprocesadores Apéndice A Programas y Diagramas de Bloques para los Microprocesadores 120 Microprocesador PIC16F84A (Transmisor): Figura A.1 Diagrama de bloques del PIC16F84A en transmisor ;***********************************Transmisor.asm********************************

Más detalles

MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627)

MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627) MICROCONTROLADORES PIC BÁSICO (PIC 16F84A / 16F627) TEMARIO Objetivo: El estudiante comprenderá la evolución de los microcontroladores y microprocesadores así como sus diferencias, desarrollara su habilidad

Más detalles

Microcontroladores PIC

Microcontroladores PIC Microcontroladores PIC Procesador RISC. Arquitectura Harvard Pipeline Formato de instrucciones ortogonal Arquitectura basada en banco de registros Distintos periféricos: temporizadores, puertos paralelo/serie,

Más detalles

REGISTRO DE TEMPERATURA USANDO EL MICROCONTROLADOR PIC16C71. José González Flórez *, Eusebio García García ** Abstract

REGISTRO DE TEMPERATURA USANDO EL MICROCONTROLADOR PIC16C71. José González Flórez *, Eusebio García García ** Abstract UNIVERSIDAD PEDAGOGICA NACIONAL REGISTRO DE TEMPERATURA USANDO EL MICROCONTROLADOR PIC16C71 José González Flórez *, Eusebio García García ** Abstract A digital measurement temperature employs the PIC 16C71

Más detalles

CODIGO EN ASSEMBLER ;************************************************************************

CODIGO EN ASSEMBLER ;************************************************************************ RECEPTOR CODIGO EN ASSEMBLER ;************************************************************************ list p=16f84a ;selecion de pic radix hex ; codigo hex pc equ 02h status equ 03h portb equ 06h PORTA

Más detalles

Control de pantallas de cristal líquido mediante PIC

Control de pantallas de cristal líquido mediante PIC INGENIERÍA Control de pantallas de cristal líquido mediante PIC Ejemplo práctico de interconexión y control de una pantalla de cristal líquido (LCD) por un microcontrolador PIC CELESTINO BENÍTEZ VÁZQUEZ

Más detalles

PIC16C5X (GAMA BAJA) Solo en dispositivos de 28 pins. Encapsulado y patillaje:

PIC16C5X (GAMA BAJA) Solo en dispositivos de 28 pins. Encapsulado y patillaje: PIC6C5X (GAMA BAJA) Oscilador RESET SLEEP WatchDog Timer (WDT) Protección de código e IDs Periféricos: Timer/Contador de 8bits (T) con prescaler compartido para WDT o TMR Hasta 3 puertos I/O (RA,RB,RC)

Más detalles

Diagrama a bloques 2

Diagrama a bloques 2 Arquitectura 1 Diagrama a bloques 2 Diagrama a bloques 3 Diagrama a bloques 4 Diagrama a bloques 5 Unidad aritmética-lógica La unidad Aritmética Lógica se encarga de realizar las operaciones Suma, Resta,

Más detalles

Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002

Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002 Proyecto de Microprocesadores I del CENT57 AFINADOR DIGITAL MICROPROCESADO Alumnos: Damian O. Macarrein Gastón M. Murphy Año 2002 Introducción Este afinador digital esta diseñado para la medición de frecuencia

Más detalles

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y

SALTOS EN FUNCIONDE UN BIT Aquéllas que pueden producir el salto en función del estado de un bit. Son btfsc y SISTEMAS ELECTRONICOS DIGITALES SALTO CONDICIONAL El repertorio del PIC16F84 también dispone de instrucciones de salto condicional, que son aquéllas que producen un salto en función de que se cumpla o

Más detalles

;*****************************************************************************************

;***************************************************************************************** PROYECTO DPP Memoria Generalidades: Este es el proyecto de un sistema de camaras cerrado, concretamente de ocho camaras, controladas, desde un panel de mandos desde el cual controlaremos que camara queremos

Más detalles

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA

UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA UNIVERSIDAD NACIONAL DE COLOMBIA SEDE BOGOTÁ FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA INTRODUCCIÓN AL PIC NOMENCLATURA ARQUITECTURA. TEMPORIZACIÓN. SET DE INSTRUCCIONES. MODOS DE DIRECCIONAMIENTO.

Más detalles

Apéndice B Programa para calcular inclinación con PIC 16F877A

Apéndice B Programa para calcular inclinación con PIC 16F877A Apéndice B Programa para calcular inclinación con PIC 16F877A list p=16f877a ; list directive to define processor #include ; processor specific variable definitions ;***** DEFINICIÓN DE

Más detalles

INSTITUTO POLITÉCNICO NACIONAL

INSTITUTO POLITÉCNICO NACIONAL INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA DISEÑO DE UN SISTEMA DE MONITOREO PARA CASA HABITACIÓN TESIS QUE PARA OBTENER EL TÍTULO DE INGENIERO EN CONTROL Y AUTOMATIZACIÓN

Más detalles

Sistemas con Microprocesadores I

Sistemas con Microprocesadores I Sistemas con Microprocesadores I 1 El ambiente de desarrollo MPLAB IDE El Entorno MPLAB IDE Creando código de usuario Creando un Proyecto Selección del Dispositivo y ventana de salida Selección de herramientas

Más detalles

Microcontrolador PIC 16F84

Microcontrolador PIC 16F84 INTRODUCCIÓN A LA PROGRAMACIÓN Microcontrolador PIC 16F84 mail : enric.serra 0 - INTRODUCCIÓN. Este documento es una introducción a la programación del PIC 16f84. Este documento se puede copiar y utilizar

Más detalles

Termostato electrónico con PIC y LCD

Termostato electrónico con PIC y LCD COMETARIO TECNICO Termostato electrónico con PIC y LCD Por el Departamento de Ingeniería de Electrónica Elemon S.A. 1N4148 El circuito centra su funcionamiento en el micro controlador PIC16F870 el cual

Más detalles

Curso Básico de PICS y Picaxe

Curso Básico de PICS y Picaxe Curso Básico de PICS y Picaxe 1 Estimado Alumno : Vamos introducirnos con este apunte en el apasionante mundo de la programación de los microcontroladores. Primero vamos a realizar una breve descripción

Más detalles

PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED

PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED PRACTICA 4. REALIZAR ENCENDIDO-APAGADO DE DIODOS LED DESCRIPCIÓN. En esta práctica vamos a realizar el encendido y apagado de diodos led. Para ellos iremos activando y desactivando las salidas de la puerta

Más detalles

Lenguaje Ensamblador sobre PIC 16F84

Lenguaje Ensamblador sobre PIC 16F84 Lenguaje Ensamblador sobre PIC 16F84 Roberto Vargas Toledo Iván Figueroa Monsalve El presente trabajo se nos muestra la programación de ensamblador orientada a la programación de PIC 16F84, microcontrolador

Más detalles

II) MICROCONTROLADORES

II) MICROCONTROLADORES II) MICROCONTROLADORES 1- Descripción y Características Son dispositivos electrónicos digitales sincrónicos programables que para funcionar necesitan, además de alimentación y señales externas, un programa,

Más detalles

El PIC16F84. Capítulo 1. Pines y funciones Arquitectura Características especiales El PIC16C84 Compatibilidad con otras familias

El PIC16F84. Capítulo 1. Pines y funciones Arquitectura Características especiales El PIC16C84 Compatibilidad con otras familias Capítulo 1 El PIC16F84 Pines y funciones Arquitectura Características especiales El PIC16C84 Compatibilidad con otras familias Curso avanzado de Microcontroladores PIC 3 4 Curso avanzado de Microcontroladores

Más detalles

ARQUITECTURA DEL PIC16F84A

ARQUITECTURA DEL PIC16F84A ARQUITECTURA DEL PIC16F84A Arquitectura interna del PIC16F84A CPU ALU Decodificador de Instrucciones - Buses Registro de trabajo W PC Contador de Programa Organización de la memoria Memoria de Programa

Más detalles

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC

PROFESOR: Práctica 10. Manejo de Tabla de datos con Microcontrolador PIC INSTITUTO POLITÉCNICO NACIONAL Centro de Estudios Científicos y Tecnológicos Nº 1 Gonzalo Vázquez Vela Academia de Sistemas Digitales Prácticas de Arquitectura de Microprocesadores y Microcontroladores

Más detalles

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios

Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS PRACTICAS DE MICROCONTROLADORES PIC PRÁCTICA 3: Bucles Bucles: o Bucles infinitos o Bucles finitos o Bucles anidados Medir tiempos con MPLAB Ejemplos y ejercicios -

Más detalles

2.1. Código ASM de Programación para el PIC

2.1. Código ASM de Programación para el PIC 2.1. Código ASM de Programación para el PIC PROGRAMA PARA MOVER UNA ARAÑA SEGUN 3 POSICIONES DE LUZ, CON ESTO SE PUEDE HACER QUE CON ALGUNA COMBINACION AVANCE, SE DETENGA, GIRE ALA IZQUIERDA, GIRE A LA

Más detalles

PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628

PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628 Los Bits de Configuración del PIC16F628 44 PRÁCTICA 4 LOS BITS DE CONFIGURACIÓN DEL PIC16F628 OBJETIVOS Identificar cada uno de los bits de configuración que rigen el funcionamiento del PIC16F628. Verificar

Más detalles

MICROCONTROLADORES PIC

MICROCONTROLADORES PIC ASSEMBLER PARA SESIÓN COMPLETA MICROCONTROLADORES PIC POR: El Registro PCL Existe un registro, llamado PCL, ubicado en la posición 0x02 en el banco de memoria, tiene mucho que ver con el flujo del programa,

Más detalles

Características Técnicas del PIC 16F84

Características Técnicas del PIC 16F84 Características Técnicas del PIC 16F84 Repertorio de 35 Instrucciones. Todas las instrucciones se ejecutan en un solo ciclo excepto las de salto que necesitan dos. Versiones de 4 MHz (PIC16F84-04) y 10

Más detalles

Tema 6: Microcontroladores

Tema 6: Microcontroladores Tema 6: Microcontroladores Carlos Garre del Olmo 1 Microcontroladores Contenidos Introducción a los microcontroladores. Principales familias y sus características. La familia PIC16. Programación de microcontroladores.

Más detalles

Características PIC16F84

Características PIC16F84 Departamento de Electrónica Fundación San Valero del Toda la información que grabamos (memoria de programa y de datos) se puede modificar con el microcontrolador conectado a la aplicación. (ICSP = In-Circuit

Más detalles

Programación en PIC Los primeros pasos

Programación en PIC Los primeros pasos Capítulo V Programación en PIC Los primeros pasos Encender y apagar un LED Secuenciador con cuatro LED's Leer los pulsadores y encender el LED correspondiente Programa avanzado utilizando el entrenador

Más detalles

Indice. Escrito por Administrator Martes, 02 de Septiembre de 2008 17:45 - Actualizado Domingo, 20 de Septiembre de 2009 07:45 1 / 15

Indice. Escrito por Administrator Martes, 02 de Septiembre de 2008 17:45 - Actualizado Domingo, 20 de Septiembre de 2009 07:45 1 / 15 1 / 15 El contenido del libro " MICROCONTROLADOR PIC16F84. Desarrollo de proyectos " de la Editorial Ra CAPÍTULOS: 1. MICROCONTROLADOR PIC16F84 2. PERIFÉRICOS BÁSICOS 3. GRABACIÓN DE MICROCONTROLADORES

Más detalles

;<<<<<< VECTOR DE INTERRUPCION >>>>>>>

;<<<<<< VECTOR DE INTERRUPCION >>>>>>> Apéndice B Programa en Ensamblador para el PIC 16F877 de Microchip Corp. ;***********************************UDLAP************************** ; PROGRAMA : com232.asm ; Función : Establece la rutina de los

Más detalles

PIC s 1ª PARTE RESUMEN Y EJERCICIOS_06/07

PIC s 1ª PARTE RESUMEN Y EJERCICIOS_06/07 PIC s 1ª PARTE RESUMEN Y EJERCICIOS_06/07 INDICE 1-Microcontroladores, arquitectura PIC. 2-Hardware PIC 16f84. Bancos de registros. 3-Grabación del PIC. Listado Instrucciones 4-Líneas de I/O del PIC 5-Directivas

Más detalles

PIC Programable Integrates Circuit o Peripheral Interface Controller

PIC Programable Integrates Circuit o Peripheral Interface Controller PIC Programable Integrates Circuit o Peripheral Interface Controller un microprocesador es un sistema abierto porque su configuración es variable de acuerdo con la aplicación a la que se destine. Es diferente

Más detalles

Tema 4. Organización de la memoria

Tema 4. Organización de la memoria Tema 4 Organización de la memoria 1 ARQUITECTURA DEL PIC16F84 Tema 4. Organización de la memoria Memoria de programa tipo ROM Flash de 1024 registros de 14 bits Memoria de datos dividida en dos áreas:

Más detalles

MICROCONTROLADOR PIC DE MICROCHIP

MICROCONTROLADOR PIC DE MICROCHIP MICROCONTROLADOR PIC DE MICROCHIP Sistema Microprocesador (varios C.I. en una PCB) Microcontrolador (único C.I.) MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER Manuel

Más detalles

Elección de un microcontrolador

Elección de un microcontrolador Elección de un microcontrolador Decisión multivariable. No hay un óptimo evidente Factores: Herramientas de desarrollo Base de conocimientos Precio y disponibilidad Familia versátil y en desarrollo Cantidad

Más detalles

LOS PIC16F88X: EEPROM de Usuario

LOS PIC16F88X: EEPROM de Usuario LOS PIC16F88X: EEPROM de Usuario IES Juan de la Cierva Aprendizaje de la Electrónica a través de la Robótica Domínguez Diagrama de bloques PIC16F884-PIC16F887 Interrupciones en de los PIC16F88X PIR2 INTCON

Más detalles

2.2-1 Visión Interna PIC16F873/876. SBM

2.2-1 Visión Interna PIC16F873/876. SBM 2.2-1 Visión Interna PIC16F873/876. 1 2.2-2 Visión Interna PIC16F874/877. 2 2.2-3 Sistema de memoria. Tienen arquitectura Harvard, separa la memoria de datos y la memoria de programa, y se accede a ellas

Más detalles

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A

Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A Capítulo VIII: PROGRAMACIÓN DEL PIC 16F876A Proyecto Fin de Carrera 95 Antonio Andújar Caballero 8. PROGRAMACIÓN DEL PIC 16F876A. A la hora de realizar el programa de control para nuestro ecualizador,

Más detalles

Microcontrolador PIC 16F84

Microcontrolador PIC 16F84 PROGRAMACIÓN PIC (II) Microcontrolador PIC 16F84 mail : enric.serra 0 - INTRODUCCIÓN. Este documento es una continuación al documento de programación del PIC 16f84. Este documento se puede copiar y utilizar

Más detalles

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación Taller de Firmware Introducción al PIC16F877 Facultad de Ingeniería Instituto de Com putación Contenido Introducción a los microcontroladores PIC. Presentación del PIC 16F877. Introducción a los microcontroladores

Más detalles

PIC 16F87X. Juan González. Escuela Politécnica Superior Universidad Autónoma de Madrid. Flir Networked Systems. Flir Networked Systems

PIC 16F87X. Juan González. Escuela Politécnica Superior Universidad Autónoma de Madrid. Flir Networked Systems. Flir Networked Systems PIC 16F87X Juan González Andrés Prieto-Moreno Ricardo Gómez Escuela Politécnica Superior Universidad Autónoma de Madrid Flir Networked Systems Flir Networked Systems Curso de microcontroladores PIC. Semana

Más detalles

Escuela Politécnica Superior de Elche. EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre:

Escuela Politécnica Superior de Elche. EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre: Escuela Politécnica Superior de Elche 4º Ingeniería Industrial EXAMEN DE SISTEMAS ELECTRÓNICOS Y AUTOMÁTICOS 2º Parte: Microcontroladores + Instrumentación Nombre: CUESTION 1 (3 puntos) Microcontroladores

Más detalles

Manejo LCD Gráfico DSM

Manejo LCD Gráfico DSM Manejo LCD Gráfico DSM Christopher Orihuela Sosa 10/09/07 Índice Introducción...1 Hardware...2 LCD...3 patillaje...4 tabla de instrucciones...5 Timings...6 Organización de la pantalla...8 Circuito completo...9

Más detalles

MICROCONTROLADORES PIC

MICROCONTROLADORES PIC MICROCONTROLADORES PIC FUNDAMENTOS Y APLICACIONES UN ENFOQUE DIDÁCTICO ESCUELA DE POSGRADO MICROCONTROLADORES PIC FUNDAMENTOS Y APLICACIONES UN ENFOQUE DIDÁCTICO MATERIAL EDUCATIVO DEDICATORIA DEDICO

Más detalles

17 Con el chorro de agua pequeño, la cubeta se llena en 10 minutos

17 Con el chorro de agua pequeño, la cubeta se llena en 10 minutos 17 Con el chorro de agua pequeño, la cubeta se llena en 10 minutos Cuál será el valor de precarga necesario para que este sistema nos indique que ha transcurrido un tiempo de 6 minutos? Seria depositar

Más detalles

MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde

MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO. Jaime Pérez Crespo Rubén Seijas Valverde MICROPROCESADORES 2003/2004 DADO ELECTRÓNICO Jaime Pérez Crespo Rubén Seijas Valverde Introducción: Con esta práctica se pretende familiarizarse con la programación en ensamblador de microcontroladores

Más detalles

TUTORIAL PIC S INNOVACIÓN TECNOLÓGICA ELECTRÓNICA ESTUDIANTIL EN CIENCIAS INTEEC

TUTORIAL PIC S INNOVACIÓN TECNOLÓGICA ELECTRÓNICA ESTUDIANTIL EN CIENCIAS INTEEC INNOVACIÓN TECNOLÓGICA ELECTRÓNICA ESTUDIANTIL EN CIENCIAS TUTORIAL PIC S Resumen elaborado por: Moctezuma Eugenio Juan Carlos Sánchez Rodríguez Jose Luis B. 1.- INTRODUCCIÓN Desde la invención del circuito

Más detalles

Proyecto Final Robot. Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera

Proyecto Final Robot. Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera Proyecto Final Robot Docentes: Collovati Susana Lasarte Matias Correa Diego Integrante: Jesús Olguera 1 Introducción: En el siguiente informe se expone la construcción de un robot capaz de seguir líneas.

Más detalles

Practica 1: It s alive!

Practica 1: It s alive! Pág.: 1 Practica 1: It s alive! 1.1 - Objetivo El objetivo de esta primera práctica es plantear un problema sencillo, que requiera implementar el hardware básico de un microcontrolador y comprobar su funcionamiento

Más detalles

Software para el modulo 5i-5or

Software para el modulo 5i-5or Software para el modulo 5i-5or Existen muchas aplicaciones del tipo secuencial que solamente requieren de dos botones: uno para arrancar la secuencia y otro para pararla. Las salidas de este tipo de controles

Más detalles

SISTEMAS ELECTRONICOS DIGITALES DIRECCIONAMIENTO DE REGISTROS

SISTEMAS ELECTRONICOS DIGITALES DIRECCIONAMIENTO DE REGISTROS SISTEMAS ELECTRONICOS DIGITALES DIRECCIONAMIENTO DE REGISTROS Las líneas de entrada-salida digitales del PIC16X84 llamadas puertas(puertos), PUERTA A Y PUERTA B, que se denominan PA y PB. En este caso

Más detalles

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84

Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84 Alarma con Interfaz DTMF de Línea Telefónica basado en PIC16F84 Propósito En toda aplicación donde normalmente se requiera el establecimiento de una conexión telefónica se hace necesario el diseño de una

Más detalles

Programa del PIC 16F877A

Programa del PIC 16F877A APÉNDICE B Programa del PIC 16F877A ;* "CONTROL AUTOMÁTICO DE VELOCIDAD VEHICULAR". * ;* EL PRESENTE PROGRAMA TIENE COMO FINALIDAD CONTROLAR LA VELOCIDAD DEL * ;* VEHÍCULO, DEPENDIENDO DE LA SEÑAL RECIBIDA

Más detalles

UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA

UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA UNIVERSIDAD AUTÓNOMA METROPOLITANA UNIDAD IZTAPALAPA CIENCIAS BÁSICAS E INGENIERÍA LICENCIATURA EN INGENIERÍA BIOMÉDICA REPORTE DE PROYECTO FINAL SIMULADOR DE ECG PORTÁTIL INTEGRANTES: CRUZ MORALES ARACELI

Más detalles

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores Aplicaciones de mc Lenguaje C- CC5x-Temporizadores Preparado por : Juan Ignacio Huircán Departamento de Ingeniería Eléctrica Universidad de La Frontera Otoño 29 Introducción El µc posee 3 Módulos Timer,

Más detalles

DIRECTIVAS DEL ENSAMBLADOR MPASM. 1.- Directivas para carga o reserva en la Memoria de Programa

DIRECTIVAS DEL ENSAMBLADOR MPASM. 1.- Directivas para carga o reserva en la Memoria de Programa DIRECTIVAS DEL ENSAMBLADOR MPASM 1.- Directivas para carga o reserva en la Memoria de Programa DATA Inicializa una o más palabras de la memoria de programa con datos o tiras de caracteres DATA 0x012, 0x1345

Más detalles

[CURSO BÁSICO DE PIC TABLAS]

[CURSO BÁSICO DE PIC TABLAS] 2009 GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez [CURSO BÁSICO DE PIC ] En esta sección explicaremos que son las tablas, para que se usan y como se hacen. Se describe un ejercicio completo

Más detalles

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion

btfss PIR1,TMR2IF ; Checa si TMR2 interrumpio goto SAL_ISR ; No, sale de la ISR bcf PIR1,TMR2IF ; Si, borra bandera de interrupcion ;************************************************* ;Programa que muestra los números del 9 al 0 ;de manera descendente en una matriz de 5x7 ;leds mediante multiplexación. Los ánodos (filas) ;están conectados

Más detalles

Tema: Utilización del módulo ADC en los microcontroladores PIC.

Tema: Utilización del módulo ADC en los microcontroladores PIC. 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Microcontroladores Lugar de ejecución: Laboratorio de microprocesadores, Edif. 3 Electrónica. Tema: Utilización del módulo ADC en los microcontroladores

Más detalles

DALCAME

DALCAME ;***************************************************************** ; ROGRAMA PARA CONTAR PULSOS DE LA ONDA QRS DE LA ONDA ECG ; DE LA PRIMERA DERIVACION BIPOLAR DE EINTHOVEN ; 23 de Marzo 2005 ; DALCAME

Más detalles

Fundamentos Taller de interrupciones

Fundamentos Taller de interrupciones Fundamentos Taller de interrupciones Francisco García Eijó Segundo Cuatrimestre de 20 - Organización del Computador I El PIC 6F84 El PIC6F84 es un microcontrolador de la empresa Microchip. Cuenta con las

Más detalles