|
1762
|
Informática / Electrónica / Resolver problemas con tablas 6 bits.
|
en: 3 Septiembre 2010, 07:32 am
|
Hola: Quiero hacer la tabla de 6 bits y me parece el error de los 256 bits usados. ¿Hay alguna manera de resolverlo? ; ZONA DE DATOS **********************************************************************
TITLE "LCD Sensor PS2" SUBTITLE "Revisión 1.00" LIST P=16F886 INCLUDE <P16F886.INC> __CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __CONFIG _CONFIG2, _WRT_OFF & _BOR21V
CBLOCK 0x20 CONTADOR ENDC
#DEFINE RESET_RC0 PORTC,0 #DEFINE EJECT_RC1 PORTC,1 #DEFINE OPEN_RC2 PORTC,2 #DEFINE CLOSE_RC3 PORTC,3 #DEFINE GREEN_RC4 PORTC,4 #DEFINE RED_RC5 PORTC,5 #DEFINE Auxiliar_6 PORTC,6 #DEFINE Auxiliar_7 PORTC,7
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0.
Inicio call LCD_Inicializa BANKSEL TRISC ; Banco 1. bsf RESET_RC0 ; Se configura como entradas. bsf EJECT_RC1 bsf OPEN_RC2 bsf CLOSE_RC3 bsf GREEN_RC4 bsf RED_RC5 bsf Auxiliar_6 bsf Auxiliar_7 BANKSEL PORTC ; Banco 0. clrw
Principal movf PORTC,W ; Lee los sensores. andlw b'00111111' ; Máscara para quedarse con el valor de los sensores. addwf PCL,F ; Salta a la configuración adecuada. goto Configuracion0 ; 0 0 0 0 0 0 goto Configuracion1 ; 0 0 0 0 0 1 goto Configuracion2 ; 0 0 0 0 1 0 goto Configuracion3 ; 0 0 0 0 1 1 goto Configuracion4 ; 0 0 0 1 0 0 goto Configuracion5 ; 0 0 0 1 0 1 goto Configuracion6 ; 0 0 0 1 1 0 goto Configuracion7 ; 0 0 0 1 1 1 goto Configuracion8 ; 0 0 1 0 0 0 goto Configuracion9 ; 0 0 1 0 0 1 goto Configuracion10 ; 0 0 1 0 1 0 goto Configuracion11 ; 0 0 1 0 1 1 goto Configuracion12 ; 0 0 1 1 0 0 goto Configuracion13 ; 0 0 1 1 0 1 goto Configuracion14 ; 0 0 1 1 1 0 goto Configuracion15 ; 0 0 1 1 1 1 goto Configuracion16 ; 0 1 0 0 0 0 goto Configuracion17 ; 0 1 0 0 0 1 goto Configuracion18 ; 0 1 0 0 1 0 goto Configuracion19 ; 0 1 0 0 1 1 goto Configuracion20 ; 0 1 0 1 0 0 goto Configuracion21 ; 0 1 0 1 0 1 goto Configuracion22 ; 0 1 0 1 1 0 goto Configuracion23 ; 0 1 0 1 1 1 goto Configuracion24 ; 0 1 1 0 0 0 goto Configuracion25 ; 0 1 1 0 0 1 goto Configuracion26 ; 0 1 1 0 1 0 goto Configuracion27 ; 0 1 1 0 1 1 goto Configuracion28 ; 0 1 1 1 0 0 goto Configuracion29 ; 0 1 1 1 0 1 goto Configuracion30 ; 0 1 1 1 1 0 goto Configuracion31 ; 0 1 1 1 1 1 goto Configuracion32 goto Configuracion33 goto Configuracion34 goto Configuracion35 goto Configuracion36 goto Configuracion37 goto Configuracion38 goto Configuracion39 goto Configuracion40 goto Configuracion41 goto Configuracion42 goto Configuracion43 goto Configuracion44 goto Configuracion45 goto Configuracion46 goto Configuracion47 goto Configuracion48 goto Configuracion49 goto Configuracion50 goto Configuracion51 goto Configuracion52 goto Configuracion53 goto Configuracion54 goto Configuracion55 goto Configuracion56 goto Configuracion57 goto Configuracion58 goto Configuracion59 goto Configuracion60 goto Configuracion61 goto Configuracion62 goto Configuracion63 Configuracion0 goto ActivaSalida Configuracion1 goto ActivaSalida Configuracion2 goto ActivaSalida Configuracion3 goto ActivaSalida Configuracion4 goto ActivaSalida Configuracion5 goto ActivaSalida Configuracion6 goto ActivaSalida Configuracion7 goto ActivaSalida Configuracion8 goto ActivaSalida Configuracion9 goto ActivaSalida Configuracion10 goto ActivaSalida Configuracion11 goto ActivaSalida Configuracion12 goto ActivaSalida Configuracion13 goto ActivaSalida Configuracion14 goto ActivaSalida Configuracion15 goto ActivaSalida Configuracion16 goto ActivaSalida Configuracion17 goto ActivaSalida Configuracion18 goto ActivaSalida Configuracion19 goto ActivaSalida Configuracion20 goto ActivaSalida Configuracion21 goto ActivaSalida Configuracion22 goto ActivaSalida Configuracion23 goto ActivaSalida Configuracion24 goto ActivaSalida Configuracion25 goto ActivaSalida Configuracion26 goto ActivaSalida Configuracion27 goto ActivaSalida Configuracion28 goto ActivaSalida Configuracion29 goto ActivaSalida Configuracion30 goto ActivaSalida Configuracion31 goto ActivaSalida Configuracion32 goto ActivaSalida Configuracion33 goto ActivaSalida Configuracion34 goto ActivaSalida Configuracion35 goto ActivaSalida Configuracion36 goto ActivaSalida Configuracion37 goto ActivaSalida Configuracion38 goto ActivaSalida Configuracion39 goto ActivaSalida Configuracion40 goto ActivaSalida Configuracion41 goto ActivaSalida Configuracion42 goto ActivaSalida Configuracion43 goto ActivaSalida Configuracion44 goto ActivaSalida Configuracion45 goto ActivaSalida Configuracion46 goto ActivaSalida Configuracion47 goto ActivaSalida Configuracion48 goto ActivaSalida Configuracion49 goto ActivaSalida Configuracion50 goto ActivaSalida Configuracion51 goto ActivaSalida Configuracion52 goto ActivaSalida Configuracion53 goto ActivaSalida Configuracion54 goto ActivaSalida Configuracion55 goto ActivaSalida Configuracion56 goto ActivaSalida Configuracion57 goto ActivaSalida Configuracion58 goto ActivaSalida Configuracion59 goto ActivaSalida Configuracion60 goto ActivaSalida Configuracion61 goto ActivaSalida Configuracion62 goto ActivaSalida Configuracion63 goto ActivaSalida ActivaSalida ; movwf PORTB goto Principal
; ; "Mensajes" ---------------------------------------------------------------------------- ; Mensajes addwf PCL,F Mensaje1 DT " STAND BY ", 0x00 Mensaje2 DT "MEnsaje 1.", 0x00 Mensaje3 DT "Mensaje 2 ", 0x00 Mensaje4 DT "Mensaje 3 ", 0x00 Mensaje5 DT " Msm ", 0x00 Mensaje6 DT "Motor girando...", 0x00 Mensaje7 DT "marca", 0x00 Mensaje8 DT "Mensaje 4-2 ", 0x00 FinTabla ;MensajeAnuncio ; DT " anuncio--- ", 0x00
IF (FinTabla > 0xFF) ERROR "¡CUIDADO!: La tabla ha superado el tamaño de la página de los" MESSG "primeros 256 bytes de memoria ROM. NO funcionará correctamente." ENDIF
INCLUDE <LCD_4BIT.INC> INCLUDE <LCD_MENS.INC> INCLUDE <RETARDOS.INC> END
Saludo.
|
|
|
1763
|
Informática / Electrónica / Re: Tablas indexado de 8 bits.
|
en: 29 Agosto 2010, 02:39 am
|
Hola: Muchas gracias por la explicación. No se me había ocurrido crear usar macros. Te me has delantado ya que te iba a poner esta explicación de lo que quiero decite. Hola: Ese es el problema, no liar la parda cmabiando los contadores. En el primer ejemplo que puse, me pareció mucho poner los 256 configuraciones, sólo llegué a 53 y me cansé. A parte que no voy a utilizar las 256 combinaciones que hay usando los 8 pines de un puerto del PIC. Con los ejemplos que he puesto. ¿Entiendes a lo que quiero llegar? Configuración0 Configuración1 Configuración2 Configuración3 Configuración4 Configuración5 Configuración6 Configuración7 Configuración8 Configuración9 Configuración10 Configuración11 Configuración12 Configuración13 Configuración14 Configuración15 Configuración16 Configuración17 Configuración18 Configuración19 Configuración20 Configuración21 Configuración22 Configuración23 Configuración24 Configuración25 Configuración26 Configuración27 Configuración28 Configuración29 Configuración30 Configuración31 Configuración32 Configuración33 Configuración34 Configuración35 Configuración36 Configuración37 Configuración38 Configuración39 Configuración40 Configuración41 Configuración42 Configuración43 Configuración44 Configuración45 Configuración46 Configuración47 Configuración48 Configuración49 Configuración50 Configuración51 Configuración52 Configuración53
Como muestra el primer ejemplo. movf PORTA,W ; Lee los sensores. andlw b'00000111' ; Máscara para quedarse con el valor de los sensores. addwf PCL,F ; Salta a la configuración adecuada. goto Configuracion0 goto Configuracion1 goto Configuracion2 goto Configuracion3 goto Configuracion4 goto Configuracion5 goto Configuracion6 goto Configuracion7 Configuracion0 movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida Configuracion1 movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida Configuracion2 movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida Configuracion3 movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida Configuracion4 movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida Configuracion5 movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida Configuracion6 movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida Configuracion7 movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal
END
No sólo desea activar salidas 1 y 0. También quiero añadirle más códigos. Configuracion0 movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida Configuracion1 movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida Configuracion2 movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida Configuracion3 movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida Configuracion4 movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida Configuracion5 movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida Configuracion6 movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida Configuracion7 movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal
Quiero insertarle más códigos como el ejemplo de abajo. Configuracion0 call LCD_LineaEnBlanco call LCD_Linea1 movlw Mensaje3_1 call LCD_Mensaje call LCD_Linea2 movlw Mensaje3_2 call LCD_Mensaje movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida Configuracion1 call LCD_LineaEnBlanco call LCD_Linea1 movlw Mensaje78_1 call LCD_Mensaje call LCD_Linea2 movlw Mensaje5_msn call LCD_Mensaje movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida Configuracion2 call LCD_LineaEnBlanco call LCD_Linea1 movlw Mensaje4_1 call LCD_Mensaje call LCD_LineaEnBlanco call LCD_Linea2 movlw Mensaje4_2 call LCD_Mensaje call LCD_LineaEnBlanco call LCD_Linea3 movlw Mensaje3_1 call LCD_Mensaje call LCD_LineaEnBlanco call LCD_Linea4 movlw Mensaje3_2 call LCD_Mensaje movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida Configuracion3 movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida Configuracion4 movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida Configuracion5 movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida Configuracion6 movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida Configuracion7 movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal
Lo azul es donde inyecté más códigos para ejecutar. Esta es la idea si usas sólo 8 Configuraciones, no es cuestión usar esa técnica si son 256 configuraciones, me da algo si lo hago, aunque estaba a punto de hacerlo, pero me entró depresión. Por eso quiero buscar la mejor forma de usar un buen decoder solo usando las entradas que reconozca e ignora las que no conozcas y que se pueda poner más códigos en las configuraciones, no sólo una línea de código. Saludo.
|
|
|
1764
|
Informática / Electrónica / Tablas indexado de 8 bits.
|
en: 28 Agosto 2010, 06:52 am
|
Hola: Como pueden ver el código de abajo. Se utiliza 3 bits de entrada para una tabla de la verdad. 8 Configuraciones en total. Está muy bien para hacer un decoder. Viendo que quiero hacer uno de 8 bits, 8 entradas para la tabla de la verdad, obtiene 256 Configuraciones. Tardaría años en configurarlas todas. No quiero usar TTL decoder a parte, sólo con PIC. ¿Existe una manera de hacer esta tabla sin tardar demasiado tiempo en hacer 256 configuraciones? El ejemplo de abajo son de 8 configuraciones y no me parece mucho, pero 256 es la eternidad. ; Controla el nivel de un depósito de líquido. Utiliza (entre paréntesis las líneas del ; microcontrolador a la que se han conectado): ; - Tres sondas detectoras: SV, Sonda de Vacío (RA0); SLL, Sonda de LLenado (RA1); ; SR, Sonda de Rebose (RA2). ; - Dos bombas de agua: B1 (RB5), B2 (RB6). ; - Cinco indicadores: Vacio (RB0), Llenandose (RB1), Lleno (RB2), Rebose (RB3), ; Alarma (RB4). ; ; Su funcionamiento: ; - Cuando ninguna de las sondas está mojada se entiende que el depósito está vacío y ; se accionarán las dos bombas. El indicador "Vacio" se iluminará . ; - Cuando el nivel del líquido toque la sonda de vacío "SV" seguirá llenándose el ; depósito con las dos bombas. El indicador "Llenandose" se ilumina. ; - Cuando el nivel del líquido toca la sonda de llenado "SLL", para la bomba B2, quedando ; B1 activada en modo mantenimiento. El indicador "Lleno" se ilumina. ; - Si el nivel del líquido moja la sonda de rebose "SR" se apaga también la bomba B1, ; quedando las dos bombas fuera de servicio. El indicador "Rebose" se enciende. ; - Cuando se produce un fallo o mal funcionamiento en las sondas de entrada (por ; ejemplo que se active la sonda de rebose y no active la de vacío) se paran ; las dos bombas. El indicador "Alarma" se ilumina. ; ; Según el enunciado del problema, teniendo en cuenta las conexiones citadas y poniendo la ; salida no utilizada (RB7) siempre a cero, la tabla de verdad resultante es: ; ; RA2.. RA0 | RB7 ... ... RB0 ; ------------|-------------------------------- ; 0 0 0 | 0 1 1 0 0 0 0 1 (Configuración 0. Estado "Vacio"). ; 0 0 1 | 0 1 1 0 0 0 1 0 (Configuración 1. Estado "Llenandose"). ; 0 1 0 | 0 0 0 1 0 0 0 0 (Configuración 2. Estado "Alarma"). ; 0 1 1 | 0 0 1 0 0 1 0 0 (Configuración 3. Estado "Lleno"). ; 1 0 0 | 0 0 0 1 0 0 0 0 (Configuración 4. Estado "Alarma"). ; 1 0 1 | 0 0 0 1 0 0 0 0 (Configuración 5. Estado "Alarma"). ; 1 1 0 | 0 0 0 1 0 0 0 0 (Configuración 6. Estado "Alarma"). ; 1 1 1 | 0 0 0 0 1 0 0 0 (Configuración 7. Estado "Rebose"). ; ; ZONA DE DATOS **********************************************************************
LIST P=16F84A INCLUDE <P16F84A.INC> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0. Inicio clrf PORTB ; Debe estar a cero cuando el puerto se configure como salida. bsf STATUS,RP0 ; Acceso al Banco 1. clrf TRISB ; Las líneas del Puerto B se configuran como salida. movlw b'00011111' ; Las 5 líneas del Puerto A se configuran como entrada. movwf TRISA bcf STATUS,RP0 ; Acceso al Banco 0. Principal movf PORTA,W ; Lee los sensores. andlw b'00000111' ; Máscara para quedarse con el valor de los sensores. addwf PCL,F ; Salta a la configuración adecuada. goto Configuracion0 goto Configuracion1 goto Configuracion2 goto Configuracion3 goto Configuracion4 goto Configuracion5 goto Configuracion6 goto Configuracion7 Configuracion0 movlw b'01100001' ; Estado "Vacio" (configuración 0). goto ActivaSalida Configuracion1 movlw b'01100010' ; Estado "Llenándose" (configuración 1). goto ActivaSalida Configuracion2 movlw b'00010000' ; Estado "Alarma" (configuración 2). goto ActivaSalida Configuracion3 movlw b'00100100' ; Estado "Lleno" (configuración 3). goto ActivaSalida Configuracion4 movlw b'00010000' ; Estado "Alarma" (configuración 4). goto ActivaSalida Configuracion5 movlw b'00010000' ; Estado "Alarma" (configuración 5). goto ActivaSalida Configuracion6 movlw b'00010000' ; Estado "Alarma" (configuración 6). goto ActivaSalida Configuracion7 movlw b'00001000' ; Estado "Rebose" (configuración 7). ActivaSalida movwf PORTB ; Visualiza por el puerto de salida. goto Principal
END
Un cordial saludo.
|
|
|
1765
|
Informática / Electrónica / Re: Mis pequeñas prácticas con microcontroladores
|
en: 27 Agosto 2010, 08:54 am
|
Los programadores de USB son caros, y eso que cada vez sacan algunos nuevos. Este es el más nuevo que han sacado.  Ingeniería de Microsistemas Programados presenta el nuevo grabador Universal USB-Pic'Burner. Consiste en un grabador de última generación y bajo coste que admite los dispositivos PIC mas representativos de 8, 18, 28 y 40 patillas, de las familias 12F, 16F, 18F, que se insertan sobre un zócalo ZIF de fuerza de inserción nula. Su interface con el PC (de sobremesa o portátil) se realiza a través de un puerto USB desde donde también se toma la alimentación. Se trata por tanto de un grabador de reducidas dimensiones, potente, económico y totalmente portátil que se controla directamente desde el conocido entorno de desarrollo MPLAB-IDE y/o desde el software de grabación PICKit-2. Ambas herramientas software son originales de Microchip y se pueden descargar sin costo alguno desde www.microchip.comSus características más relevantes son: * Reducidas dimensiones de 77x 62mm * Interface USB con el PC mediante cable USB tipo A a tipo B (incluido) * Alimentación desde el propio puerto USB del PC; consumo de 35mA en standby y 55mA en actividad * Compatible a nievel de hardware con el PICkit-2 de Microchip * Compatible a nivel de software con MPLAB-IDE y PICkit-2 de Microchip. * Se puede configurar para proceder automáticamente a la grabación cada vez que se realiza el ensamblado/compilado de un programa * Zócalo ZIF de inserción nula que admite dispositivos PICde 0.3" y 0.6" de 8, 18, 28 y 40 patillas de las familias PIC12, PIC16 y PIC18 * Selección mediante jumper del dispositivo de 8, 18, 28/40 patillas a grabar * Dispone de conexión ICSP compatible con PICKit-2 que transporta las señales de grabación * Esas señales ICSP es posible conectarlas a múltiples dispositivos PIC de otras familias y encapsulados soportados por MPLAB-IDE y PICkit-2 Ver el programdor y sus características en PDF.Fuente: http://www.msebilbao.com/tienda/product_info.php?products_id=582
|
|
|
1766
|
Informática / Electrónica / Hacer algo con la PS2 vieja.
|
en: 27 Agosto 2010, 08:47 am
|
Hola:  Tengo una PS2 FAT y quiero hacerle un poco de experimento con ella aunque sea inútil. Mi idea principal es usar un LCD 16x2 HD44780 de Hitachi que al introducir el juego sea capaz de detectar que juego he instertado. El DVD del juego tiene un ID que la PS2 sabe el título introducido, solo que no se como obtenerlo. En la EEPROM externa 24LC256 de un PIC16F88 por poner un ejemplo, tiene los ID obtenidos por cada juego que tengo original y sus títulos, es decir, que en la EEPROM están guardados los datos, el PIC16F88 o otro está conectado entre el lector y la placa de la PS2 de una manera que detecte los id del juego al introducir un DVD. También detecta cuando le falta un juego, cuando has introducido un juego, cuando expulsa un juego, cuando enciende o reinicia la consola, etc. Si pueden o los que sepan, pueden ponerme cualquier información sobre las PS2 y sus placas bases más lectores. Mi modelo de PS2 es el SCPH-39004. Pueden poner el que quieran. Sólo encuentro poner chip pero eso no me interesa. Para que se hagan una idea, la 360 se puede extraer datos del lector como la Key, pero no he probado si con ella se puede leer los id de los discos para hacer esta funcióny obtener los títulos del juego. Un cordial saludo.
|
|
|
|
|
|
|