Ver las NORMAS de estos Foros Web ZackYFileS Chat ZackYFileS Agregar a Favoritos Contactar con Administrador
 
 

TU PUBLICIDAD AQUÍ!!
Navegación
Retroceder   Foros ZackYFileS >
OTROS TEMAS DE INTERES - INTERNET:
> ELECTRÓNICA GENERAL
Nombre de usuario
Contraseña
Configuración de UsuarioAyuda (FAQs)Nuevos PostsBuscar


Respuesta
 
Herramientas
Antiguo 02/08/2005, 14:10   #1
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
¿Algun compañero puesto en ASM Pic16f84?

Saludos.
Pues si podriais "alterar" un pequeño codigo ASM que es un secuencial de 8 salidas con un Pic16f84, el cual quisiera que cambiasen unas funciones.
(No utilizo la funcion Velocidad ni Dirección). Siempre que le aplico tensión, enciende en la primera ronda los leds de dos en dos 1-2, 2-3, 3-4, 4-5, 5-6, 6-7, 7-8 y a partir de la segunda ronda enciende de forma secuencial uno detras de otro (1,2,3,4,5,6,7,8). Estaria muy agradecido si conseguis (y si no tambien), que en el momento de aplicar tensión encendiese siempre de forma secuencial uno detras de otro (1,2,3,4,5,6,7,8). Y si es posible, que al llegar al led 8, se quedase enclavado (hasta que se desconectase tensión y al conectar, vuelta a empezar.
El codigo sería este:

;Secuenciador de ocho LEDS conectados al puerto B
;Velocidad de desplazamiento Ra0 (pin 17)
;Direccion de desplazamiento Ra1 (pin 18)

EST equ 0x03 ;Registro de estado
PA equ 0x05 ;Puerto A
PB equ 0x06 ;Puerto B
AUXA equ 0x0c ;Variable de temporizacion
AUXB equ 0x0d ;Variable de temporizacion

org 0 ;Vector de reset
goto INICIO
org 5

INICIO bsf EST,5 ;Selecciona el banco de memoria superior
clrf PB ;Configura el puerto B como salida
movlw 0x1f ;Carga la variable Work con '00011111'
movwf PA ;Configura el puerto A como entrada
bcf EST,5 ;Selecciona el banco de memoria inferior

IZQ movlw 1 ;Enciende el LED de RB0 (pin 6)
movwf PB
call DELAY ;Rutina de retardo para visualizacion
LOOP rlf PB ;Desplaza el bit hacia la izquierda
call DELAY ;Otra espera
btfss PA,1 ;Verifica el interruptor de direccion
goto LOOP2 ;Si esta pulsado salta a giro a la derecha
btfsc PB,7 ;Verifica el estado del ultimo LED
goto IZQ ;Comienza de nuevo si esta encendido
goto LOOP ;Rota nuevamente si esta apagado
DER movlw b'10000000' ;Carga la variable Work con el ultimo bit on
movwf PB ;Enciende el ultimo LED
call DELAY ;Espera
LOOP2 rrf PB ;Desplaza el bit hacia la derecha
call DELAY ;Vuelve a esperar
btfsc PA,1 ;Verifica el interruptor de direccion
goto LOOP ;Si esta suelto salta a giro a la izquierda
btfsc PB,0 ;Verifica el estado del primer LED
goto DER ;Si termino salta al comienzo del proceso
goto LOOP2 ;Si no termino sigue desplazando

DELAY movlw 2000 ;Carga el temporiz. 1 con 2000 (lento)
btfss PA,0 ;Verifica el interruptor de velocidad
movlw 255 ;Si esta presionado carga con 255 (rapido)
movwf AUXA
CA movlw 0xff ;Carga el auxiliar de temporizacion 2
movwf AUXB
CB nop ;Pierde 1æS por vuelta
decfsz AUXB ;Resta uno al auxiliar 2
goto CB ;Si no llego a cero vuelve al punto CB
decfsz AUXA ;Resta uno al auxiliar 1
goto CA ;Si no llego a cero vuelve al punto CA
return

end ;Fin del programa
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Antiguo 02/08/2005, 22:39   #2
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
Hola , si no recuerdo mal , debes borrar el bit de acarreo antes de empezar , esa instruccion utiliza el acarreo y al empezar esta a nivel 1 , con la instruccion
Código:
IZQ        movlw  0x01
           movwf  PB
ya tienes encendido el bit 0 de la puerta b y con la instruccion rlf le vuelves a meter un 1 en el bit 0 y como bit 0 a pasado al bit 1 tienes encendido el bite 0 y 1 de la puerta b y con la siguiente instruccion de rotacion van de 2 en 2 asi que borra el bit de acarreo antes de nada.
Código:
        bcf    STATUS, C
IZQ     movlw  0x01
        movwf  PB
pruebalo a ver si asi solucionas lo de la primera secuencia y vemos lo siguiente.

UN SALUDO
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 02/08/2005, 23:12   #3
jgomfer
Usuario Activo
 
Fecha de ingreso: 04/abr/2003
Mensajes: 58
jgomfer está en el buen camino
A veces es mas facil empezar algo nuevo que modificar lo existente.
Tal vez esto te sea util

http://perso.wanadoo.es/chyryes/circuitos/luznav.htm

Salu2
jgomfer está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 03/08/2005, 13:25   #4
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
Saludos.
Gracias Andy y Jgom.
Andy, al meter esa linea " bcf STATUS, C ", me da error al ensamblar.

De momento lo he "medio" solucionado con unos pequeños cambios. Ahora inicia siempre uno detras del otro, y al encender el ultimo led, se apaga y se queda todo apagado, hasta la nueva puesta en tensión.

;Secuenciador de ocho LEDS conectados al puerto B
;Velocidad de desplazamiento Ra0 (pin 17)
;Direccion de desplazamiento Ra1 (pin 18)

EST equ 0x03 ;Registro de estado
PA equ 0x05 ;Puerto A
PB equ 0x06 ;Puerto B
AUXA equ 0x0c ;Variable de temporizacion
AUXB equ 0x0d ;Variable de temporizacion

org 0 ;Vector de reset
goto INICIO
org 5

INICIO bsf EST,5 ;Selecciona el banco de memoria superior
clrf PB ;Configura el puerto B como salida

movwf PA ;Configura el puerto A como entrada
bcf EST,5 ;Selecciona el banco de memoria inferior

IZQ movlw 0 ;***************
movwf PB
call DELAY ;Rutina de retardo para visualizacion
LOOP rlf PB ;Desplaza el bit hacia la izquierda
call DELAY ;Otra espera


btfsc PB,7 ;Verifica el estado del ultimo LED

goto IZQ ;Comienza de nuevo si esta encendido

goto LOOP ;Rota nuevamente si esta apagado

call DELAY ;Espera

call DELAY ;Vuelve a esperar
btfsc PA,1 ;Verifica el interruptor de direccion
goto LOOP ;Si esta suelto salta a giro a la izquierda
btfsc PB,0 ;Verifica el estado del primer LED
btfsc PB,7 ;Verifica el estado del ultimo LED


DELAY movlw 2000 ;Carga el temporiz. 1 con 255 (lento)
btfss PA,0 ;Verifica el interruptor de velocidad
movlw 1000 ;Si esta presionado carga con 127 (rapido)
movwf AUXA
CA movlw 0xff ;Carga el auxiliar de temporizacion 2
movwf AUXB
CB nop ;Pierde 1æS por vuelta
decfsz AUXB ;Resta uno al auxiliar 2
goto CB ;Si no llego a cero vuelve al punto CB
decfsz AUXA ;Resta uno al auxiliar 1
goto CA ;Si no llego a cero vuelve al punto CA
return

end ;Fin del programa
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 03/08/2005, 16:11   #5
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
hola , el error al ensamblar te lo da por que no incluyes el " include "
Código HTML:
INCLUDE <P16F84A.INC>
, si no lo quieres poner, podemos poner etiquetas.
Código:
        bcf    EST, 0
IZQ     movlw  0x01
        movwf  PB
Venga, si tienes alguna duda mas y te puedo ayudar

UN SALUDO
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 04/08/2005, 18:06   #6
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
Saludos.
Gracias ANDYross, ahora perfecto. Lo unico que le he cambiado despues es el oscilador, que antes tenia un cuarzo de 4Mhz, y ahora le he puesto uno ajustable por R/C, y asi puedo ajustar la duración de los tonos DTMF que quiero emitir via radio.
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 06/08/2005, 10:20   #7
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
Hola de nuevo, dices que has cambiado el oscilador para poner un R/C para ajustar, ¿ no crees que ajustarias mejor con el cristal ? con el cristal de 4 Mhz sabes que 1 instruccion dura 1 microsegundo , y con la R/C te sera dificil saberlo y no sera muy preciso , si es que realmente necesitas que sea preciso , bueno ya sabes cada instrucion 1 microsegundo ( ojo con un cristal de 4 Mhz, ahh recuerda que las instrciones de salto utilizan 2 microsegundos ), asi tienes un control exacto del programa , y podras variar la duracion de los tonos mediante el programa.

UN SALUDO
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 07/08/2005, 00:19   #8
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
Gracias monstro del asm AndyRos.
Le puse el oscilador en modo R/C porque realmente necesito que este cada led activado entre 1-1,5 segundos (duración que necesito digamos para poner el emisor de RF en modo transmisión y enviar el primer tono, que utilizo como reset de la placa de control, y despues enviar si procede, los demas tonos, si las entradas correspondientes estan cerradas) y con una ajustable de 100K a mitad de recorrido lo consigo bastante bien.
Lo que tambien me pasa es que al incluir la sentencia que me diste (la cual va de fabula, un led detras de otro), al terminar con el ultimo led, vuelve a empezar, y necesitaria que despues de encender el ultimo led y apagarse, el programa se quedase parado, hasta la proxima puesta en tensión.
P.D. Por si tienes curiosidad, el montaje que estoy haciendo es muy sencillo, pero bastante complicado a la vez. Cada X minutos, un temporizador ciclico pone en marcha el Pic, el cual comprueba una tras otra las 8 entradas (realmente son 7 pues la primera la utilizo como reset de la placa de control que se encuentra en la distancia). Segun la entrada que este cerrada, emitira un tono que será transmitido por un pequeño transceptor de RF, y en la otra punta, otro transceptor recogerá los tonos DTMF que serán decodificados y enviados a una pequeña pantalla LCD con mensajes programables, la cual me indicara que esta pasando en la otra punta del montaje.
Lo dicho, muy agradecido.
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 07/08/2005, 12:22   #9
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
hola , de monstruo nada ya quisiera yo, aun estoy aprendiendo en esto de los pics.
Bueno prueba esto y ya me cuentas , una cosa he puesto la entrada PA1 que si no esta a nivel 0 no funciona , no se exactamente para que lo quieres asi que si hay que cambiar algo lo comentas.

[CODE];Secuenciador de ocho LEDS conectados al puerto B
;Velocidad de desplazamiento Ra0 (pin 17)
;Direccion de desplazamiento Ra1 (pin 18)

EST equ 0x03 ;Registro de estado
PA equ 0x05 ;Puerto A
PB equ 0x06 ;Puerto B
AUXA equ 0x0c ;Variable de temporizacion
AUXB equ 0x0d ;Variable de temporizacion

org 0 ;Vector de reset
goto INICIO
org 5

INICIO bsf EST,5 ;Selecciona el banco 1
clrf PB ;Configura el puerto B como salida
movlw 0x1f
movwf PA ;Configura el puerto A como entrada
bcf EST,5 ;Selecciona el banco 0




BUCLE btfsc PA,1 ;Verifica el interruptor de direccion
goto BUCLE ;Si esta suelto salta a giro a la izquierda





bcf EST,0 ;BORRO EL BIT DE ACARREO
movlw 1 ;ENCIENDO EL PRIMER LED
movwf PB
call DELAY ;Rutina de retardo para visualizacion
LOOP rlf PB ;Desplaza el bit hacia la izquierda
call DELAY ;Otra espera


btfsc PB,7 ;Verifica el estado del ultimo LED

goto APAGA ;LO ENVIO A LA SECUENCIA DE APAGADO
goto LOOP ;Rota nuevamente si esta apagado



APAGA clrf PB ;BORRO LA PUERTA B
goto APAGA ;LO DEJO EN UN BUCLE INFINITO




DELAY movlw 2000 ;Carga el temporiz. 1 con 255 (lento)
btfss PA,0 ;Verifica el interruptor de velocidad
movlw 1000 ;Si esta presionado carga con 127 (rapido)
movwf AUXA
CA movlw 0xff ;Carga el auxiliar de temporizacion 2
movwf AUXB
CB nop ;Pierde 1æS por vuelta
decfsz AUXB ;Resta uno al auxiliar 2
goto CB ;Si no llego a cero vuelve al punto CB
decfsz AUXA ;Resta uno al auxiliar 1
goto CA ;Si no llego a cero vuelve al punto CA

return

end ;Fin del programa[/CODE]

P.D YO NO NOTO CAMBIO EN LA VELOCIDAD Y HAY UNA COSA QUE NO ENTIENDO Y LO VOY A MIRAR , YA TE CONTARE, LO PODEMOS MODIFICAR PARA QUE VAYA MAS LENTO COMO TU HAS DICHO QUE TENIA QUE IR DE 1 A 1'5 SEGUNDO Y LO ESTOY PROBANDO Y VA MAS RAPIDO.

UN SALUDO Y YA ME CUENTAS
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 07/08/2005, 14:39   #10
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
Saludos AndyRoss.
Le he metido el programa modificado, pero creo que algo anda mal, ahora el Pic no me enciende ninguna salida, esta como en reposo.
P.D. De momento lo sigo manteniendo con oscilador R/C.


Gracias de nuevo.
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 07/08/2005, 14:43   #11
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
pon a masa la patilla nº 18 del pic, ( ya modificaremos esto por que he leido en el primer post que no lo utilizas).
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 07/08/2005, 14:46   #12
ANDYROS
Usuario Activo
 
Avatar de ANDYROS
 
Fecha de ingreso: 01/abr/2004
Mensajes: 143
ANDYROS está en el buen camino
arreglado, ya se lo he quitado lo de la patilla nº18 ahora debe de ir.

[CODE];Secuenciador de ocho LEDS conectados al puerto B
;Velocidad de desplazamiento Ra0 (pin 17)
;Direccion de desplazamiento Ra1 (pin 18)

EST equ 0x03 ;Registro de estado
PA equ 0x05 ;Puerto A
PB equ 0x06 ;Puerto B
AUXA equ 0x0c ;Variable de temporizacion
AUXB equ 0x0d ;Variable de temporizacion

org 0 ;Vector de reset
goto INICIO
org 5

INICIO bsf EST,5 ;Selecciona el banco 1
clrf PB ;Configura el puerto B como salida
movlw 0x1f
movwf PA ;Configura el puerto A como entrada
bcf EST,5 ;Selecciona el banco 0









bcf EST,0 ;BORRO EL BIT DE ACARREO
movlw 1 ;ENCIENDO EL PRIMER LED
movwf PB
call DELAY ;Rutina de retardo para visualizacion
LOOP rlf PB ;Desplaza el bit hacia la izquierda
call DELAY ;Otra espera


btfsc PB,7 ;Verifica el estado del ultimo LED

goto APAGA ;LO ENVIO A LA SECUENCIA DE APAGADO
goto LOOP ;Rota nuevamente si esta apagado



APAGA clrf PB ;BORRO LA PUERTA B
goto APAGA ;LO DEJO EN UN BUCLE INFINITO




DELAY movlw 255 ;Carga el temporiz. 1 con 255 (lento)
btfss PA,0 ;Verifica el interruptor de velocidad
movlw 255 ;Si esta presionado carga con 127 (rapido)
movwf AUXA
CA movlw 0xff ;Carga el auxiliar de temporizacion 2
movwf AUXB
CB nop ;Pierde 1æS por vuelta
decfsz AUXB ;Resta uno al auxiliar 2
goto CB ;Si no llego a cero vuelve al punto CB
decfsz AUXA ;Resta uno al auxiliar 1
goto CA ;Si no llego a cero vuelve al punto CA

return

end ;Fin del programa[/CODE]
ANDYROS está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Antiguo 08/08/2005, 19:51   #13
BeniElCutre 
User Cutre, pero Cutre..
 
Avatar de BeniElCutre
 
Fecha de ingreso: 29/sep/2004
Mensajes: 861
BeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplarBeniElCutre es algo digno de contemplar
Saludos.
Ahora si que me va perfecto para la función que queria darle. En septiembre me pondre a conectar los distintos circuitos que he montado en sitios distantes entre si (sobre un par de mesas funciona todo de fabula).
GRACIAS ANDYROS, si puedo echarte una mano, dentro de lo pokito que se, no dudes en "dar un toque".
BeniElCutre está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir
Publicidad: Conoce las ofertas de ANUNCIATE
Respuesta


Usuarios viendo actualmente este tema: 1 (0 usuarios registrados y 1 visitantes)
 

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Activado

Ir al foro


!! ADVERTENCIAS !!: Las informaciones aquí publicadas NO CONTIENEN KEYS para la decodificación de ningún sistema: NO SON OPERATIVOS en sistemas SAT que precisen de su correspondiente suscripción.

ESTA TOTALMENTE PROHIBIDO EL USO DE ESTAS INFORMACIONES PARA LA MODIFICACIÓN O  DEFRAUDACIÓN DE SISTEMAS DE ACCESO CONDICIONAL.

ESTOS FOROS SON MODERADOS Y NO SE PERMITE LA PUBLICACIÓN DE INFORMACIONES ILEGALES POR PARTE DE LOS USUARIOS. EN CASO DE DETECTARSE ESTE TIPO DE INFORMACIONES, LOS USUARIOS SERÁN EXCLUIDOS DE ESTAS PÁGINAS.

USO DE COOKIES: Utilizamos COOKIES y de terceros para mejorar nuestros servicios y navegación por la web. Si continua navegando, consideramos que acepta su uso.  


La franja horaria es GMT +2. Ahora son las 00:39.


-------------------------------------------------------------------- --------------------------------------------------------------------

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
Hispaservicios - J.G.C - 29112549T - Rio Cinca, 2, 30 (50180) SPAIN.
Todos los derechos reservados. Prohibida cualquier reproducion total o parcial.


Foros Patrocinados por anunciantes.