|
611
|
Programación / .NET (C#, VB.NET, ASP) / ASCII a Hex
|
en: 5 Septiembre 2008, 06:31 am
|
Hola: Uso el Visual C# 2008 Express, quiero pasar de ASCII o String a Hexadecimal para enviarlo al puerto RS232 y el PIC 16F84A lo entienda.Quiero enviar en ASCII la letra t que en hexadecimal es 0x74 o si prefieren la T su hexadecimal es 0x54. t = 0x74 T = 0x54 ¿Cómo envío este carácter en hexadecimal? private void button1_Click(object sender, EventArgs e) { try { serialPort1.Write("0x74"); // No creo que así funcione, quizás sea sin las comillas. } catch (System.Exception ex) { MessageBox.Show(ex.ToString()); }
label1.Text = "A"; } ¿Cómo lo hago? Un cordial saludos.
|
|
|
612
|
Programación / .NET (C#, VB.NET, ASP) / Enviar datos al puerto db9
|
en: 4 Septiembre 2008, 23:14 pm
|
Hola: Estoy intentado enviar datos por el puerto serie con el Visual C# 2008 Express con la configuración puerto COM1. 6400-N-8-1. Quiero lograr que en cada botón, envíe un carácter al puerto serie db9 o RS232, por ejemplo: Abrir:Puerta A: Que envíe este caracter apa Puerta B: apb . . Puerta E: ape Lo mismo para cerrar puerta. Cerrar:Puerta A: cpa Puerta B: cpb . . Puerta E:cpe Espero que se entienda. Al menos quiero probar con el primer botón Puerta A para aprender como se hace. Un cordial saludos.
|
|
|
613
|
Programación / .NET (C#, VB.NET, ASP) / Ayuda- No me ejecuta nada en Visual c# 2008
|
en: 4 Septiembre 2008, 00:32 am
|
Hola: No se que pasa, pero cualquier poryecto que tengo guardado o al crear alguno al ejecutarlo me sale este error. Error 1 No se puede escribir en el archivo de resultados 'C:\Documents and Settings\Hunter\Mis documentos\Visual Studio Codename Orcas\Projects\X10\X10\obj\Debug\X10.exe' -- 'Could not execute CVTRES.EXE.' X10 Lo reinstalé de nuevo y el SP1 ya lo tenía instalado desde hace un tiempo. Reinicio y nada de nada. Este mensaje busqué en la ayuda y pone esto abajo que para mi ni significa nada. Mensaje de error No se puede escribir en el archivo de resultados 'archivo' — 'causa' Could not write to output file 'file' ù 'reason' El compilador no pudo escribir en un archivo de resultados. Compruebe la ruta de acceso al archivo para asegurarse de que existe. Si ya hay un archivo generado anteriormente en esa ubicación, asegúrese de que es modificable y de que ningún proceso tiene bloqueado el archivo actualmente. Por ejemplo, asegúrese de que su archivo ejecutable no está cargado en memoria cuando intente generarlo. Al ejecutarlo, me pregunta que si ejecuto lo anterior, le doy que si y me sale este mensaje: ¿Hay alguna solución? Un cordial saludos.
|
|
|
614
|
Informática / Electrónica / No me compila el MPLAB 8.14
|
en: 3 Septiembre 2008, 21:00 pm
|
Hola:
No se que pasa pero desde que empecé a compilar cualquier .asm me da el mismo error y nunca compila.
Desinstalé el MPLAB y lo volví a instalar, reinicio y sigue igual. ¿Qué le pasa ahora el MPLAB que cuanto más me hace es cuando más me da problemas?
[quote] Debug build of project `C:\PIC16F84\ejem_1_2.disposable_mcp' started. Preprocessor symbol `__DEBUG' is defined. Wed Sep 03 19:39:53 2008 ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Done. Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F84A "ejem_1_2.asm" /l"ejem_1_2.lst" /e"ejem_1_2.err" /d__DEBUG=1 Could not spawn language tool. Check command-line options. (5) A language-plugin exception occurred and was logged. ---------------------------------------------------------------------- Debug build of project `C:\PIC16F84\ejem_1_2.disposable_mcp' failed. Preprocessor symbol `__DEBUG' is defined. Wed Sep 03 19:39:53 2008 ---------------------------------------------------------------------- [color=red][b]BUILD FAILED[/b][/color][/quote]
El programa que estoy haciendo es este:
[code];Tres valores están almacenados en la memoria, A, B y C. Y en las ;direcciones 10, 11 y 12h. Resolver ecuación (A + B) - C. ;Velocidad d ereloj; 4MHz LIST p=16F84A ;Tipo de procesador. INCLUDE <P16F84A.INC> ;Definiciones de registros internos. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ;***************************************************************** DATO_A EQU 0x10 ;Define la posición del dato A DATO_B EQU 0x11 ;Define la posición del dato B DATO_C EQU 0x12 ;Define la posición del dato C RESULTADO EQU 0x13 ;Define la posición del dato RESULTADO ;***************************************************************** ORG 0x00 ;Vector de reset goto INICIO ORG 0x05 ;Salva el vector de interrupción INICIO: movlw .1 movwf DATO_A movlw .9 movwf DATO_B movlw 0Ah movwf DATO_C ; movf DATO_A,W ;Carga el 1er sumando addwf DATO_B,W ;Suma 2º operando movwf RESULTADO ;Almacena resultado parcial movf DATO_C,W ;Carga el sustraendo subwf RESULTADO,F ;Resta el minuendo y almacena STOP goto $ END ;Fin del programa Saludos.[/code]
|
|
|
617
|
Informática / Electrónica / Mejorar el Mod8 para PS2
|
en: 13 Julio 2008, 02:46 am
|
Hola. Me gustaría contactar con el que documentó este ASM del PIC12C508 si tiene un diagrama de flujo para entenderlo mejor. Ya que utiliza retardos y para verlo en el MPLAB es un tostón. Su e-mail abajo no funciona. ;+-------------------------------------------------------------------------+ ;¦ MYC.ASM ¦ DESENSAMBLADO DE 8MODCHIP.HEX PARA PSX2 POR MANOLO Y COMPAÑIA ¦ ;+-------------------------------------------------------------------------+
; NOTA: ;* Para visualizar este fichero correctamente, usa el edit del dos ; o el bloc de notas del windows con el tipo de fuente 'terminal' ;* El objeto de realizar el desensamblado y comentado del código fuente, ; del 8modchip.hex es con el fin de que todos conozcamos como funciona ; y podamos perfeccionarlo y modificarlo entre todos a nuestro antojo. ;* Espero que al publicarlo en el foro, las mentes pensantes colaboren. ;* Desconozco quien es el autor del hex original pero le felicito por su ; programa. ;* Según aparezcan nuevas versiones del modchip se irán desensamblando ; y publicando. ;* Por favor poner vuestras experiencias en el foro para que lo vea todo ; el mundo. ;* los tiempos de las rutinas son muy críticos. ;* El codigo está más ordenado que en el 8modchip.hex pero es el mismo ; únicamete se han suprimido los caracteres de la tabla que no se usan ; para la versión europea. ;* Sugerencias de assembler o hard: jiglesias@arrakis.es ;--------------------------------------------------------------------------
; +----------------------------------+ ; ¦ ESQUEMA DE CONEXIONES PIC12C509A ¦ ; +----------------------------------+ ; ; +------+ +------+ ; ¦ +--+ ¦ ; +5V ¦¦1 PIC12C509A 8¦¦ MASA ; ¦ ¦ ; SWAPX ¦¦2 GPIO5 GPIO0 7¦¦ DVDIN=0 ; ¦ ¦ ; DVDOUT=1 ¦¦3 GPIO4 GPIO1 6¦¦ TXSCEE ; ¦ ¦ ; /RESET=0 ¦¦4 GPIO3 GPIO2 5¦¦ SWAPY ; ¦ ¦ ; +----------------+ ; ; 1 - +5VCC - SIN COMENTARIOS ; 2 - SWAPX - SOLO LO USA LA OPCION 3 PARA LA APERTURA Y CIERRE DEL DVD ; 3 - DVDOUT - ES IGUAL A 1 CUANDO LA BANDEJA DEL DVD ESTA SALIENDO ; 4 - /RESET - ES IGUAL A 0 CUANDO PULSAMOS EL RESET DE LA PS2 ; 5 - SWAPY - SOLO LO USA LA OPCION 3 PARA LA APERTURA Y CIERRE DEL DVD ; 6 - TXSCEE - ES POR DONDE TRANSMITE VIA SERIE "SCEE" ; 7 - DVDIN - ES IGUAL A 0 CUANDO LA BANDEJA DEL DVD ESTA ENTRANDO ; 8 - MASA - SIN COMENTARIOS ;--------------------------------------------------------------------------
;+---------------------------------+ ;¦ PROCESADOR A EMPLEAR PIC12C509A ¦ ;+---------------------------------+ P509A EQU 1 ;0=PIC12C508A 1=PIC12C509A IF P509A list p=12c509A include "p12c509A.inc" ELSE list p=12c508A include "p12c508A.inc" ENDIF
;+-----------------------------------+ ;¦ FUSIBLES, WASDOG, OSCILADOR ETC.. ¦ ;+-----------------------------------+ __FUSES _MCLRE_OFF & _CP_OFF & _WDT_OFF & _IntRC_OSC
;+------------------+ ;¦ NOTACION DECIMAL ¦ ;+------------------+ radix dec ;--------------------------------------------------------------------------
;+--------------------------+ ;¦ VARIABLES DE RAM INTERNA ¦ ;+--------------------------+ cblock 0x0B RAM_0B ;CONTADOR PAUSA RAM_0C ;CONTADOR CARGA DEL DVD RAM_0D ;CONTADOR PAUSA RAM_0E ;CANTIDAD DE BYTES A ENVIAR DE LA TABLA RAM_0F ;CANTIDAD DE BITS A ENVIAR DEL BYTE RAM_10 ;NO UTILIZADA RAM_11 ;CONTADOR W EN PAUSA Wx199 RAM_12 ;CONTADOR 199 EN PAUSA Wx199 RAM_13 ;BYTE LEIDO DE LA TABLA RAM_14 ;PUNTERO DEL BYTE DE LA TABLA RAM_15 ;MASCARA ESTADO DE LOS BIT DEL PUERTO endc ;--------------------------------------------------------------------------
;+-----------------+ ;¦ VECTOR DE RESET ¦ ;+-----------------+ org 0x00 movwf OSCCAL ;CALIBRA EL OSCILADOR INTERNO goto COMIENZO ;SALTA LA COMIENZO DEL PROGRAMA ;--------------------------------------------------------------------------
;+--------------------------------------+ ;¦ VERSION DEL PROGRAMA (CODIGO INUTIL) ¦ ;+--------------------------------------+ retlw 'M' retlw 'A' retlw 'N' retlw 'O' retlw 'L' retlw 'O' retlw ' ' retlw 'Y' retlw ' ' retlw 'C' retlw 'O' retlw 'M' retlw 'P' retlw 'A' retlw 'Ñ' retlw 'I' retlw 'A' ;--------------------------------------------------------------------------
;+-----------------------+ ;¦ COMIENZO DEL PROGRAMA ¦ ;+-----------------------+ COMIENZO movlw b'11000010' ;CONFIGURA TMR0 PRESCALER = 1:8 option ;OSCILADOR = 4MHZ
movlw 255 ;INICIALIZA TODOS LOS PUERTOS movwf RAM_15 ;EN ALTO Y RAM_15 tris GPIO ; ;--------------------------------------------------------------------------
;+----------------------------------------+ ;¦ PAUSA DE ENCENDIDO DE 414 MILISEGUNDOS ¦ ;+----------------------------------------+ movlw 2 ;100 MILISEGUNDOS movwf RAM_0D ; ETI_107 call PAUSA50MSG ; + decfsz RAM_0D,F ; goto ETI_107 ; movlw 6 ;300 MILISEGUNDOS movwf RAM_0D ; ETI_10C call PAUSA50MSG ; + decfsz RAM_0D,F ; goto ETI_10C ; movlw 14 ;14 MILISEGUNDOS call PAUSAWX1MSG ; ;--------------------------------------------------------------------------
;+------------------------------------------------------------------+ ;¦ LECTURA DE LAS 3 OPCIONES CON EL PULSADOR DE RESET DE LA CONSOLA ¦ ;+------------------------------------------------------------------+ ;OPCION1 EL RESET NO HA SIDO PULSADO ;----------------------------------- btfsc GPIO,3 ;SI EL RESET NO ESTA PULSADO goto OPCION1 ;SALTA A OPCION1
;OPCION2 EL RESET HA SIDO PULSADO Y SE HA SOLTADO ANTES DE 7,5 SEGUNDOS ;---------------------------------------------------------------------- movlw 150 ; movwf RAM_0D ; ETI_115 btfsc GPIO,3 ; goto OPCION2 ;SALTA A OPCION2 AL LEVANTAR EL RESET call PAUSA50MSG ; decfsz RAM_0D,F ; goto ETI_115 ;
;OPCION3 EL RESET HA SIDO PULSADO Y NO SE HA SOLTADO ANTES DE 7,5 SEGUNDOS ;------------------------------------------------------------------------- goto OPCION3 ;SI CONTINUA PULSADO SALTA A OPCION3 ;--------------------------------------------------------------------------
;+---------------------------------------------------+ ;¦ OPCION 1 (RESET NO PULSADO) EL MODCHIP SE ¦ ;¦ DESHABILITA Y SOLO PODEMOS USAR JUEGOS ORIGINALES ¦ ;+---------------------------------------------------+ OPCION1 movlw b'00111111' ;INICIALIZA TODOS LOS tris GPIO ;PUERTOS EN ALTO Y sleep ;DESHABILITA EL MODCHIP ;--------------------------------------------------------------------------
;+------------------------------------------------------------------------+ ;¦ OPCION 2 (RESET PULSADO DESPUES DE 1 SEG. Y SOLTADO ANTES DE 7,5 SEG.) ¦ ;¦ JUEGOS (PSX1 DIRECTOS) Y (PSX2 SIN PROTECCION ANTIMODCHIP CON AR1.3) ¦ ;+------------------------------------------------------------------------+ OPCION2 bcf GPIO,1 ;INICIALIZA PUERTO TXSERIE EN ALTO bcf RAM_15,1 ; movf RAM_15,W ; tris GPIO ;
call PAUSA50MSG ;PAUSA CADA 100 TRANSMISIONES
movlw 100 ;100 VECES movwf RAM_0C ;REPETIRA LA TRANSMISION ETI_122 btfsc GPIO,0 ;SI EN ESTOS MOMENTOS LA BANDEJA DEL goto ETI_04C ;DVD YA ESTA DENTRO TRANSMITE SCEE
clrf RAM_14 ;INICIALIZA PUNTERO A TABLA Y call ENVIASCEE ;TRANSMITE VIA SERIE 100 VECES 'SCEE' call SUB_04C ;LUEGO ESPERARA A QUE METAMOS OTRO JUEGO goto ETI_122 ;ANTES DE VOLVER A TRANSMITIR 100 VECES SUB_04C ETI_04C btfsc GPIO,0 ;SI EN ESTOS MOMENTOS LA BANDEJA DEL goto ETI_050 ;DVD AUN NO ESTA DENTRO SALE decfsz RAM_0C,F ;SI YA ESTA DENTRO RETORNA HASTA retlw 3 ;TRANSMITIR LAS 100 VECES 'SCEE'
ETI_050 movlw b'00111111' ;INICIALIZA TODOS PUERTOS tris GPIO ;COMO ENTRADAS ETI_052 btfss GPIO,4 ;ESPERA A QUE PULSEMOS LA APERTURA goto ETI_052 ;DE LA BANDEJA DEL DVD
movlw 250 ;ESPERAMOS UN TIEMPO A LA CONSOLA PARA call PAUSAWX1MSG ;QUE TERMINE DE ABRIR LA BANDEJA DEL DVD
btfss GPIO,4 ;SI LA BANDEJA DEL DVD TODAVIA NO ESTA goto ETI_052 ;ABRIENDOSE REPITE LA OPERACION
ETI_058 btfsc GPIO,4 ;SI LA BANDEJA DEL DVD ESTA ABRIENDOSE goto ETI_058 ;SE ASEGURA A QUE SE ABRA DEL TODO
movlw 24 ;PAUSA DE 6 SEGUNDOS PARA QUE movwf RAM_0B ;PONGAMOS EL JUEGO EN LA BANDEJA Y ETI_05C movlw 250 ;PULSEMOS EL BOTON PARA INTRIDUCIRLO call PAUSAWX1MSG ;EN LA CONSOLA decfsz RAM_0B,F ; goto ETI_05C ;
btfsc GPIO,0 ;SI LA BANDEJA DEL DVD ESTA TODAVIA FUERA goto ETI_052 ;REPITE LA OPERACION
goto OPCION2 ;CUANDO EL DVD YA ESTA DENTRO SALTA OPCION2 ;Y COMIENZAN LAS TRANSMISIONES DE 'SCEE' ;--------------------------------------------------------------------------
;+--------------------------------------------------------------------------+ ;¦ OPCION 3 (RESET PULSADO DESPUES DE 1 SEG. Y SOLTADO DESPUES DE 7,5 SEG.) ¦ ;¦ JUEGOS PSX2 CON PROTECCION ANTIMODCHIP CON AR1.3 ¦ ;+--------------------------------------------------------------------------+ OPCION3 btfss GPIO,3 ;ESPERA A QUE SOLTEMOS EL goto OPCION3 ;BOTON DE RESET
movlw 255 ;INICIALIZA RAM_15 Y TODOS movwf RAM_15 ;LOS PUERTOS tris GPIO ;EN ALTO
movlw 80 ;EL MODCHIP FUERZA A LA CONSOLA movwf RAM_0B ;PARA QUE EXPULSE LA BANDEJA DEL DVD ETI_132 movlw b'00100100' ; " movwf GPIO ; " movlw b'11011011' ; " tris GPIO ; " movlw 10 ; " call PAUSAWX1MSG ; " movlw b'00100000' ; " movwf GPIO ; " movlw b'00011011' ; " tris GPIO ; " movlw 10 ; " call PAUSAWX1MSG ; " decfsz RAM_0B,F ; " goto ETI_132 ; " movlw b'00111111' ; " tris GPIO ; "
movlw 16 ;PAUSA PARA QUE LA BANDEJA DEL DVD movwf RAM_0B ;ESTE 4 SEGUNDOS ABIERTA Y NOS DE ETI_144 movlw 250 ;TIEMPO A PONER EL JUEGO EN ELLA call PAUSAWX1MSG ; " decfsz RAM_0B,F ; " goto ETI_144 ; "
movlw 80 ;EL MODCHIP FUERZA A LA CONSOLA movwf RAM_0B ;PARA QUE INTRODUZCA LA BANDEJA DEL DVD ETI_14A movlw b'00010100' ; " movwf GPIO ; " movlw b'11101011' ; " tris GPIO ; " movlw 10 ; " call PAUSAWX1MSG ; " movlw b'00010000' ; " movwf GPIO ; " movlw b'11101011' ; " tris GPIO ; " movlw 10 ; " call PAUSAWX1MSG ; " decfsz RAM_0B,F ; " goto ETI_14A ; " movlw b'00111111' ; " tris GPIO ; "
goto OPCION1 ;DESHABILITA AL MODCHIP Y YA PODEMOS ;EJECUTAR EL JUEGO CON EL MENU DEL AR1.3 ;--------------------------------------------------------------------------
;+---------------------------------------------------------------------+ ;¦ TRANSMITE VIA SERIE 'SCEE' CON 8 BIT DE DATOS Y 2 DE STOP A 250 BPS ¦ ;+---------------------------------------------------------------------+ ENVIASCEE movwf RAM_0D ;SALVA W EN RAM_0D (INUTIL PUES NO LO USA)
movlw 72 ;72 MILISEGUNDOS DE ESPACIO ENTRE BYTES call PAUSAWX1MSG ;
movlw 4 ;ENVIAREMOS 4 BYTES movwf RAM_0E ;DE LA TABLA ETI_068 movf RAM_14,W ;LEEMOS 1 BYTE DE call TABLA ;LA TABLA movwf RAM_13 ;EN RAM_13 comf RAM_13,F ;
movlw 8 ;ENVIAREMOS 8 movwf RAM_0F ;BITS DE CADA BYTE
bsf RAM_15,1 ;ENVIA EL BIT DE START VIA SERIE movf RAM_15,W ; tris GPIO ;
movlw 4 ;4 MILISEGUNDOS DEL ANCHO DEL BIT DE START call PAUSAWX1MSG ;
ETI_073 rrf RAM_13,F ;ENVIA 1 BIT DEL BYTE VIA SERIE movlw b'11111000' ; movwf GPIO ; btfsc STATUS,0 ; bsf RAM_15,1 ; btfss STATUS,0 ; bcf RAM_15,1 ; movf RAM_15,W ; tris GPIO ;
movlw 4 ;4 MILISEGUNDOS DEL ANCHO DEL BIT call PAUSAWX1MSG ;
decfsz RAM_0F,F ;CONTINUAMOS HASTA goto ETI_073 ;ENVIAR LOS 8 BITS DEL BYTE
bcf RAM_15,1 ;ENVIA 2 BITS DE STOP movf RAM_15,W ; tris GPIO ;
movlw 8 ;8 MILISEGUNDOS DEL ANCHO DE call PAUSAWX1MSG ;LOS 2 BITS DE STOP
incf RAM_14,F ;INCREMENTA PUNTERO DE LA TABLA
decfsz RAM_0E,F ;CONTINUA HASTA goto ETI_068 ;ENVIAR LOS 4 BYTES DE LA TABLA retlw 3 ;RETORNA CON W=03H TABLA addwf PCL,F ;TABLA PARA LA PS2 EUROPEA retlw 'S' retlw 'C' retlw 'E' retlw 'E' ;--------------------------------------------------------------------------
;+--------------------------+ ;¦ PAUSA DE 50 MILISEGUNDOS ¦ ;+--------------------------+ PAUSA50MSG movlw 50 ;+------------------------------+ ;¦ PAUSA DE (W x 1 MILISEGUNDO) ¦ ;+------------------------------+ PAUSAWX1MSG movwf RAM_11 ETI_042 movlw 199 movwf RAM_12 ETI_044 nop clrwdt decfsz RAM_12,F goto ETI_044 nop decfsz RAM_11,F goto ETI_042 retlw 3 ;--------------------------------------------------------------------------
end
Saludos.
|
|
|
620
|
Informática / Electrónica / Interruptor de Luz
|
en: 30 Marzo 2008, 23:25 pm
|
Hola: Estoy diseñando un pequeño proyecto sobre sensor de luz y de movimiento. Para lo que lo voy a usar me parece mucho usar el famoso 16F84A. Tengo pensado en usar el 12F509, ya que sólo en el proyecto voy a usar una LDR para un pin de entrada al PIC y otro sensor de movimiento o proximidad que también usa otro pin de entrada, en cambio a su salida, sólo una un pin para un relé. Lo bueno del 12F509 es que usa un oscilador interno con lo que me ahorra componentes externos y su tamaño del PIC es de 8 pines. Mi preocupación es, que mirando bien la hoja de datos o datasheet como que solo tiene un puerto. Con esto quiero decir que no se si se puede configurar como dos pines de entrada y una de salida del mismo puerto. Sensor PIC que voy a usar: http://ww1.microchip.com/downloads/en/DeviceDoc/41236D.pdf¿Qué opinan?
|
|
|
|
|
|
|