TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: db25 en 01 de Febrero de 2006, 11:00:00

Título: Direcciones en binario segun el pin que se pone a 1?
Publicado por: db25 en 01 de Febrero de 2006, 11:00:00
Hola, alguien me podria decir como se puede hacer en c esto:

con un pic 16c926 poniendo desde RF0 a RF7 como salida de datos  y el resto de puertos como entrada realice lo siguiente.

si en RA0 hay un 1 en los puertos RF0 y RF7 ponga una direccion en binario 10000000

tras un segundo mande un pulso a la salida al RG7

y luego se resete para que queden otra vez en 00000000 sin que le mande un pulso al RG7 y se quede esperando a que de nuevo se ponga a 1 ese puerto o cualquiera de los otros para poner otra direccion en binario.

Espero que lo entendais lo que me refiero Gracias.

Un saludo

Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: Nocturno en 02 de Febrero de 2006, 01:01:00
Deberías intentar empezar a escribir el programa tú, y postearlo aquí con tus dudas. Seguro que la ayuda que obtienes es más rápida y eficaz.
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: db25 en 03 de Febrero de 2006, 07:40:00
Hola, bueno empecemos :

led1 var PORTB.0
led2 var PORTB.2
pulsador var PORTB.1
L1: high led1
goto L1
IF pulsador = 1 THEN L2
L2: high led2
end

con este "programa" creo que tendria que encenderse L1 y al pulsar el pulsador encenderse L2, pero no hace lo segundo.

Tambien intente encender varios led pero lo que hacian era parpadear todos aleatoriamente.

Si consigo enterarme donde esta el fallo, ya lo pondre (es lo malo que tenemos los principiantes xD)

Un saludo
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: pocher en 03 de Febrero de 2006, 09:33:00
No se te enciende porque estas contínuamente diciendole que vaya a L1 con el GOTO y de esas dos líneas no pasa.
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: db25 en 03 de Febrero de 2006, 11:28:00
Gracias pocher.


Lo primero creo que no es el foro correcto pues es PBP y no C (creo)

Bueno tras mirar el foro y fijarme en los ejemplos.... lo consegui, pero ahora falla otra cosa.

Este es el programa

binario var byte [10]

binario[0]=15
binario[1]=1
binario[2]=141
binario[3]=4

inicio:
if porta.0 = 1 then
PORTB=binario[0]
pause 1000
low portb
endif

if porta.1 = 1 then
portb=binario[1]
pause 1000
low portb
endif

if porta.2 = 1 then
portb=binario[2]
pause 1000
low portb
endif

if porta.3 = 1 then
portb=binario[3]
pause 1000
low portb
endif

goto inicio
end


el problema que tengo  es el siguiente: porta.3 no actua no pone en binario lo que le corresponde y si lo paso a porta.4 pasa lo mismo.

se puede hacer que a la vez que saque el numero en binario mande un pulso por porta.3 o 4 la que quede libre (pues solo utilizo 4 pulsadores).

Gracias de antemano.
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: pocher en 03 de Febrero de 2006, 23:59:00
Me parece que te faltan definir las entradas y las salidas con los TRIS correspondientes.

Si se puede mandar el pulso siempre y cuando ese pin lo hayas definido como salida.

Un saludo
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: Nocturno en 04 de Febrero de 2006, 01:18:00
Como dice Pocher, el problema podría venir de los TRIS, aunque yo también revisaría el Datasheet de ese micro, por si algunos pines necesitan pullup externa.

Por cierto, db25, son muy pocos los usuarios del foro a los que se les dice que se esfuercen por escribir su programa y lo intentan, así que te felicito. Ya verás como al final consigues tu objetivo.

Moveré el hilo al subforo de Basic, para mantener el orden, pero esperaré a que leas antes este mensaje, no sea que luego no encuentres el hilo.
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: db25 en 04 de Febrero de 2006, 03:26:00
Bueno pues resulta que el problema, no era del programa o los TRIS, era del proteus, ya que ahora no me da problemas, al final para conseguir el pulso y no perder ninguna puerta lo que he hecho a sido poner 8 optoacopladores en cada salida y la salida de estos unida (es un poco bestia) pero asi tengo 5 pulsadores, gano uno mas xD.

Al final he puesto un 16f84, porque en el proteus no tenia el pic que queria utilizar.

Lo que si he observado es que tarda mucho en "activarse" el pic unos 30 segundos, esto es por poner las PAUSE 5000 no? no se puede hacer para que cargue mas rapido? sin perder esas PAUSE o no hay forma?.


Gracias POCHER Y NOCTURNO66.

Un saludo
Título: RE: Direcciones en binario segun el pin que se pone a 1?
Publicado por: Nocturno en 04 de Febrero de 2006, 11:25:00
Puñetero Proteus desquiciado