|
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
« en: Lunes 17 de Abril de 2006, 18:01 »
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
« 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
« 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
« en: Miércoles 5 de Abril de 2006, 20:29 »
la rutina en ASM? si no es mucho pedir
5
« 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
« 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
« 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
« en: Miércoles 5 de Abril de 2006, 19:43 »
porque se coje la parte baja? y no los bits mas significativos?
9
« 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
« en: Martes 4 de Abril de 2006, 22:54 »
interesante, muy interesante jeje, siento no poder ayudar
11
« en: Lunes 3 de Abril de 2006, 14:42 »
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
« 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
« 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
« 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
« en: Jueves 30 de Marzo de 2006, 16:01 »
Primero ponte claro que micro vas a usar el 84 o el 87x para poder ayudarte el 16f87x
16
« 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
« 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]
|
|
|