• Domingo 28 de Abril de 2024, 17:41

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 - el_riveraa

Páginas: [1]
1
Microcontroladores / Re: Binario A Bcd
« en: Lunes 17 de Abril de 2006, 18:01 »
Cita de: "lalo_soft"
Esto es lo que busca fitopablo

En ASM:

http://foros.solocodigo.com/index.php?showtopic=16940


EN C :

http://foros.solocodigo.com/index.php?showtopic=19300
Esto es a lo que me referia. Por cierto Nicolas1, gracias por contestar ;)



;HEX2BDC: Transforma el código en Hexadecimal que viene en el w,
;en dos bcd, el mas alto en los 4 MSBs y el mas bajo en los 4 LSBs del registro w

hex2bcd  movwf  contador1
  clrf  contador2
  comf  contador1,f
h2bcd1  movf  contador1,w
  addlw  0x0a
  btfsc  status,0
  goto  h2bcd2
  movwf  contador1
  incf  contador2,f
  goto  h2bcd1
h2bcd2  comf  contador1,f
  movf  contador2,w;Si contador2 no es cero
  btfsc  status,2
  goto  h2bcd4
h2bcd3  movf  contador1,w
  addlw  0x10  ;Se le suma a contador1 tantos 0x10 como indique
  movwf  contador1
  decfsz  contador2,f
  goto  h2bcd3
h2bcd4  movf  contador1,w
  return

2
Microcontroladores / Re: Binario A Bcd
« en: Domingo 16 de Abril de 2006, 21:42 »
Sigo manteniendo mi postura eso, no combierte de BINARIO A DECIMAL, si es así, postea el ASM entero con las definiciones de los registros, definiendo el tipo de chip ... todo lo que haga falta para simularlo en el mplab

3
Soluciones de Hard y Soft / Re: Rutina De Binario A Bcd <8bits>
« en: Miércoles 5 de Abril de 2006, 20:37 »
aplicado a un sensor por ejemplo el lm35,  tienes que utilizar el conversor a/d del 16f87 y te saca los datos en binario, esos datos transformalos a hexadecimal y utilizar ya la ruitina esta, pero hay algo de binario a bcd?

4
Soluciones de Hard y Soft / Re: Conversion Binario A Bcd En C
« en: Miércoles 5 de Abril de 2006, 20:29 »
la rutina en ASM? si no es mucho pedir

5
Microcontroladores / Re: ¿se Puede Generar Una Pwm De 50hz Con Un 16f877a
« en: Miércoles 5 de Abril de 2006, 20:27 »
ese codigo lo he hecho yo, y si funciona garantizado 100% . Es codigo original by me xD

6
Robótica / Existen Las Normativas ?
« en: Miércoles 5 de Abril de 2006, 20:06 »
Buenas, me preguntaba si este foro es el mas adecuado, espero que si, y que el lenguaje d elos robots son los sensores y el caso esque tengo una duda, en cuanto a los sensores, existen normativas que afecten a estos?, es decir, hay normativas aplicables a los sensores?

7
Microcontroladores / Re: ¿se Puede Generar Una Pwm De 50hz Con Un 16f877a
« en: Miércoles 5 de Abril de 2006, 19:48 »
aqui te dejo un programita que trata sobre la PWM, lo que tienes que hacer a grandes rasgos es cargar un valor al CCPR1L. este programa lo qe hace es incrementar el PWM y decrementarlo , cambiar el sentiro de giro y volver a injcrementar y decrementar el PWM, con lo que se consigue que se varie la  velocidad del motor




Definimos el tipo de procesador que vamos a utilizar e incluimos la librería del mismo ;donde se encuentras las definiciones de registros internos..

LIST      P=16F873      
INCLUDE   "P16F873.INC"   

;En el siguiente lo bloque, lo que hacemos es etiquetar los registros a  utilizar.

   AUX      EQU   0X20   ;Registro que utilizamos para incrementar el valor
               ;posteriormente cargado en CCPR1L.
   AUX2      EQU   0X21   ;Registro que utilizamos para compararlo con el
               ;Registro CCPR1L y averiguar si ha llegado al
               ;Nivel máximo que queremos alcanzar.
   CONT1   EQU   0X23
   CONT2   EQU   0X24

   ORG      0X00      ;Vector de Reset.
   
;Programa Principal.

INICIO   CLRF      PORTA
      CLRF      PORTB
      CLRF       PORTC
      CLRF      AUX
      BSF      STATUS,RP0      ;Selecciona banco 1.
      CLRF      ADCON1      ;Puerta Analógica, Justificación Izda.
      CLRF      TRISB         ;Pueta B, se configura como salida.
      MOVLW   B'00011111'
      MOVWF   TRISA         ;RA4-RA0 Entradas
      MOVLW   B'11111011'
      MOVWF   TRISC        ;RC2/CCP1 Salida
      BCF      STATUS,RP0     ;Selecciona banco 0


;Configuramos el Registro CCP1COM para que actúe en modo PWM con salida por ;RC2/CCP1. Esta configuración se hace cargando una serie de bits definidos por el ;fabricante en el registro..

      MOVLW   B'00001100'
      MOVWF   CCP1CON   ;Módulo ccp1 en modo
;PWM  con salida por RC2/CCP1

;El periodo del PWM para el módulo CCP1  es de 4 ms (pr2*tmr2 preescaler*4*tosc). ;Los 4ms los conseguimos  cargando el valor decimal 250 en el PR2.

      BSF      STATUS,RP0       ;Selecciona página 1
      MOVLW   .250
      MOVWF   PR2
      BCF      STATUS,RP0    ;Selecciona página 0

;El TMR2 lo configuramos para que trabaje con un preescales de 1:16, es decir, ;evoluciona cada 16uS.

      MOVLW   B'00000110'
      MOVWF   T2CON      ;TMR2 EN ON

;Con las siguientes dos instrucciones  lo que hacemos es indicar el sentido de giro del ;motor, en este caso, el sentido que le indicamos es horario.

MOVLW   B'00000010'
      MOVWF   PORTB      
      
;En estas dos instrucciones, como he indicado anteriormente, lo que hacemos es cargar ;el valor 250 en decimal al registro que hemos llamado AUX2, para que pueda ser ;comparado con el CCPR1L.

MOVLW   .250
      MOVWF   AUX2
      
;Mediante estas llamadas a subrutinas intentamos conseguir: Por un lado, que se valla ;incrementando la velocidad del motor hasta llegar  a su máximo 250 (para 4ms), y que ;cuando llegue a su máximo empiece a disminuir su velocidad hasta llegar a pararse ;cuando CCPR1L alcance “0”. Y  Por otro lado que cambie el sentido de giro e ;incremente y decremente y así sucesivamente.

CALL       INCREMENTA
      CALL      DECREMENTA
      CALL      CAMBIO
      CALL       INCREMENTA
      CALL      DECREMENTA
      GOTO      INICIO

;Esta subrutina, es la encargada de conseguir que se incremente la velocidad del ;rotación del motor. En nuestro caso vamos incrementando un registro auxiliar y lo ;cargamos en CCPR1L. Para detectar cuando hemos llegado a 250, lo que hacemos es ;restar un registro auxiliar anteriormente creado (AUX2) el cual tiene cargado el valor ;de 250. Éste valor lo resto cada vez q se incrementa el registro AUX que es que vamos ;incrementando y vamos cargando en CCPR1L, y si el resultado de la resta de AUX – ;AUX2 es igual a “0” el BIT 2 (el BIT Z) del registro STATUS se pone a “1”. Por lo ;tanto cada vez que efectuamos la resta preguntamos por el BIT 2 del registro STATUS, ;si es igual a 1, la instrucción BTFSS salta una línea, sino, sigue a la línea siguiente.

INCREMENTA   CALL      TEMP   
         INCF      AUX,1
         MOVF      AUX,0
         MOVWF   CCPR1L
         MOVF      AUX,0
         SUBWF   AUX2,0
         BTFSS      STATUS,2
         GOTO      INCREMENTA
         RETURN
      
;La subrutina “Decrementa”, hace exactamente lo inverso a la subrutina “Incrementa” ;pero con algunas diferencias, es decir, decrementamos el registro AUX(el cual ;cargamos a CCPR1L) mediante la instrucción DECFSZ. Ésta instrucción decrementa ;en una unidad, y si el resultado es “0” salta una línea, sino, sigue a la siguiente línea, ;de modo que una vez aprendido como se maneja esta instrucción hacemos lo siguiente: ;vamos decrementado el registro AUX y si el resultado es “0” salta una línea, por lo ;tanto, la velocidad del motor será nula y por lo tanto pasaremos a la rutina cambio de ;giro y posteriormente a las rutinas de Incrementa y Decrementa. Si el resultado de la ;resta no es “0” seguimos decrementando.

DECREMENTA   CALL      TEMP
         DECFSZ   AUX,1
         GOTO      SITIO1
         RETURN
SITIO1      MOVF      AUX,0      
         MOVWF   CCPR1L   
         GOTO      DECREMENTA

;Con esta subrutina lo que conseguimos es cambiar el sentido de giro del motor. El ;sentido de giro del motor se controla mediante el Driver L293B modificando las ;entradas IN1 y IN2.

CAMBIO          MOVLW   B'00000001'
      MOVWF   PORTB      ;Motor en on, giro anti-horario
      RETURN

;Esta subrutina, es la subrutina de temporización. Cada vez que incrementemos o ;decrementemos debemos llamar a la temporización, para que pueda ser perceptible a ;través del ojo humano el aumento y la disminución de  la velocidad del motor. Nostros ;hemos metido unos valores a los contadores auxiliares (CONT1 y CONT2) para una ;temporización de 5 ms (teóricamente), pero debido a que para temporizaciones ;pequeñas este tipo de aplicaciones son muy poco precisas pues conseguimos una ;temporización real de 15 ms aproximadamente debido al tiempo que se tarda en ;ejecutar las instrucciones. (Por ejemplo las instrucciones de salto tardan 2 ciclos de ;reloj).

TEMP      MOVLW   .200   
      MOVWF   CONT1
IN1      MOVLW   .50
      MOVWF     CONT2
IN      DECFSZ   CONT2
      GOTO       IN
      DECFSZ   CONT1
      GOTO      IN1
      RETURN
            
      END         ;Fin del programa fuente

8
Microcontroladores / Re: Termómetro
« en: Miércoles 5 de Abril de 2006, 19:43 »
porque se coje la parte baja? y no los bits mas significativos?

9
Microcontroladores / Re: Binario A Bcd
« en: Miércoles 5 de Abril de 2006, 19:41 »
ese codigo  no convierte nada de binario a bcd, ES MUCHO MAS COMPLEJO Y LARGO

10
Microcontroladores / Re: Gps Logger Con Pic
« en: Martes 4 de Abril de 2006, 22:54 »
interesante, muy interesante jeje, siento no poder ayudar :(

11
Microcontroladores / Re: Conversor A/d 16f87
« en: Lunes 3 de Abril de 2006, 14:42 »
Cita de: "Huguen_aus_Tirol"

El coneccionado: entre los 5V y el positivo del LM una R de unos 47 ohm, entre el positivo del LM y masa un C de .1 (no es mala idea tambien uno de 1µ); el común del LM a masa y entre la salida del LM y la entrada analógica del micro una R de 10K (es la impedancia de entrada del CAD, consultar manual!)
gracias por ayudarme, pero.. no entiendo esta parte demasiado bien, haber si alguiens abe explicarmelo ma detalladamente, gracias!

12
Microcontroladores / Re: Sensor De Presion Y Humedad
« en: Viernes 31 de Marzo de 2006, 19:42 »
me puedes pasar el esquema del circuito? como haces para interpretar los valores que te llegan en "analogicos" y los conviertes en "digitales", una tabla? es decir, por ejemplo si me llega 10001000 sacar por display 22 grados, si me llega 11001110 saca por display 24 grados.. etc?

13
Microcontroladores / Re: Pantallas Lcd
« en: Jueves 30 de Marzo de 2006, 16:19 »
el programa es en c o en ensamblador? yo estoy intentando comunicar un sensor de temperatura (LM35) y otro de presion (aún no lo tengo elegido) con una LCD mediante el PIC 16f87x, si podeis ayudarme en la conversion a/d y esos datos digitales sacarlos por la LCD lo agradeceria,, Un saludo

14
Microcontroladores / Re: Sensor De Presion Y Humedad
« en: Jueves 30 de Marzo de 2006, 16:07 »
boni y darevelo, yo estoy haciendo un proyecto similar, mi e-mail y messenger es el_riveraa@hotmail.com si quereis contactar cnmigo para algo.. ahi lo teneis, por cierto, como has conseguido la conversion A/D? es con el pic 16f87? o con un conversor externo?

15
Microcontroladores / Re: Conversor A/d 16f87
« en: Jueves 30 de Marzo de 2006, 16:01 »
Cita de: "lalo_soft"
Primero ponte claro que micro vas a usar el 84 o el 87x para poder ayudarte
el 16f87x    :)

16
Microcontroladores / Conversor A/d 16f87
« en: Miércoles 29 de Marzo de 2006, 21:15 »
Buenas, estoy haciendo un proyecto de sensores de temperatura, presion, humedad.. etc, y estoy trabajando con el sensor LM35 (de temperatura) el cual tengo que controlar mediante un pic 16f84 (sin Conversor A/D con lo cual se utiliza uno externo) o el pic 16f87x que ya posee uno.

el sensor LM35 tiene una grafica Temperatura/Voltios lineal, con lo cual al variar la temperatuta varían los voltios, bueno pues como esos voltios son analogicos y los necesito hacerlos digitales para poder controlarlos miediante el pic, ahí está el KIT de la cuestión, no se por donde meterle mano...(me he bajado el datasheet del microcontrolador.. pero nada)

La verdad esque no se muy bien como va el conversor, he estado ojeando y la verdad entiendo algo pero me quedo como se dice en "blanco" a la hora de "meterle mano", espero que me hecheis un cable para poder soluciar el problema.

Perdonar si es un poco tonta la duda, pero.. ahora mismo me está mantando llevo varios dias.. y necesito avanzar en eso..


Muchas gracias, el riveraa.

Si alguien esta interesado en el proyecto (estacion meteorologia mediante microcontroladores pic en lenguaje ensamblador) aquí dejo mi e-mail y messenger: el_riveraa@hotmail.com

17
Microcontroladores / Conversor A/d 16f87
« en: Miércoles 29 de Marzo de 2006, 21:06 »
Buenas, estoy haciendo un proyecto de sensores de temperatura, presion, humedad.. etc, y estoy trabajando con el sensor LM35 (de temperatura) el cual tengo que controlar mediante un pic 16f84 (sin Conversor A/D con lo cual se utiliza uno externo) o el pic 16f87x que ya posee uno.

La verdad esque no se muy bien como va el conversor, he estado ojeando y la verdad entiendo algo pero me quedo como se dice en "blanco" a la hora de "meterle mano", espero que me hecheis un cable para poder soluciar el problema.

                    Muchas gracias, el riveraa.

Si alguien esta interesado en el proyecto (estacion meteorologia mediante microcontroladores pic en lenguaje ensamblador) aquí dejo mi e-mail y messenger: el_riveraa@hotmail.com

Páginas: [1]