Manejo LCD Gráfico DSM

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

Download "Manejo LCD Gráfico DSM"

Transcripción

1 Manejo LCD Gráfico DSM Christopher Orihuela Sosa 10/09/07

2

3 Í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 Código comentado...10 Bibliografía...28

4

5 Introducción: El objetivo de este trabajo era aprender a controlar con un PIC un display LCD gráfico mediante la creación de un pequeño juego rompebloques que lo utilice. 1

6 Hardware: El montaje se realizó utilizando un PIC 16F84A de 18 patillas a 12 mhz que controla un LCD gráfico. El juego se maneja con 2 pulsadores que comparten las líneas de datos del LCD aprovechándose del margen de niveles de la lógica TTL. A continuación se entrará en detalles sobre cada una de estas partes. 2

7 LCD: El LCD utilizado es un LCD Gráfico CFAG12864B-TMI-V de la casa Crystalfontz. Características más importantes Ancho (píxeles/mm) 128 / 60 Alto (píxeles/mm) 64/ 32.6 Color Píxeles blancos sobre azul Inversor de tensión Incluido Chipset 2 x S6B0108 y 1 x S6B0107 El CFAG12864B-TMI-V está basado en los chips Samsung S6B0108 / S6B0107 (antes llamados KS6B108 / KS0107B). Cada S6B0108 solo admite 64 líneas así que el LCD está dividido en 2 mitades, cada una de ellas controlada por uno de estos 2 chips tal y como ilustra el gráfico. 3

8 Externamente, el patillaje del LCD es el siguiente: Patillaje 1 Vdd (+5v) 2 Vss (0v) 3 Vo Entrada de contraste. Necesita al menos una diferencia de tensión de 8v para funcionar, de ahí que se necesite un inversor de tensión DB0-DB7 - Datos 12 CS1 (Active low) - Selecciona la primera mitad del LCD. 13 CS2 (Active low) - Selecciona la segunda mitad del LCD. 14 RESET (Active low) - Poner a VSS para resetear. 15 R/ W (Active low) - Selecciona operación de lectura/escritura. 16 D/ I (Active low) - Indica si la operación es de datos o instrucciones. * 17 E - Señal de "reloj" para el chipset del LCD. 18 Vee - Salida del inversor de tensión integrado (-5v). 19 LED+ Ánodo para la luz del LCD (backlight). 20 LED- Cátodo para la luz del LCD (backlight). * D/I también es llamado a veces RS en la documentación del chipset. El montaje para el contraste usando el inversor de corriente integrado es este: Se recomienda una resistencia de al menos 25 Ohmios para el Ánodo del backlight. Una resistencia de Ohmios para RESET suele ser típica también en estos montajes. 4

9 Ésta es la tabla de instrucciones del S6B0108: En la documentación se invierten los ejes normales, es decir, se nombra a las columnas como Y y a las páginas verticales (grupos de 8 píxeles verticales) como X (ver organización de pantalla más adelante). Cuando se escribe o lee un dato en/de la (RAM de) pantalla, la Y se aumenta en 1. Tabla de instrucciones del S6B0108 Instrucción RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Display ON/OFF Set Y Address Función L L L L H H H H H H/L Encender/apagar la pantalla. L: Off H: On L L L H Y Address (0-63) Establece la Dirección Y, es decir, la columna activa. Set X Page L L H L H H H X Page (0-7) Establece la Página X, es decir, la página vertical activa. Set Display Start Line Status Read Write Display Data Read Display Data L L H H Display Start Line (0-63) Indica qué línea debe ser tomada como línea de inicio a la hora de mostrar la imágen en el display. L H B U S Y L ON / OFF H L Display Data (8 bits, es decir, una página vertical entera) H H Display Data (8 bits, es decir, una página vertical entera) R E S E T L L L L Lee el estado del chip: BUSY Bit: H: Ocupado L: Disponible DISPLAY Status Bit: L : Display Encendido H: Display Apagado RESET Bit: L: Normal H: Reseteando Escribe el byte en a RAM en la posición de pantalla activa e incrementa la posición Y activa en 1. Pone en DB0:7 el contenido de la RAM en la posición de pantalla activa actual. 5

10 Hay que hacer notar que cada mitad del LCD se controla independientemente. Cada mitad se activa poniendo CS1 o CS2 a nivel bajo antes de cada instrucción, respectivamente. La señal E (pin 17) actúa como reloj. Las instrucciones se procesan en el flanco de subida. Si estamos haciendo una lectura del estado (Status Read) éste es devuelto mientras E está alta. Hay que esperar a que la BUSY Flag del LCD esté desactivada antes de intentar cualquiera de las 6 primeras instrucciones (las 5 primeras se consideran escrituras de registros del LCD, y Status Read una lectura de los mismos). 6

11 Las lecturas de RAM de pantalla son algo más complejas que las demás instrucciones, pues necesitan además de una primera lectura en la que en realidad no lee nada, pues la lectura efectiva se hace en el segundo intento. 7

12 Organización de la pantalla: La pantalla está dividida en 2 mitades de 64x64 píxeles, cada una organizada en 64 columnas individualmente señalables (Y Addresses) y en 8 páginas verticales (X Pages) que agrupan 8 píxeles monocromáticos cada una (1 byte cada X page). Cada mitad individual del LCD se activa poniendo ~CS1 o ~CS2 a nivel bajo. 8

13 Circuito completo: No se pintaron MCLR, VSS, VDD y OSC1 y OSC2 para ahorrar espacio. Estos pines están conectados como en cualquier circuito genérico de PICs. Hay dos puntos que aclarar respecto a este circuito: 1) RA4/~CS1 tiene una resistencia Pull-up de 2K2 Ohmios porque este pin es Open Drain Output en el PIC. 2) La lectura de los pulsadores (RB0 y RB1) utiliza los niveles lógicos TTL compatibles con el PIC y se realiza de la siguiente forma: 1. Cuando el LCD esta usando ese puerto, al no haber resistencias entre el pin del PIC y el del LCD siempre prevalece el valor puesto por el PIC/LCD. 2. Cuando el LCD esta desconectado (~CS1 y ~CS2 altos) se pueden leer los pulsadores. Si éstos están sin pulsar, estarán puestos a 5V por las resistencias pull-up de 47K (TTL input high mínimo 2V y -0.04mA) y detectará un 1 lógico. Si están pulsados, la corriente fluirá desde los 5V por las resistencias pull-up de 47K y las de 2K2 hasta GND, lo que significa que en dichos pines habrá 5V/( )=0.1mA y (0.0001*2200)=0.22V (TTL input low máximo 0.8V y -1.6mA). En este caso la corriente no llega al máximo (-1.6mA) que podría exigir un chip TTL, pero el PIC detectaba el 0 lógico sin problemas. 9

14 Código comentado: El juego consiste en romper todas los bloques sin que la pelota se caiga. Si se consigue se pasa a otra fase en la que la velocidad de movimiento aumenta. Al principio el LCD está apagado, para iniciar una fase hay que pulsar un botón. LIST FUSES include P=16F84A, R=DEC _HS_OSC & _WDT_OFF & _CP_OFF & _PWRTE_ON "P16F84A.inc" Constantes Indican que pin corresponde a que señal de control LCD_CS1 EQU 4 LCD_CS2 EQU 3 LCD_RW EQU 2 LCD_DI EQU 1 LCD_RS EQU 1 (RS=DI) LCD_E EQU Variables Ram EQU h'0c' Inicio de la RAM Variables usadas para controlar el LCD (los ejes X e Y siguen la convencion del LCD) LCD_Page EQU Ram+0 LCD_Set_Page_X LCD_Address EQU Ram+1 LCD_Set_Address_Y LCD_Data EQU Ram+2 LCD_Write_Display_Data LCD_Pixel_X EQU Ram+3 LCD_Put_Pixel/LCD_Set_Pixel LCD_Pixel_Y EQU Ram+4 Variables temporales Temp_Count EQU Ram+5 Temp_1 EQU Ram+6 Temp_X EQU Ram+6 Temp_2 EQU Ram+7 Temp_Y EQU Ram+7 Temp_3 EQU Ram+8 10

15 Temp_Z EQU Ram+8 Variables usadas para el juego (los ejes X e Y siguen la convencion del LCD) Inc_X EQU Ram+9 Inc_Y EQU Ram+10 Direcciones de la pelota Pelota_X EQU Ram+11 Pelota_Y EQU Ram+12 Posicion de la pelota Barra_Y EQU Ram+13 Posicion de la barra Barra_Y_Inc EQU Ram+14 Incremento de la barra Espera EQU Ram+15 Espera entre frame y frame Bloques_Quedan EQU Ram+16 Cuantos bloques quedan Bloques EQU Ram+17 Bloques (2 filas x 16 bytes) Valores (0: derribado, 1: marcado para borrar, 2: entero) Programa ORG 0 Direccion de inicio Start goto Inicio Iniciar programa Aqui van todas las tablas del programa Esta tabla es necesaria, porque querremos iluminar solo un pixel de toda la página vertical de 8 píxeles (la pelota). Tabla que devuelve el valor para una pagina del LCD segun el pixel que queramos poner Pixel_Value addwf PCL, F retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' retlw b' ' 11

16 Inicializar puertos. Apagamos el LCD hasta que se pulse algo. Inicio inicialmente baja Inicializar puertos clrf PORTA clrf PORTB bsf STATUS, RP0 poner B a salida clrf TRISA clrf TRISB bcf STATUS, RP0 bcf PORTA, LCD_E debemos poner E Apagamos el LCD hasta que se pulse un boton bcf PORTA, LCD_CS1 bsf PORTA, LCD_CS2 call LCD_Off bsf PORTA, LCD_CS1 bcf PORTA, LCD_CS2 call LCD_Off bsf PORTA, LCD_CS1 desactivar las 2 mitades bsf PORTA, LCD_CS2 del lcd para leer bsf STATUS, RP0 puerto B a leer movlw H'FF' movwf TRISB bcf STATUS, RP0 esperamos unos ms movlw 100 call WaitNms Esperar_Pulsacion_Inicial movfw PORTB esperamos a que se pulse algo andlw b' ' addlw -3 btfsc STATUS, Z goto Esperar_Pulsacion_Inicial volvemos a dejar el puerto B a salida bsf STATUS, RP0 clrf TRISB bcf STATUS, RP0 inicialmente ponemos un cierto retardo (velocidad 12

17 juego) cada partida movlw 30 movwf Espera aqui es donde se inicializan los elementos de esta parte es comun para todas las partidas Esta parte inicia una partida, independientemente de la velocidad. Se inicializan las posiciones de la pelota, los bloques (matriz 2x16 en variable bloques), etc. Iniciar_Partida Inicializar primera mitad del LCD bcf PORTA, LCD_CS1 bsf PORTA, LCD_CS2 call LCD_On call LCD_Clear Inicializar segunda mitad bsf PORTA, LCD_CS1 bcf PORTA, LCD_CS2 call LCD_On call LCD_Clear posicion inicial de la pelota movlw 30 movwf Pelota_X movwf Pelota_Y movlw 1 movwf Inc_X movwf Inc_Y posicion inicial de la barra movlw 44 movwf Barra_Y derribar inicializar los bloques movlw 32 movwf Bloques_Quedan quedan 32 bloques por ahora los marcamos con un 2 en la matriz (2=por 13

18 derribar) Ini_bloques_L1 movwf Temp_X movlw Bloques movwf FSR movlw 2 movwf INDF incf FSR decfsz Temp_X goto Ini_bloques_L1 fin de inicializar los bloques El loop principal consiste en pintar la pantalla, actualizar las posiciones de barra y pelota, comprobar las colisiones con bloques y bordes, leer los controles, comprueba si se gana o se pierde... Realiza una espera fija entre frame y frame. No hubo necesidad de usar el timer, puesto que el número de instrucciones que se ejecuta es casi igual entre frames y es el lcd el que limita en gran medida la velocidad (esperando al busy flag). Loop principal Loop pintar los bloques apuntamos a la primera hilera de bloques movlw Bloques movwf FSR bcf PORTA, LCD_CS1 primera mitad LCD bsf PORTA, LCD_CS2 call Pintar_Bloques apuntamos a la segunda hilera bloques movlw (Bloques+8) movwf FSR bsf PORTA, LCD_CS1 bcf PORTA, LCD_CS2 segunda mitad LCD call Pintar_Bloques fin de pintar los bloques pintar la pelota movfw Pelota_X movwf LCD_Pixel_X movfw Pelota_Y movwf LCD_Pixel_Y call LCD_Put_Pixel 14

19 pintamos la barra call Pintar_Barra fin de pintar la barra Mandos unids. derecha Mandos_L1 2 unids. izquierda Mandos_L2 Leemos los controles y realizamos una espera entre frames bsf PORTA, LCD_CS1 desactivar bsf PORTA, LCD_CS2 las 2 mitades del lcd espera movfw Espera call WaitNms bsf STATUS, RP0 puerto B a leer movlw H'FF' movwf TRISB bcf STATUS, RP0 clrf Barra_Y_Inc movimiento neutro (cero) Si B.0 es 0 y no esta al tope de derecha, mover 2 btfsc PORTB, 0 goto Mandos_L1 movfw Barra_Y addlw 152 btfsc STATUS, C goto Mandos_L1 movlw 2 movwf Barra_Y_Inc Si B.1 es 0 y no esta al tope de izquierda, mover btfsc PORTB, 1 goto Mandos_L2 movfw Barra_Y btfsc STATUS, Z goto Mandos_L2 movlw movwf Barra_Y_Inc volvemos a dejar el puerto B a salida bsf STATUS, RP0 clrf TRISB bcf STATUS, RP0 otra espera movfw Espera call WaitNms 15

20 Loop_Sig_1 Loop_Sig_2 Loop_Sig_3 Loop_Sig_4 hacer rebotar la pelota en las paredes colision arriba movfw Pelota_X btfss STATUS, Z goto Loop_Sig_1 movlw 1 movwf Inc_X colision izquierda movfw Pelota_Y btfss STATUS, Z goto Loop_Sig_2 movlw 1 movwf Inc_Y colision abajo movfw Pelota_X xorlw 60 btfss STATUS, Z goto Loop_Sig_3 call Wait1Second goto Start colision derecha movfw Pelota_Y xorlw 127 btfss STATUS, Z goto Loop_Sig_4 movlw movwf Inc_Y final de rebotes en paredes hacer rebotar la pelota si choca con la barra dentro de los limites Rebotes_Barra movlw 56 la barra empieza a partir de X=56 xorwf Pelota_X, W solo entonces miramos colisiones btfss STATUS, Z goto Rebotes_Barra_Salir movfw Pelota_Y addlw 1 subwf Barra_Y, W btfsc STATUS, C Si Pelota_Y>=Barra_Y goto Rebotes_Barra_Salir movfw Barra_Y addlw 25 subwf Pelota_Y, W 16

21 Rebotes_Barra_Salir btfsc STATUS, C Y Pelota_Y<=(Barra_Y+24) goto Rebotes_Barra_Salir movlw movwf Inc_X borrar la pelota call LCD_Clear_Pixel borrar la barra call Borrar_Barra mover la pelota a la siguiente posicion movfw Inc_X addwf Pelota_X, F movfw Inc_Y addwf Pelota_Y, F mover la barra hacia la siguiente posicion movfw Barra_Y_Inc addwf Barra_Y, F Colision_Bloques sale pelota pelota Comprobar la colision con los bloques movlw b' ' andwf Pelota_X, W btfss STATUS, Z comprobar si X es <=15, si no, goto Fin_Colision_Bloques comprobar si hay bloques en la posicion de la extraemos la pos. del bloque a partir de la movfw Pelota_Y movwf Temp_1 rrf Temp_1, F bloques 8x8 rrf Temp_1, F rrf Temp_1, F movlw b' ' 17

22 Colision_Bloques_L1 bloque andwf Temp_1, F btfss Pelota_X, 3 comprobar si fila 1 o 2 goto Colision_Bloques_L1 bsf Temp_1, 4 sumar 16 accedemos al byte de ese movlw Bloques addwf Temp_1, W movwf FSR movfw INDF btfsc STATUS, Z comprobamos si 0 (bloque borrado) goto Fin_Colision_Bloques no es un cero, efectuamos rebotes decf INDF si no decrementamos (marcar para borrar) decfsz Bloques_Quedan si ultimo bloque, siguiente nivel goto Colision_Bloques_L2 Partida_Ganada cuando se gana una partida restar 10 al retardo si no es ya 10 movlw -10 addwf Espera, W btfsc STATUS, Z goto Partida_Ganada_L1 movwf Espera Partida_Ganada_L1 Esperamos 1 segundo antes de pasar de fase call Wait1Second iniciamos una nueva partida con mas velocidad goto Iniciar_Partida Colision_Bloques_L2 comprobamos si entro por la derecha, izquierda, o medio Colision_Bloques_Comp_Izquierda movlw b' ' andwf Pelota_Y, W nos interesan los 3 ultimos bits btfss STATUS, Z si desplazamiento dentro bloque es cero goto Colision_Bloques_Comp_Derecha movlw movwf Inc_Y goto Colision_Bloques_Comp_Arriba Colision_Bloques_Comp_Derecha movfw Pelota_Y movwf Temp_3 movlw b' ' andwf Temp_3, F solo 3 ultimos bits xorwf Temp_3, F btfss STATUS, Z goto Colision_Bloques_Comp_Arriba 18

23 movlw 1 movwf Inc_Y Colision_Bloques_Comp_Arriba movlw b' ' andwf Pelota_X, W btfss STATUS, Z si desplazamiento dentro bloque es cero goto Colision_Bloques_Comp_Abajo movlw movwf Inc_X goto Fin_Colision_Bloques Colision_Bloques_Comp_Abajo movfw Pelota_X movwf Temp_3 movlw b' ' andwf Temp_3, F xorwf Temp_3, F btfss STATUS, Z goto Fin_Colision_Bloques movlw 1 movwf Inc_X fin de rebotes Fin_Colision_Bloques Fin de comprobar la colision con los bloques goto Loop Ésta es la parte de las subrutinas, se divide en dos. Las que solo sirven para el juego y las más generales que controlan el lcd Subrutinas Borra la barra Borrar_Barra clrw goto Pintar_Barra_C Pinta la barra 19

24 Pintar_Barra Pintar_Barra_C Pintar_Barra_CS1 Pintar_Barra_Mover cambiar de mitad Pintar_Barra_L1 Pintar_Barra_L2 movlw b' ' movwf LCD_Data movlw b' ' andwf Barra_Y, W btfsc STATUS, Z que mitad LCD empezamos a pintar goto Pintar_Barra_CS1 bsf PORTA, LCD_CS1 bcf PORTA, LCD_CS2 segunda mitad LCD goto Pintar_Barra_Mover bcf bsf PORTA, LCD_CS1 primera mitad LCD PORTA, LCD_CS2 movernos donde deberia estar la barra movfw Barra_Y movwf LCD_Address call LCD_Set_Address_Y movlw 7 movwf LCD_Page call LCD_Set_Page_X movlw pixeles de barra movwf Temp_1 movfw Barra_Y movwf Temp_2 para saber cuando movlw 64 xorwf Temp_2, W btfss STATUS, Z hay que cambiar de mitad LCD? goto Pintar_Barra_L2 bsf PORTA, LCD_CS1 bcf PORTA, LCD_CS2 segunda mitad LCD movlw 7 movwf LCD_Page call LCD_Set_Page_X seguir en la misma X clrf LCD_Address call LCD_Set_Address_Y Y=0 call LCD_Write_Display_Data incf Temp_2, F decfsz Temp_1, F goto Pintar_Barra_L1 return Pinta la mitad de los bloques en la media pantalla activa Pintar_Bloques 20

25 Pintar_Bloques_LY siguiente saltarse bloques Pintar_Bloques_LX clrf LCD_Address clrf LCD_Page call LCD_Set_Address_Y call LCD_Set_Page_X movlw 2 movwf Temp_Y movlw 8 movwf Temp_X movwf LCD_Address esta variable apunta a la columna por si hay que movfw INDF Pintar_Bloque en el LCD btfsc STATUS, Z goto LCD_Saltarse_Bloque si era 0, saltarse bloque addlw btfsc STATUS, Z si era 1, pintarlo en blanco goto LCD_Pintar_Bloque_Blanco LCD_Pintar_Bloque_Normal si era otro, pintar normal movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data movlw b' ' movwf LCD_Data call LCD_Write_Display_Data goto LCD_Pintar_Bloque_Salir LCD_Pintar_Bloque_Blanco clrf LCD_Data pintar 8 pages en blanco movlw 8 movwf Temp_3 LCD_Pintar_Bloque_Blanco_L1 call LCD_Write_Display_Data 21

26 LCD_Saltarse_Bloque decfsz Temp_3 goto LCD_Pintar_Bloque_Blanco_L1 decf INDF no pintar ya mas goto LCD_Pintar_Bloque_Salir call LCD_Set_Address_Y LCD_Pintar_Bloque_Salir Fin de pintar_bloque en el LCD movlw 8 incrementar el puntero al addwf LCD_Address, F siguiente bloque incf FSR decfsz Temp_X goto Pintar_Bloques_LX movlw 8 siguiente hilera de bloques addwf FSR, F incf LCD_Page call LCD_Set_Page_X decfsz Temp_Y goto Pintar_Bloques_LY return Borra la pagina entera donde se encuentre el pixel especificado en LCD_Pixel_X, LCD_Pixel_Y LCD_Clear_Pixel movlw 0 goto LCD_Put_Pixel_L1 Pinta pixel especificado en LCD_Pixel_X, LCD_Pixel_Y LCD_Put_Pixel movfw LCD_Pixel_X andlw b' ' call Pixel_Value LCD_Put_Pixel_L1 movwf LCD_Data bcf PORTA, LCD_CS1 bsf PORTA, LCD_CS2 primera mitad LCD movfw LCD_Pixel_Y movwf LCD_Address andlw b' ' btfsc STATUS, Z comprobar de que mitad es goto LCD_Put_Pixel_L2 bsf PORTA, LCD_CS1 22

27 LCD_Put_Pixel_L2 bcf PORTA, LCD_CS2 segunda mitad LCD call LCD_Set_Address_Y movfw LCD_Pixel_X movwf LCD_Page rrf LCD_Page, F rrf LCD_Page, F rrf LCD_Page, F call LCD_Set_Page_X call LCD_Write_Display_Data return Borra la mitad del LCD seleccionada en ese momento LCD_Clear Limpiar pantalla clrf LCD_Data clrf LCD_Address clrf LCD_Page call LCD_Set_Page_X call LCD_Set_Address_Y LCD_Clear_L1 LCD_Clear_L2 movlw 64 movwf Temp_2 call LCD_Write_Display_Data decfsz Temp_2, F goto LCD_Clear_L2 incf LCD_Page, F call LCD_Set_Page_X btfss LCD_Page, 3 goto LCD_Clear_L1 return Aqui empiezan las rutinas de mas bajo nivel del manejo del LCD Situa la Pagina activa de la mitad del LCD seleccionada en ese momento a LCD_Page LCD_Set_Page_X call Wait_For_Busy_Flag bcf PORTA, LCD_RW bcf PORTA, LCD_RS 23

28 movfw LCD_Page iorlw b' ' xorlw b' ' movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf PORTA, LCD_E return Situa la Y Address activa de la mitad del LCD seleccionada en ese momento a LCD_Address LCD_Set_Address_Y call Wait_For_Busy_Flag bcf PORTA, LCD_RW bcf PORTA, LCD_RS movfw LCD_Address iorlw b' ' xorlw b' ' movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf PORTA, LCD_E return Escribe el dato en LCD_Data en la Pagina X y Direccion Y activas en la mitad seleccionada del LCD en ese momento LCD_Write_Display_Data call Wait_For_Busy_Flag bcf PORTA, LCD_RW bsf PORTA, LCD_RS movfw LCD_Data movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf PORTA, LCD_E return Apaga la mitad seleccionada del LCD en ese momento 24

29 LCD_Off call Wait_For_Busy_Flag bcf PORTA, LCD_RW bcf PORTA, LCD_RS movlw b' ' movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf PORTA, LCD_E return Enciende la mitad seleccionada del LCD en ese momento y situa su Display Start Line a 0 LCD_On call Wait_For_Busy_Flag bcf PORTA, LCD_RW bcf PORTA, LCD_RS movlw b' ' movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf PORTA, LCD_E Display Start Line = 0 call Wait_For_Busy_Flag bcf PORTA, LCD_RW bcf PORTA, LCD_RS movlw b' ' movwf PORTB call Wait bsf PORTA, LCD_E call Wait bcf return PORTA, LCD_E Espera por la Busy Flag de la mitad del LCD seleccionada en ese momento Wait_For_Busy_Flag bsf STATUS, RP0 poner puerto B a leer movlw H'FF' movwf TRISB bcf STATUS, RP0 25

30 L1 estaba bcf bsf call Wait bsf call Wait PORTA, LCD_RS PORTA, LCD_RW PORTA, LCD_E btfsc PORTB, 7 BUSY=bit 7 goto L1 bcf PORTA, LCD_E bsf STATUS, RP0 dejar el puerto B como clrf TRISB bcf STATUS, RP0 return Rutinas de espera Optamos por usar una única rutina Wait para todas las esperas al mandar instrucciones al LCD (Tiempo que tiene que estar E alto/bajo, tiempo antes de poder leer, etc, todas siempre menos de 1 us). De esta forma podremos adaptar a otras velocidades de reloj si hace falta. Esperar 1 us a 12 mhz (sobra 1 ciclo contando el call y el return) Wait return Espera aproximadamente 1 milisegundo a 12 mhz [( )*248]+(8+1+2)+8=2995 (sin contar el call) Esperar_2995_Ciclos movlw 249 nop goto $+1 goto $+1 Esperar_2995_Ciclos_L1 goto $+1 goto $+1 goto $+1 goto $+1 addlw -1 btfss STATUS, Z 26

31 goto Esperar_2995_Ciclos_L1 return Espera el numero de ms especificados en W WaitNms movwf Temp_Count WaitNms_L1 call Esperar_2995_Ciclos decfsz Temp_Count goto WaitNms_L1 return Espera 1 Segundo Wait1Second movlw 250 call WaitNms movlw 250 call WaitNms movlw 250 call WaitNms movlw 250 goto WaitNms END 27

32 Bibliografía: 1. Manual LCD gráfico CFAG12864BTMIV ( 2. Manual PIC16F84A ( 3. Standard TTL logic levels ( 28

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

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

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

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

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

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

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

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

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

Pantallas de Cristal Líquido

Pantallas de Cristal Líquido Pantallas de Cristal Líquido A diferencia de los display de 7 segmentos, las pantallas LCD tienen la capacidad de mostrar caracteres alfanuméricos. Consta de una matriz de caracteres (5X7 puntos) distribuidos

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

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

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

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

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

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador

Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador Jesús Alberto Díaz Carmona Ingeniería en Informática. Curso 2005/06. Diseño de Sistemas Basados en Microprocesador Descripción El proyecto se trata de un sistema de cámaras de vigilancia en circuito cerrado,

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

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

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

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

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

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

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

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

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

MODULO LCD MODULO LCD. Pág.1

MODULO LCD MODULO LCD.  Pág.1 MODULO LCD www.teleline.terra.es/personal/fremiro Pág.1 INTRODUCCIÓN MODULO LCD Las siguientes páginas intentan dar una breve descripción del funcionamiento del módulo LCD incluido en el sistema de evaluación

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

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

- 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

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

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

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

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

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

;***************************************************************************************** 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

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

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

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

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

Proyectos con el PIC16F84

Proyectos con el PIC16F84 Capítulo 2 Proyectos con el PIC6F84 Conexión de LED y dipswitch Manejo de un display de siete segmentos Multiplexaje de teclados y displays Conexión de memorias seriales al PIC Manejo de un módulo LCD

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

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

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

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

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

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR

APÉNDICE B APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR APÉNDICE B. PROGRAMA DEL PIC16F874 EN LENGUAJE ENSAMBLADOR INIAX EQU 0X20 INIBX EQU 0X21 INICX EQU 0X22 INIDX EQU 0X23 INIEY EQU 0X24 INIFY EQU 0X25 INIGY EQU 0X26 INIHY EQU 0X27 SELECCION EQU 0X28 APUNTADOR

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

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com Guía de Operación Reloj en tiempo real Modulo: RTCU2iempo real Clave: 719 El modulo 719 Reloj en tiempo real- utiliza

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

Periféricos Básicos Visualizador LCD

Periféricos Básicos Visualizador LCD Periféricos Básicos Visualizador LCD Es frecuente la necesidad de mostrar mensajes que tienen que ver con el estado de algo o el valor de un instrumento de medida electrónico. Para estos casos la utilización

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

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

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

PROCESADORES I Guia TP7 Introducción al Assembler del PIC

PROCESADORES I Guia TP7 Introducción al Assembler del PIC Pseudo-instrucciones PIC16F628 PROCESADORES I Guia TP7 Introducción al Assembler del PIC Se describen a continuación las más relevantes, que serán necesarias para la realización de los diferentes ejercicios.

Más detalles

CONEXIÓN DE UNA PANTALLA LCD A UN MICROCONTROLADOR

CONEXIÓN DE UNA PANTALLA LCD A UN MICROCONTROLADOR CONEXIÓN DE UNA PANTALLA LCD A UN MICROCONTROLADOR ALUMNOS: José Hipólito Pascual José Luis Fernández Enrique Silvestre Mario Pozo José Ignacio Seguí 1 INDICE 1-Introducción 2- Qué es un LCD? 2.1-Los caracteres

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

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

Tema: Uso de pantalla matricial LCD y teclado matricial con eliminación de rebote.

Tema: Uso de pantalla matricial LCD y teclado matricial con eliminación de rebote. 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Microcontroladores Lugar de ejecución: Laboratorio de microprocesadores, Edif. 3 Electrónica. Tema: Uso de pantalla matricial LCD y teclado matricial

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

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

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

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

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

Entrenadores de Microcontroladores PIC

Entrenadores de Microcontroladores PIC Entrenadores de Microcontroladores PIC Profesor: Pedro Alonso Sanz Instituto: I.E.S. Joan Miró Localidad: San Sebastián de los Reyes Índice Página 1.- Entrenador Básico 0... 4 1.1.- Ejemplo1.asm Leer el

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

Energía fotovoltaica y su aplicación rural

Energía fotovoltaica y su aplicación rural Energía fotovoltaica y su aplicación rural Antonio Blanco Solsona, Francisco García Trobat Antonio.Blanco@uv.es gtrobat@telefonica.net INTRODUCCIÓN En las fincas rurales aisladas es cada vez más necesario

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

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

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM

Módulos CCP. Registro de captura Registro de comparación Registro de ciclo de servicio PWM Módulos CCP Los PIC16F87X disponen de 2 módulos CCP (Capture/Compare/PWM): CCP1 y CCP2. Cada módulo CCP cuenta con un registro de 16 bits (CCPR1 y CCPR2) que puede operar como un Registro de captura Registro

Más detalles

; Valores de constantes:

; Valores de constantes: LIST P=PIC16F84A #INCLUDE ; Pic a usar ; Lista de etiquetas de microchip ; Configuración opciones de hardware para la programación CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ; Valores

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

PROFESOR: Práctica 8. Manejo de Puertos de Entrada y salida del Microcontrolador PIC

PROFESOR: Práctica 8. Manejo de Puertos de Entrada y salida del 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

PRÁCTICA 5 DIRECCIONAMIENTO INDIRECTO Y TECLADO MATRICIAL

PRÁCTICA 5 DIRECCIONAMIENTO INDIRECTO Y TECLADO MATRICIAL Direccionamiento Indirecto y Teclado Matricial 55 PRÁCTICA 5 DIRECCIONAMIENTO INDIRECTO Y TECLADO MATRICIAL OBJETIVO: Identificar la forma de operar del modo de direccionamiento indirecto. Analizar el

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

; Valores de constantes:

; Valores de constantes: LIST P=PIC16F84A #INCLUDE ; Pic a usar ; Lista de etiquetas de microchip ; Configuración opciones de hardware para la programación CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ; Valores

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

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial Módulo Módulo LCD con interface serial LCD con interface serial EDISON DUQUE C. Este módulo permite mostrar, en una pantalla de cristal líquido, los mensajes que son enviados desde una computadora o un

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

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

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE]

[CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE] 2009 GRUPO ESTUDIANTIL INVENTRONICA Joel Oswaldo Campos Pérez [CURSO BÁSICO DE PIC RETARDOS POR SOFTWARE] En este segmento se abordara el tema de retardos por software en ensamblador, se aprenderá la estructura

Más detalles

PROFESOR: Práctica 9. Control de Motores de CD con Microcontrolador PIC

PROFESOR: Práctica 9. Control de Motores de CD 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

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

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

INTRODUCCION A LA CONFIGURACION DEL CONVERSOR ANALOGICO DEL PIC16F876A

INTRODUCCION A LA CONFIGURACION DEL CONVERSOR ANALOGICO DEL PIC16F876A Rev. 24/09/2018 : Se realizó algunas correcciones. INTRODUCCION A LA CONFIGURACION DEL CONVERSOR ANALOGICO DEL PIC16F876A La teoría que se presenta es válida para los micro controladores de la empresa

Más detalles

PROGRAMACIÓN DEL MICROCONTROLADOR PIC 16C64 COMO CONTROLADOR MULTIEJE PARA MOTORES PASO

PROGRAMACIÓN DEL MICROCONTROLADOR PIC 16C64 COMO CONTROLADOR MULTIEJE PARA MOTORES PASO PROGRAMACIÓN DEL MICROCONTROLADOR PIC 16C64 COMO CONTROLADOR MULTIEJE PARA MOTORES PASO. Gustavo Caamaño* ; Coordinador de Tecnología en Electrónica En este artículo se describe la programación de un PIC

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

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

Transmisión de datos por Radio Frecuencia

Transmisión de datos por Radio Frecuencia Transmisión de datos por Radio Frecuencia Diseño de Sistemas Basados en Microcontrolador Universidad de Las Palmas de Gran Canaria 2003-04 José Carlos Ruiz Luque Francisco García Rodríguez 1 CONTENIDOS

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

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

6. CONTROL DEL DS1802 A TRAVÉS DE PIC

6. CONTROL DEL DS1802 A TRAVÉS DE PIC 6. CONTROL DEL DS1802 A TRAVÉS DE PIC 6.1. Microcontrolador PIC 16F819. Los microcontroladores PIC de Microchip forman una familia extensísima de circuitos controladores de propósito general, teniendo

Más detalles

Capítulo 4 Interfase Humana

Capítulo 4 Interfase Humana Capítulo 4 Interfase Humana Para poder interactuar con cualquier máquina con la cual se trabaje se necesita una interfase, a través de la cual el usuario puede saber cual es el status actual de la máquina

Más detalles

Experiencia con Motores paso a paso

Experiencia con Motores paso a paso Diseño de Sistemas Basados en Microprocesadores Experiencia con Motores paso a paso Rubén Tauroni Gil ITIS 2008-2009 Universidad de Las Palmas de Gran Canaria Índice Objetivos...3 Parte Teórica...4 Desarrollo

Más detalles

PROYECTO DE NAVIDAD PIC QUE REPRODUCE SONIDO Manolo Romero 2015 VISIÓN GENERAL

PROYECTO DE NAVIDAD PIC QUE REPRODUCE SONIDO Manolo Romero 2015 VISIÓN GENERAL PROYECTO DE NAVIDAD PIC QUE REPRODUCE SONIDO Manolo Romero 2015 VISIÓN GENERAL El circuito está compuesto por una EEPROM serie con bus tipo I2C modelo 24LC256 y un PIC tipo 16F628, un DAC de 5 Bit con

Más detalles

PROFESOR: Práctica 7. Puertos de salida del Microcontrolador

PROFESOR: Práctica 7. Puertos de salida del Microcontrolador 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

2.- Descripción General del PIC16F877

2.- Descripción General del PIC16F877 2.- Descripción General del PIC16F877 2.1.- La Familia del PIC16F877 El microcontrolador PIC16F877 de Microchip pertenece a una gran familia de microcontroladores de 8 bits (bus de datos) que tienen las

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

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