|
351
|
Informática / Electrónica / No furula es código en rojo de un PIC. Quiero sabe el motivo.
|
en: 27 Abril 2013, 17:25 pm
|
Hola: Se me atasca el PIC tanto en el simulador Proteus y físicamente, no graba en la su EEPROM interna del PIC16F88. Lo que hace el PIC del programa principal es, con un pulsador en RA0 enciende y apaga un LEd en la salida RB0. Hasta ahí todo bien. Solo que no es capaz de grabar nada en la EEPROM, cuando está encendido el Led o apagado, la EEPROM la función que hace es esa, mantener lo últimos valores del Led. Siempre se me atasca por aquí. ;Guarda en la EEPROM el valor de la salida. Escribe_Dato_EERPOM BANKSEL EEADR movlw 0x00 ; Dirección. movwf EEADR ; Carga registro EEADR con la dirección a escribir. movf Dato,W movwf EEDATA ; Carga el registro EEDATA con el dato a escribir. BANKSEL EECON1 bcf EECON1,EEPGD ; Selecciona acceso a memoria EEPROM de datos. bsf EECON1,WREN ; Permiso de escritura. movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 ; Secuencia de escritura según Mirochip. bsf EECON1,WR ; Inicio del ciclo de escritura. [COLOR="red"] Espera btfsc EECON1,WR goto Espera ; Esperar que finalice (WR=0).[/COLOR] bcf EECON1,WREN ; Retira el permiso de escritura. return ; Cada vez que presiona el pulsador conectado a la línea RA0 conmutará el estado de ; un LED conectado a la línea RB0. ; ; ZONA DE DATOS **********************************************************************
LIST P=16F88 INCLUDE <P16F88.INC> __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _FOSC_EC __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF ERRORLEVEL -302 CBLOCK 0x20 RAM_ret RAM_ret_1 ENDC
CBLOCK 0x110 Dato ENDC
#DEFINE Pulsador PORTA,0 ; Pulsador conectado a RA0. #DEFINE Led PORTB,0 ; Línea donde se conecta el diodo LED.
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 Inicio clrw clrf PORTB ; Borra los latch de salida. BANKSEL ANSEL clrf ANSEL ; Puerto A digital. BANKSEL TRISA movlw b'11111111' bsf Pulsador ; Pulsador activado como entrada. clrf TRISB bcf Led ; Activar como salida Led. call Lee_Dato_EERPOM_2 BANKSEL PORTA ; Vuelve al banco 0. Principal btfsc Pulsador ; ¿Pulsador presionado?, ¿(Pulsador)=0? goto Fin ; No. Vuelve a leerlo. ; call Retardo_20ms ; Espera que se estabilicen los niveles de tensión. btfsc Pulsador ; Comprueba si es un rebote. goto Fin ; Era un rebote y sale fuera. btfsc Led ; Testea el último estado del LED. goto EstabaEncendido EstabaApagado bsf Led ; Estaba apagado y lo enciende. ;movlw b'00000001' BANKSEL Dato movf Led movwf Dato call Escribe_Dato_EERPOM_2 BANKSEL PORTA ; Banco 0. goto EsperaDejePulsar EstabaEncendido bcf Led ; Estaba encendido y lo apaga. ;movlw b'00000000' movf Led movwf Dato call Escribe_Dato_EERPOM_2 BANKSEL PORTA ; Banco 0. EsperaDejePulsar btfss Pulsador ; ¿Dejó de pulsar?. ¿(Pulsador)=1? goto EsperaDejePulsar ; No. Espera que deje de pulsar. Fin goto Principal
;Subrutina EEPROM ****************************************************************** Lee_Dato_EEPROM BANKSEL EEADR movlw 0x00 ; Dirección. movwf EEADR ; Carga el registro EEADR con la dirección que se desea leer. BANKSEL EECON1 bcf EECON1,EEPGD ; Selecciona el acceso a memoria EEPROM. bsf EECON1,RD ; Inicia el ciclo de lectura. BANKSEL EEDATA movf EEDATA,W ; Carga en W el dato recuén leído. return
;Guarda en la EEPROM el valor de la salida. Escribe_Dato_EERPOM BANKSEL EEADR movlw 0x00 ; Dirección. movwf EEADR ; Carga registro EEADR con la dirección a escribir. movf Dato,W movwf EEDATA ; Carga el registro EEDATA con el dato a escribir. BANKSEL EECON1 bcf EECON1,EEPGD ; Selecciona acceso a memoria EEPROM de datos. bsf EECON1,WREN ; Permiso de escritura. movlw 0x55 movwf EECON2 movlw 0xAA movwf EECON2 ; Secuencia de escritura según Mirochip. bsf EECON1,WR ; Inicio del ciclo de escritura. Espera btfsc EECON1,WR goto Espera ; Esperar que finalice (WR=0). bcf EECON1,WREN ; Retira el permiso de escritura. return
END
¿Alguna idea? Saludo.
|
|
|
352
|
Informática / Electrónica / Intenar averiguar el el fallo de la GC
|
en: 20 Marzo 2013, 14:33 pm
|
Hola: Me dio por probar la GameCube para jugar al Resident Evil Remake, motivo de su compra. Hace muchos años, antes de que saliera la PS3, mucho antes, no he tocado la GC. Me limitaba a jugar juegos de PS2 y PS3. Ahora me encuentro que la GC enciende, puedo leer la Memory Card y ya está. En cuestión de leer juego nada de nada. Nunca muesta el laser rojo, ni un poco. Lo tengo ahora mismo desarmado, le he puesto grasa a los engranajes para que vaya con soltura y nada. No tiene ningún tipo de mod o chip, tal como vino al mundo. ¿Hay alguna solución para salvarlo? ¿Comprar otro lector? Para eso me compra una Wii (que nunca lo he podido ver ni en pintura), pero sus juegos con compatibles. Un cordial saludo. PD: Lo que no me gusta de las consolas con fomato disco, que los lectores no duran como los cartuchos de antes. A parte de ello, no puedes cambiar de lector con PS3. ;(
|
|
|
353
|
Programación / Programación General / Mejores revistas de programación
|
en: 17 Marzo 2013, 12:30 pm
|
Hola: Quiero saber, dentro de España, revistas favoritas sobre el mundo de programación que leen y practican con ellas algunos códigos. He estado en elmundo de la electrónica, PC, Linux y videojuegos, ahora toca programación, se pueden intercalar. En este caso, si lees alguna revista muy de solo programación, cuál te gusta y cual das consejos sobre ella. Quiero saber cuantas marcas hay en el mercado ahora mismo. Me picó la curiosidad porque encontré en el baúl de los recuerdo una que se llama Divmanía Año1, número 1. Muy pero que muy entretenido para la época ya más de 10 años por lo menos. El que me llama la atención es relacionado con Visual Studio y Bases de datos, solo se centran en ello, las demás de todo un poco. No la he comprado pero las pongo y nos de consejos o sugerencias de que les parece. http://www.dotnetmania.com/revistaMe da la sensación que las revistan antiguas, son muy entretenidas. Un saludo.
|
|
|
354
|
Informática / Electrónica / Manejar EEPROM interna
|
en: 7 Marzo 2013, 15:51 pm
|
Hola: Uso el PIC12F629 puedo leer un valor en la EEPROM interna pero no soy capaz de almacenarlo en la misma dirección. Este es el código. ;No olvidar que si GP2 detecta un un 0 en la entreda menor de 5 segundos, ;el PIC no actua, vuelve a lo suyo como si no pasara nada. ; ; Cuando detecte ;GP2|GP0 GP1 GP4 GP5 ;---+---------------- ;1) | 0 1 0 0 ;2) | 1 0 1 0 ;3) | 0 1 1 0 ;4) | 1 0 0 1 ; ;ZONA DE DATOS*****************************************************************
LIST P=12F629 ; Procesador usado. INCLUDE <P12F629.INC> ; Fichero que definen las etiquetas.
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _FOSC_INTRCIO ERRORLEVEL -302
#DEFINE Pulsador GPIO,2 ; Pulsador. #DEFINE Leds GPIO ; Leds está conectado al GPIO.
VARIABLES UDATA_SHR ContadorEstado RES 1 RAM_ret RES 1 RAM_ret_1 RES 1 Contador RES 1
;ContadorEstado equ 20h ;RAM_ret equ 21h ;RAM_ret_1 equ 22h ;Contador equ 23h
; ORG 0x2100 ; Corresponde a la dirección 0 de la zona EEPROM de datos. ; DE 0x00 ; El contador en principio a cero.
;ZONA DE CÓDIGOS*************************************************************** ORG 0 ; El programa comienza en la dirección 0. goto Inicio
Inicio bsf STATUS,RP0 ; Selecciona banco 1. call 0x3FF ; Lo el valor de la calibración que sera almacenada en W. movwf OSCCAL ; Paso el valor de W a OSCCAL para calibrar el oscilador. movlw b'00000100' movwf TRISIO movlw b'00001111' movwf OPTION_REG ; Activa Pull Up. movlw b'0000100' movwf WPU ; Activada Pull Up del GP0. bcf STATUS,RP0 ; Selecciona banco 0. movlw b'00000111' ; Desactivar comparadores. movwf CMCON movlw .3 movwf Contador clrf GPIO ;***************************************************************************
Principal btfsc Pulsador ; ¿Pulsador presionado?, ¿(Pulsador)=0? goto Principal ; No. Vuelve a leerlo. ; call Retardo_20ms ; Espera que se estabilicen los niveles de tensión. btfsc Pulsador ; Comprueba si es un rebote. goto Principal ; Era un rebote y sale fuera. call IncrementaVisualiza ; Incrementa el contador y lo visualiza. EsperaDejePulsar btfss Pulsador ; ¿Dejó de pulsar?. ¿(Pulsador)=1? goto EsperaDejePulsar ; No. Espera que deje de pulsar. Fin goto Principal
;*************************************************************************** ; Subrutina "IncrementaVisualiza" ---------------------------------------------------------
IncrementaVisualiza call Lee_Dato_EEPROM incf Contador,F ; Incrementa el contador y comprueba si ha call Escribe_Dato_EERPOM movlw d'4' ; llegado a su valor máximo mediante una subwf Contador,W ; resta. (W)=(Contador)-4. btfsc STATUS,C ; ¿C=0?, ¿(W) negativo?, ¿(Contador)<4? InicializaContador clrf Contador ; No, era igual o mayor. Por tanto, resetea. Visualiza movf Contador,W call Tabla ; Lo pasa a siete segmento para poder ser movwf GPIO ; visualizado en el display. return
Tabla addwf PCL,F ; Sumo W al contador de programa. ; retlw b'00000010' ;1 retlw b'00010001' ;2 retlw b'00010010' ;3 ; Retorno con el valor correspondiente. retlw b'00100001' ;4 ;Subrutina EEPROM ******************************************************************
Lee_Dato_EEPROM bsf STATUS,RP0 ; Banco 1 movlw 0x00 ; Primera posición de la tabla movwf EEADR ; Apunta ahí ; movf Contador,W ; Coge el contador ; addwf EEADR ; Suma el contador para apuntar al dato que nos interesa bsf EECON1,RD ; Lee el valor de la tabla movf EEDATA,W ; Pasa el valor a W para trabajar con él. bcf STATUS,RP0 return
;Guarda en la EEPROM el valor del contador Escribe_Dato_EERPOM bsf STATUS,RP0 ; Banco 1. movlw 0x00 ; Elijo esta dirección de la EEPROM y movwf EEADR ; lo cargo en EEADR con el dato a escribir. movlw Contador movwf EEDAT ; Cargo el registro EEDAT con el dato a escribir. bsf EECON1,WREN ; Habilitar bcf INTCON,GIE ; Deshabilitar intercepciones. movlw 0x55 ; Desbloquear escritura. movwf EECON2 movlw 0xAA movwf EECON2 bsf EECON1,WR ; Inicie la escritura. bsf INTCON,GIE ; Habilitar INTS. bcf STATUS,RP0 return ;Subrutina Retardo_20ms ************************************************************ ; Retardo = 0.02 segundos. ; Frecuencia Reloj = 4 MHz. ; Retardo actual = 0.02 segundos = 20000 ciclos.
Retardo_20ms ;19993 ciclos. movlw 0x9E movwf RAM_ret movlw 0x10 movwf RAM_ret_1 Retardo_20ms_0 decfsz RAM_ret, f goto $+2 decfsz RAM_ret_1, f goto Retardo_20ms_0 ;3 ciclos. goto $+1 nop ;4 ciclos (incluyendo call). return
END Salu2.
|
|
|
356
|
Programación / .NET (C#, VB.NET, ASP) / No me funciona ejemplo de sobrecarga
|
en: 24 Octubre 2012, 03:10 am
|
Hola: Quiero hacer un mini ejemplo sobre Overloads y no me fucniona. Module Module1 Sub Main() Dim Ejemplo1 As String = "AAAA" Dim Ejemplo2 As Integer = 123445 testSub() testSub(Ejemplo1) testSub(Ejemplo2) testSub(Ejemplo1, Ejemplo2) End Sub Overloads Sub testSub() Debug. WriteLine("No pasa nada.") End Sub Overloads Sub testSub(ByVal i As String) End Sub Overloads Sub testSub(ByVal i As Integer) Debug. WriteLine(i. ToString) End Sub Overloads Sub testSub(ByVal i As String, ByVal j As Integer) Debug. WriteLine(i & " -- " & j. ToString) End Sub End Module
Error 2 Uso no apropiado de la palabra clave 'Overloads' en un módulo. C:\Users\Usuario\documents\visual studio 2010\Projects\Ejemplito\Ejemplito\Module1.vb 18 5 Ejemplito A pesar de leer por aquí sobre Overloads, no me guío. Salu2.
|
|
|
357
|
Foros Generales / Foro Libre / ¿Para qué estos cortos de películas hackers?
|
en: 23 Octubre 2012, 15:19 pm
|
Hola: Viendo los capítulos del Cybergeddon, me ha gustado bastante para ser peli de hackers, más bien episodios, me he fijado hasta los códigos de lso programas que muestran, aunque a día de hoy, si sabes programación, esos sistemas operativos no se usan, más bien ningún mortal los conoces. Los códigos sin saber que lenguaje usan, he puesto pausa y e visto que tienen hasta IF, For, While... En cuanto a la acción e investigación de los policías está muy bien hecha y en castellano. La pregunta del millón. ¿Tienen intención de hacer una buena película hackers con fundamento?Ver capítulos.Un cordial saludo. PD: Disculpen si este tema no va aquí.
|
|
|
360
|
Informática / Hardware / Usar dos memorias RAM de diferentes marcas.
|
en: 5 Septiembre 2012, 14:53 pm
|
Hola: He comprado una palca base ASRock G41C-CS. Luego me dio por cambiar de DDR2 a DDR3, no pueden estar las dos juntas. La marca de la RAM es ADATA, 4GB a 1333Mhz por 22€. Ahora vi otro módulo por 19€ KingSton 4GB a 1333 MHz, las características parece la misma. ¿Hay algún problema en usar la marca ADATA y KINGSTOM en la misma placa base?Bajo mi punto de vista me da que no, por si acaso pregunto si alguien se ha llevado el chasco y da problemas de algún tipo aunque sea pequeño y poco molesto. Un cordial saludo.
|
|
|
|
|
|
|