TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: fvparg en 28 de Enero de 2007, 21:15:19

Título: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: fvparg en 28 de Enero de 2007, 21:15:19
Hola a todos.
Mi pregunta es la siguiente:
Se puede asignar BIT's a puertos diferentes por ejemplo de manera que el PortA.6 tenga un valor 00000001, PortB.7 tenga 00000010, PortB.6 tenga 00000100, PortB.5 tenga 00001000 y PortB.4 tenga 00010000.
Y se pueda controlar desde una variable directamente.
O sea por ejemplo tengo la variable setup y quiero poner un 1 en el portb.7
Setup=%00000010

Gracias a todos de antemano.
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: navaismo en 28 de Enero de 2007, 21:22:14
Propiamente meterle bits a los puertos no creo, mas bien puedes controlar el puerto individualmente y al ser este un BIT de un BYTE en este caso el PORTB solo le puedes asignar 2 valores o 1 o 0.

Por el contrario a todo el Puerto si lo puedes controlar como una variable BYTE -siempre y cuando sea de 8 bits-. Por lo que alcanzo  a entender quieres asignarle el valor de SETUP a un Bit se podria hacer asignando el Puerto a esa variable.

PORTB = SETUP

donde SETUP segun veo vale %00000010

entonces como resultado se encendera el PORTB.1 ya que en esa posicion se encuentra el 1 si quisieras hacerlo como dices en el PORTB.7 deberia valer:

SETUP = %10000000
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: Mario en 28 de Enero de 2007, 21:31:34
Esa información viene en el manual del PBP.
Puedes asignar valores que desees a las diferentes variables que estén preestablecidas o las que hayas creado.

Te recomiendo leas el manual, ahí está muy bien explicado (alias, symbols, etc).
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: fvparg en 29 de Enero de 2007, 00:33:27
Hola. Gracias por responder.

Encontré esta única manera de hacer lo que necesito, aunque funciona como necesito no es muy practica y ocupa espacio de mas por cada instrucción.
Hay alguna otra forma mejor de hacerlo?
Gracias.

setup VAR BYTE

a1 VAR PORTB.0
a2 VAR PORTB.2
a3 VAR PORTB.4

TRISB=%11101010


inicio:

setup=%00000001
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
setup=%00000010
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
setup=%00000100
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
GoTo inicio
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: navaismo en 29 de Enero de 2007, 00:40:10
Pues si, asi como te dije asignando al PORTB el valor de SETUP.

PORTB = SETUP es lo mismo. que haces solo que tu declaras los puertos a un alias y luego a l alias el valor de los bits de setup. y hacer PORTB=SETUP es hacer que los bits de cada cual encajen con cada quien.
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: ascii en 29 de Enero de 2007, 00:54:53
Opino igual que navaismo creo que ocupas muchas lineas, para algo que se puede hacer mas simple. En lo personal lo haria de la siguiente manera.



TRISB=%11101010

inicio:

PORTB=%00000001
Pause 300
.......etc
GoTo inicio
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: fvparg en 29 de Enero de 2007, 01:23:55
Hola.
Si. Se que se puede hacer así. El tema es que necesito agrupar los puertos de manera que me coincida en la secuencia de los bits por cada valor.
Por ejemplo yo tengo el porta.6 que tiene el valor 1 (00000001) y tengo el portb.7 que tiene el valor 2 (00000010) y así sucesivamente. No es que tengo el port b completo a mi disposición sino si seria mas fácil con utilizar PORTB=%00000001 y PORTB=00000010
Tengo varios puertos en una disposicion y tengo que agruparlos para que me deán los números.

La asignación de los puertos es así:

PortA.6 tiene el valor 1    (00000001)
PortB.7 tiene el valor 2    (00000010)
PortB.6 tiene el valor 4    (00000100)
PortB.5 tiene el valor 8    (00001000)
PortB.4 tiene el valor 16  (00010000)
PortA.7 tiene el valor 32  (00100000)
PortA.2 tiene el valor 64  (01000000)
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: Y@el en 29 de Enero de 2007, 01:42:25
Hola a todos.
Mi pregunta es la siguiente:
Se puede asignar BIT's a puertos diferentes por ejemplo de manera que el PortA.6 tenga un valor 00000001, PortB.7 tenga 00000010, PortB.6 tenga 00000100, PortB.5 tenga 00001000 y PortB.4 tenga 00010000.
Y se pueda controlar desde una variable directamente.
O sea por ejemplo tengo la variable setup y quiero poner un 1 en el portb.7
Setup=%00000010

Gracias a todos de antemano.


Hola,

Si lo que quieres es usar a Setup, para asignar una serie de valores a diferentes puertos. Puedes usar ASM.

y tendras el mismo efecto:
Código: [Seleccionar]
ASM
btfsc _setup,0
bsf PORTA,6
btfsc _setup,1
bsf PORTB,7
btfsc _setup,2
bsf PORTB,6
btfsc _setup,3
bsf PORTB,5
btfsc _setup,4
bsf PORTB,4
btfsc _setup,5
bsf PORTA,7
btfsc _setup,5
bsf PORTA,2
ENDASM
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: navaismo en 29 de Enero de 2007, 01:46:47
Y si mejor nos dices como para que lo quieres, ya que nos estas confundiendo mucho.Segun yo un BIT solo puede tener 2 valores 1 o 0 no mas.

como nos dices que lo haces es igual a lo que te hemos estado diciendo:

Citar
a1 VAR PORTB.0
a2 VAR PORTB.2
a3 VAR PORTB.4

TRISB=%11101010


inicio:

setup=%00000001
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
setup=%00000010
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
setup=%00000100
a1=setup.0
a2=setup.1
a3=setup.2
Pause 300
GoTo inicio


despues de la etiqueta inicio SETUP vale 1 o %00000001 y segun asignas

a1 vale 1 osea el portb.0 tiene un 1 o lo que es igual a activarlo
a2 vale 0 osea el portb.2 tiene un cero o lo papagas
a3 vale 0 osea el portb.4 tiene un cero o lo pagas

esperas 300mS y ahora

a1 vale 0  apagas RB0
a2 vale 1  activas RB2
a3 vale 0 apagas RB4

y asi sucesivamente no es que le metas el valor decimal 2 al Bit del PORTB es por ello que te deciamos que si ponias el PORTB = al dato es prcticamente lo mismo.
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: Y@el en 29 de Enero de 2007, 01:54:17
Creo que te he entendido...

De ser asi.... tal vez esto te sirva.

Código: [Seleccionar]
setup VAR byte

    TRISB=%11101010 
inicio:
    setup=%00000001
    GOSUB ver_setup
    pause 300
    setup=%00000010
    GOSUB ver_setup
    Pause 300
    setup=%00000100
    GOSUB ver_setup   
    pause 300
    goto inicio

ASM
test_setup:
btfsc _setup,0
bsf PORTA,6
btfsc _setup,1
bsf PORTB,7
btfsc _setup,2
bsf PORTB,6
btfsc _setup,3
bsf PORTB,5
btfsc _setup,4
bsf PORTB,4
btfsc _setup,5
bsf PORTA,7
btfsc _setup,6
bsf PORTA,2

btfss _setup,0
bcf PORTA,6
btfss _setup,1
bcf PORTB,7
btfss _setup,2
bcf PORTB,6
btfss _setup,3
bcf PORTB,5
btfss _setup,4
bcf PORTB,4
btfss _setup,5
bcf PORTA,7
btfss _setup,6
bcf PORTA,2
ret
ENDASM           

Claro esta que de esta manera te sirve mas, ya que podrias configurar los 7 Estados de Setup.

Saludos,

Yoel
Título: Re: :-/ Se puede asignar BIT’s a diferentes puertos en PBP? :-/
Publicado por: fvparg en 11 de Febrero de 2007, 01:07:55
Hola. Gracias a todos por la ayuda que me dieron. :-)

Lo solucione de la siguiente forma:

setup VAR BYTE

a1 VAR PORTB.0
a2 VAR PORTA.2
a3 VAR PORTA.4
a4 VAR PORTB.4

TRISB=%11100000
TRISA=%11100000

‘programa principal.
Inicio:
setup=%00000001 : gosub setup ‘seteo de puertos

setup=%00000011 : gosub setup ‘seteo de puertos

setup=%00000100 : gosub setup ‘seteo de puertos

Goto inicio


estado:
a1=setup.0
a2=setup.1
a3=setup.2
a4=setup.3
Return

Esto es solo un ejemplo de cómo funciona! En el uso que le doy yo me funciona perfecto. :mrgreen:
Gracias nuevamente a todos.