• Miércoles 6 de Noviembre de 2024, 00:36

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Orizabeño

Páginas: [1]
1
Programación en C / Re: C ó Asm?
« en: Sábado 10 de Junio de 2006, 06:20 »
OTRA COSAA..

LA COMPATIBILIDAD DEL CODIGO EN C HACEN DE C ALGO INTERESANTE, EMIGRAR DE UN MICRO A OTRO ES MUY FACIL Y NO REQUIEREN MUCHOS CAMBIOS, EN ENSAMBLADOR SI QUISIERAMOS EMIGRAR EL CODIGO TMB NO ES COMPLICADO PERO NOS HACE OJEAR EL DATASHEET UN PAR DE VECES PARA SABER COMO ESTA MAPEADA LA RAM PARA REDIRECCIONAR ALGUNOS REGISTROS. EN C A VECES NI ES NECESARIO VER EL DATASHEET EN MUCHOS DE LOS CODIGOS.

UN DUDA DICEN QUE EN C LOS RETARDO NO SON TAN EXACTOS COMO LO SON EN ENSAMBLADOR?? A MI NO ME CONSTA REALMENTE NO SE SI ASI LO SEA OJALA ALGUIEN PUDIERA RESOLVERME ESTA DUDA, SERIA UN PUNTO A FAVOR DEL ENSAMBLADOR.....

NO ATACO EL ENSAMBLADOR AL CONTRARIO ME GUSTA PROGRAMAR EN ENSAMBLADOR, CREO QUE TIENES UN MAYOR CONTROL DE TODO EN ENSAMBLADOR ENTIENDES COMO TRABAJAN LOS PICS POR QUE TODO QUEDA EN EVIDENCIA Y ENTENDER LA ARQUITECTURA DE LOS PICS ES MUCHO MAS SENCILLO SI SE PROGRAMA DESDE ASSEMBLER......

SALUDOS

2
Programación en C / Re: C ó Asm?
« en: Sábado 10 de Junio de 2006, 06:10 »
MI PUNTO DE VISTA ESTA ENFOCADO A MI EXPERIENCIA CON EL MENAJO DE ASSEMBLER Y C DE CCS PARA PICS.

ALGO BIEN IMPORTANTE QUE NADIE HA MENCIONADO Y QUE CREO GENERA UNA GRAN VENTAJA DEL C SOBRE EL ENSAMBLADOR...

ES EL HECHO DE QUE EN C ES SENCILLO MANEJAR VARIABLES DE 16 BITS (LONG INT)Y OPERACIONES FLOTANTES(FLOAT), CONSIDERANDO MICROS DE 8 BITS COMO EL 16F84, EN ENSAMBLADOR TAMBIEN SE PUEDE REALIZAR PERO EL DISEÑADOR SE DISTRAE MUCHO DE LA APLICACION EN CONTRETO, POR QUE ESTA MAS PREOCUPADO POR IMPLEMENTAR LA LOGICA PARA EL MANEJO DE ESTE TIPO DE DATOS E INICIALMENTE LA APLICACION PASA EN UN SEGUNDO PLANO, ESTO ROBA MUCHO TIEMPO PARA EL DISEÑADOR.

TAMBIEN ES DE TODOS SABIDO QUE SI ALGO LE CUESTA A UN MICRO ES HACER OPERACIONES CON ESTE TIPO DE DATOS E IMPLEMENTARLO POR SOFTWARE GENERA MUCHA DIFICULTAD DESDE ENSAMBLADOR, ADEMAS AUN ASI EL PIC RESUELVE LAS OPERACIONES CON RELATIVA LENTITUD OBVIAMENTE POR ESO EXISTEN LOS DSPs DONDE EN LAS COMUNICACIONES ENCUENTRAN SU MAYOR CAMPO DE APLICACION.


YO SIEMPRE HE MANEJADO ESTA FILOSOFIA......

PROGRAMAS CON PROBLEMAS DE LOGICA Y COMPARACION= ENSAMBLADOR


PROGRAMAS CON PROBLEMAS DE OPERACIONES ARITMETICAS COMO MULTIPLICACION Y DIVISION= LENGUAJE C

ORA QUE SI TIENES DEMASIADA HABILIDAD PUEDES OPTAR POR LA PROGRAMACION HIBRIDA. CCS SOPORTA ENSAMBLADOR CON #ASM  #ENDASM


ATTE: ALEX

SALUDOS DESDE ORIZABA

3
Microcontroladores / Re: Pic16f877 Se Resetea Tras 5 Seg De Un Pulso En Rc0
« en: Viernes 9 de Junio de 2006, 11:03 »
FILTRA BIEN TU VOLTAJE DE ALIMENTACION CON UN CAPACITOR ENTRE ALIMENTACION Y TIERRA, UN CAP DE 10 MICROFARADIOS ES SUFICIENTE.


EN EL DIAGRAMA NO LO PONES PERO MCLR YA SABES DEBE IR A 5 VOLTS.



POR EXPERIENCIA PROPIA SOLO TE DIGO:

SI CADA QUE CONECTAS EL PIC GENERA EL MISMO PATRON DE PROCESAMIENTO COMO SI VIERAS UNA PELICULA REPETIDA CADA Q LO ENERGIZAS ENTONCES.........ERROR DE PROGRAMACION O CONFIGURACION.



SI CADA QUE LO CONECTAS EL PIC GENERA EVENTOS ASINCRONOS Y DISTINTAS FORMAS DE OPERACION COMO SI DE ALGO SIN LOGICA SE TRATARA ENTONCES...........ERROR HARDWARE CHEKA CONEXIONES.


SINCERAMENTE NO SE QUE PUEDA ESTARTE PASANDO EN EL CODIGO CHEKA TODAS LAS CONFIGURACIONES.

4
Microcontroladores / Re: Conversor A/d 16f87
« en: Viernes 9 de Junio de 2006, 10:43 »
YO TE PUEDO AYUDAR SIEMPRE Y CUANDO ME DES DETALLE DE TUS SENSORES COMO FUNCIONAN, COSTO Y COMO LOS INSTALASTE, ETC. ETC.,

DIGO NO TE LO PIDO POR QUE SEA NECESARIO PARA PROGRAMAR EL MODULO ANALOGICO DIGITAL SIMPLEMENTE POR QUE ME GUSTA Y ME INTERESA SABER INFORMACION SOBRE SENSORES Y ACTUADORES


PROGRAMAR EL MODULO ANALODIGO DIGITAL ES BASTANTE SENCILLO, NO TE PREOCUPES DE ESO. SOLO ESPERO TU INFORMACION DETALLADA SI GUSTAS MANDAMELA A MI CORREO: taichin_fly@hotmail.com


Y YO TE ENVIO UN CODIGO SENCILLO Y TE LO EXPLICO SIN NINGUN INCONVENIENTE SI KIERES NO PONEMOS EN CONTACTO VIA MSN.

ATTE: ALEX

SALUDOS DESDE ORIZABA.

5
Microcontroladores / Re: Duda Básica Con Código
« en: Viernes 9 de Junio de 2006, 10:25 »
COMETI UN ERROR......


MOVLW   5          ; W=5
ADDWF   PCL,F   ; REALMENTE TRADUCE PCL=PCL+W--->PCL=PCL+5 Y NO
                         ; COMO LO HABIA PUESTO DE PCL=W+F. UN POCO DE SUEÑO
                         ; ME HIZO EQUIVOCAR JEJE.

DE TODOS MODOS EL BRINCO SE DA A LA MISMA ZONA AL QUINTO ELEMENTO
DE LA TABLA Y TODA LA EXPLICACION ES TOTALMENTE VALIDA.


SOLO COMO OBSERVACION: SE ME HACE ILOGICO EL CODIGO, NO ENTIENDO POR QUE USAR UNA TABLA QUE SIEMPRE BRINCARA AL QUINTO ELEMENTO DE LA TABLA, ENTONCES ¿¿PARA QUE EXISTE LA TABLA??

ME SUPONGO QUE LO QUE QUIERES HACER ES ESPECIFICAR QUE W=PORTA QUE ES LA DIRECCION 5 DEL BANCO 0.

SI ESE ES EL CASO LA LINEAS CORRECTAS ES:

MOVF    5,0          ;W=PUERTO A

6
Microcontroladores / Re: Duda Básica Con Código
« en: Viernes 9 de Junio de 2006, 08:48 »
JAJA NO SE QUE PASO NO TERMINABA DE REDACTAR MI EXPLICACION SIN QUERER PRESIONE UN TECLA Y SE SUBIO MI RESPUESTA SIN ESTAR TERMINADA AQUI AHORA SI LA DEJO TERMINADA

OJO MIRA....

me supongo que sabes como funciona una tabla, una tabla funciona direccionando el control del programa por medio del contador de programa.

EL CONTADOR DE PROGRAMA COMPLETO EN ESTE PIC CONSTA DE 14 BITS, la parte baja es PCL con la cual puedes direccionar los primeros 8 bits de dicho CONTADOR DE PROGRAMA, de tal manera que si tu tabla se localiza dentro de los primeras 255 lineas de codigo es totalmente valido que borres el direccionamiento de la parte alta que estan en las instrucciones DE TU CODIGO:

movlw HIGH primo y movwf PCLATH

perooo si la tabla se encuentra ubicada mas alla de las primeras 255 lineas entonces el diseñador se ve obligado a cargar la parte alta del CONTADOR DE PROGRAMA PCLATH.
MIRA que sucederia si no lo hacemos, mira suponiendo que la direccion de la instruccion en la MEMORIA DE PROGRAMA se encuentra en el lado derecho de la lista.

DIRECCION                CODIGO
 PROGRAMA                                       ; borramos las lineas de direccionamiento
                                                         ; de PCLATH que es la parte alta del PC
   0X202                    movlw 5             ;W=5
   0X203                    call primo           ;

   0X204           primo:                        ;
   0X204                    addwf PCL,F;      ;PCL=W+F suponiendo que F=0
   0X205                     retlw 1;
   0X206                     retlw 2;
   0X207                     retlw 3;
   0X208                     retlw 5;
   0X209                     retlw 7;
0X210                     retlw 11;  ;el programa DEBERIA BRINCAR AQUI
   0X211                      retlw 13;          ;pero no lo hace por que solo cargamos
   0X212                      retlw 17;          ;PCL y no se direcciono PCLATH de tal
                                                         ;manera que el codigo en vez de
                                                         ;direccionar la instruccion 0x210 brincara
                                                        ;a lo que halla en la direccion por ejemplo
                                                        ;la 0x010 o la 0x110 dependiendo el ultimo
                                                        ;valor cargado en PCLATH es por    
                                                        ;eso que hay que ponerle ese 2 en la parte
                                                        ;alta del PC



DIRECCION                CODIGO

   0X200                    movlw HIGH primo         ;A diferencia del codigo anterior
   0X201                    movwf PCLATH              ;este si usa PCLATH y lo hace
   0X202                    movlw 5;                      ;pasando la parte alta de primo.
   0X203                    call primo;                    ;si vemos, primo esta en la 0x204
                                                                   ;y le estamos metiendo ese 2
                                                                   ; a PCLATH tal y como lo necesita.
   0X204           primo:                        ;movlw carga W con una literal K
   0X205                    addwf PCL,F;               ;(un valor directo),al ser una
   0X206                     retlw 1;                      ;etiqueta, entonces se cargara  
   0X207                     retlw 2;                      ;su direccion directamente pero  
   0X208                     retlw 3;                      ;con HIGH solo cargamos la
   0X209                     retlw 5;                      ;parte alta que es el 2.
   0X210                     retlw 7;
  0X211                     retlw 11;          ;en este caso el codigo si brincara
   0X1FF                      retlw 13;                    ;correctamente a esta posicion
   0X1FF                      retlw 17;                    


espero halla quedado claro, yo en lo personal te recomiendo que siempre carges PCLATH aunque no superes las 255 localidades de memoria, no importa por que simplemente lo cargarias con CERO en dado caso, y de esta forma te olvidas se especulaciones de que si la tabla esta mas alla de 255 o mas para aca.

ALGO BIEN INTERESANTE Y UNA DUDA QUE LES DEJO POR AKI ES ¿QUE SUCEDERIA SI A LA MITAD DE LA TABLA EXISTE UNA TRANSICION DE LA PARTE ALTA DEL PC POR EJEMPLO UN 0x2FF Y EN EL VALOR SIGUIENTE DE LA TABLA TE ENCUENTRES QUE LA INSTRUCCION OCUPA EL 0x300 COMO DIRECCIONO LOS DOS PCLATH EN LA MISMA TABLA?

BUENO ME DESPIDO SALUDOS DESDE ORIZABA Y OJALA TE HALLA SERVIDO MI AYUDA, SI TE SIRVIO NO ME ENOJO SI ME RESPONDES CON SOLO DAR LAS GRACIAS..

ATTE: ALEJANDRO

SALUDOS DESDE ORIZABA, VERACRUZ. MEXICO

7
Microcontroladores / Re: Duda Básica Con Código
« en: Viernes 9 de Junio de 2006, 08:19 »
OJO MIRA....

me supongo que sabes como funciona una tabla, una tabla funciona direccionando el control del programa por medio del contador de programa.

EL CONTADOR DE PROGRAMA COMPLETO EN ESTE PIC CONSTA DE 14 BITS, la parte baja es PCL con la cual puedes direccionar los primeros 8 bits de dicho CONTADOR DE PROGRAMA, de tal manera que si tu tabla se localiza dentro de los primeras 255 lineas de codigo es totalmente valido que borres el direccionamiento de la parte alta que estan en las instrucciones:

movlw HIGH primo y movwf PCLATH

perooo si la tabla se encuentra ubicada mas alla de las primeras 255 lineas entonces el diseñador se ve obligado a cargar la parte alta del CONTADOR DE PROGRAMA PCLATH.
MIRA que sucederia si no lo hacemos, mira suponiendo que la direccion de la instruccion en la MEMORIA DE PROGRAMA se encuentra en el lado derecho de la lista.

DIRECCION                CODIGO
                                                         ; borramos las lineas de direccionamiento
                                                         ; de PCLATH que es la parte alta del PC
   0X202                    movlw 5             ;W=5
   0X203                    call primo           ;

   0X204           primo:                        ;
   0X204                    addwf PCL,F;      ;PCL=W+F suponiendo que F=0
   0X205                     retlw 1;
   0X206                     retlw 2;
   0X207                     retlw 3;
   0X208                     retlw 5;
   0X209                     retlw 7;
   0X210                     retlw 11;           ;el programa DEBERIA BRINCAR AQUI
   0X211                      retlw 13;          ;pero no lo hace por que solo cargamos
   0X212                      retlw 17;          ;PCL y no se direcciono PCLATH de tal



DIRECCION                CODIGO

   0X200                    movlw HIGH primo;
   0X201                    movwf PCLATH
   0X202                    movlw 5;
   0X203                    call primo;

   0X204           primo:
   0X205                    addwf PCL,F;
   0X206                     retlw 1;
   0X207                     retlw 2;
   0X208                     retlw 3;
   0X209                     retlw 5;
   0X210                     retlw 7;
   0X211                     retlw 11;
   0X1FF                      retlw 13;
   0X1FF                      retlw 17;

Páginas: [1]