Curso de programación de PIC en PICBasic Pro

Ok muchas gracias por sacarme de esta pequeña duda :) otra cosita al momento de compilarlo que programas me recomiendas? ademas cuando me dices seleccionar el tipo de pic seria al momento de compilarlo o editar el archivo y colocar el pic que utilizare.

Tal vez parezcan preguntas estupidas pero no se mucho sobre esto
OK. A lo largo de este curso hemos venido usando el programa editor MicroCode Studio.
Y como compilador usamos PICBASIC PRO los cuales trabajan conjuntamente.
Cuando copies el programa del ejemplo al editor, es cuando seleccionas el tipo de PIC en el programa MCS.

Ahora, para aclarar más tus dudas, te recomiendo que te leas el curso desde el principio.

:apreton:
 
Muchas gracias de antemano. Saludos empezare en esto, cualquier duda contare con su asesoria para salirme de ellas. Gracias nuevamente y Saludos
 
hola,

en primer lugar gracias por la contestacion anterior hacia mi post ya que pude solventar sin problemas lo que me ocurria.

ahora me surge la opcion de manejar mi PGA2310 a traves de SPI pero tengo unas dudas.

aqui os dejo el data sheet

http://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CFwQFjAB&url=http%3A%2F%2Fwww.ti.com%2Flit%2Fds%2Fsymlink%2Fpga2310.pdf&ei=rDK0T5H7HbCW0QXwwOwK&usg=AFQjCNHUbdBiujAZ-rNqB8k3zfgxP3v1wQ

un poco largo...XD

el problema que tengo es que no entiendo muy bien el sistema de enviar bits. en principio si fuera un canal seria del 0 al 255 pero en este caso como enviar los dos canales iguales?

habria que escribir dos lineas SHIFTOUT una con cada canal o desde la misma linea?

espero que sepan a que me refiero. y si pueden darme alguna linea de codigo como ejemplo no saben como lo agradeceria. este componente me saca de mis casillas...

un saludo a todos
 
Deca

En la página 8 (/18) de la datasheet que colocaste esta explicado con el texto y la Fig. 2, debes mandar 8 bit's para cada canal uno a continuación del otro mientras mantenes la línea CS a 0.

Los primeros 8 bit's corresponden al canal Derecho (Right) y los siguientes 8 al canal Izquierdo (Left)

Por otra parte en cada secuencia de 8 bit's tenes como primer bit enviado el MAS significativo y como octavo bit el MENOS Significativo.



Saludos, JuanKa.-
 
hola!

gracias por contestar.

El tema de la teoría lo entiendo pero el problema es la sintaxis en PicBasic que no lo he hecho nunca y no se como hacerlo y enviarlo a través del comando shiftout.

Si quisiera enviar digamos el número 75 a los dos canales como sería? separados por una coma o de que forma?

gracias y perdonar la pregunta tonta pero esto me vuelve loco
 
Prueba esto...

Código:
DEFINE SHIFT_PAUSEUS 1
TrisB=%1000
CS   Var PortB.0
SDO Var PortB.1
SClk Var PortB.2
SDI  Var PortB.3

R var Byte
L Var Byte
High CS

Main:
 R=75 'Definir variables a enviar 
 L=75
 Gosub Send    'llamar rutina cuando quieras enviar
 Gosub Receive 'llamar rutina cuando quieras recibir
 LCDOut R,L 'Procesar variables recibidas
Goto MAin

Send:
 Low CS:Pauseus 1
 shiftout SDO,SClK,5,R,L
 pauseus 1
 High CS
Return

Receive:
 Low CS:Pauseus 1
 shiftIn SDI,SClK,0,[R,L]
 pauseus 1
 High CS
Return

no lo compile, lo hice aqui mismo asi que si tiene errores de sintaxis o no funciona los corriges , o me preguntas que quise poner :D
 
Última edición:
Saludos cordiales a todos, pongo a continuacion el siguiente codigo cuya funcion es encender un led conectado al puerto B0, mediante un pulsador que ataca el puerto A0. El objetivo es si presiono y suelto
P1, el led enciende de forma permanente, pero si vuelvo a presionar y soltar P1, el led se apaga. En otras palabras es sencillamente un ON OFF digital, hasta aqui no tengo problema, la cuestion es que quiero gobernar el puertoA con 8 pulsadores y que se enciendan 8 leds conectados en el puerto B, pero de forma independiente , tal y como haria si conectara 8 suiches analogicos en el que cada uno prende o apaga su respectivo led. Al ser principiante No he podido ordenar de manera eficiente el codigo para cumplir dicha funcion y es por eso que pido su generosa ayuda para que me orienten como cumplir este proposito, desde luego solo necesito me orienten con el codigo para los dos primeros pulsadores y los dos primeros leds, supongo que de ahi en adelante sera cuestion de configurar los bits restantes. Mil gracias por sus aportes.

@ DEVICE PIC16F628A,WDT_OFF,PWRT_OFF,MCLR_OFF,BOD_OFF,CPD_OFF,PROTECT_OFF

cmcon=7
trisA = 1 'todos como entrada
trisB = 0 'todos como salida

;configuracion de pines
led1 var portb.0 ;ubicacion del primer LED en RB0 del pic 16F628A
led2 var portb.1
;led3 var portb.2
;led4 var portb.3
;led5 var portb.4
;led6 var portb.5
;led7 var portb.6
;led8 var portb.7

p1 var porta.0 ;"""""""del primer pulsador RA0 """"""""""""
p2 var porta.1
;p3 var porta.2
;p4 var porta.3
;p5 var porta.4
;p6 var porta.5
;p7 var porta.6
;p8 var porta.7

Cont var BYTE

CONT=0

inicio:
IF p1 = 0 THEN
while p1=0
wend
cont=cont+1
if cont > 1 then
cont=0
endif
endif
select case cont
case 0
low led1
case 1
HIGH led1

end select

goto inicio
end
 

Adjuntos

  • LEDS+ PULSADORES.zip
    15.4 KB · Visitas: 111
Código:
@ DEVICE PIC16F628A,WDT_OFF,PWRT_OFF,MCLR_OFF,BOD_OFF,CPD_O FF,PROTECT_OFF

cmcon=7
trisA = 255 'todos como entrada
trisB = 0 'todos como salida

;configuracion de pines 
led1 var portb.0  
led2 var portb.1 
led3 var portb.2 
led4 var portb.3 
led5 var portb.4 
led6 var portb.5 
led7 var portb.6 
led8 var portb.7 

p1 var porta.0 
p2 var porta.1 
p3 var porta.2 
p4 var porta.3 
p5 var porta.4 
p6 var porta.5 
p7 var porta.6 
p8 var porta.7 


inicio:
 if P1 then toggle Led1:pause 500
 if P2 then toggle Led2:pause 500
 if P3 then toggle Led3:pause 500
 if P4 then toggle Led4:pause 500
 if P5 then toggle Led5:pause 500
 if P6 then toggle Led6:pause 500
 if P7 then toggle Led7:pause 500
 if P8 then toggle Led8:pause 500
Goto inicio

try this...



:unsure: no habia visto el esquema pero te recomiendo que pongas resistencias pull-Down en portA... y resistencias limitadoras a los leds
 
Última edición:
Hola lubeck, mil gracias por tu respuesta, pero lo que pretendo es prender y apagar un conjunto de 8 leds dispuestos en el puertoB con 8 pulsadores dispuestos en el puerto A, pero independientemente. osea con un pulso en A0 se debe ENCENDER el led en B0 y se debe mantener n ese estado hasta que con otro pulso en A0 se debe APAGAR el led en B0. con un pulso en A1 se debe ENCENDER el led en B1 y mantener ese estado hasta que, con otro pulso en A1 se debe APAGAR el led en B1 y asi consecutivamente para poder controlar 8 leds con 8 pulsadores pero independientemente el encendido y apagado. Eso es exactamente lo que hace el codigo que posteo, pero solo he logrado que me funcione con una sola pareja pulsador_led y esa misma funcion quiero 8 veces repetirla y no se como hacerlo a partir de la ultima linea, o como puedo trabajar sobre otro codigo para lograr ese objetivo. mil gracias por su tiempo muchachos
 

Adjuntos

  • LED+ PULSADORES.zip
    15.4 KB · Visitas: 93
Última edición:
Si ya lo probe, y lo que hace es que con un pulso en A0 enciendeB0 pero si vuelvo a presionar el mismo pulsador, el led no se apaga, solo se apaga A0 si presiono el pulso en A1 . la funcion debe ser identica a la que se simula con el codigo que posteo y no se como repetirlo 8 veces, a proposito no se porque al comenzar la simulacion de mi codigo aparecen encendidos leds que no tienen por que estar encendidos solo se apagan si presiono el pulso en A0 y de ahi en adelante el circuito sigue funcionando perfectamente. sera problema de configuracion de fuses ya que estoy usando el 16F628A?
 
si funciona tienes mal algo en el esquema... creo que el nombre es muy largo...

Recuerda excepto en el sexo las cosas pequeñas son mejores :LOL:
 

Adjuntos

  • on off 16f628a 8CH.rar
    14.6 KB · Visitas: 132
Última edición:
Si ya lo probe, y lo que hace es que con un pulso en A0 enciendeB0 pero si vuelvo a presionar el mismo pulsador, el led no se apaga, solo se apaga A0 si presiono el pulso en A1 . la funcion debe ser identica a la que se simula con el codigo que posteo y no se como repetirlo 8 veces, a proposito no se porque al comenzar la simulacion de mi codigo aparecen encendidos leds que no tienen por que estar encendidos solo se apagan si presiono el pulso en A0 y de ahi en adelante el circuito sigue funcionando perfectamente. sera problema de configuracion de fuses ya que estoy usando el 16F628A?
Saludos inspector gadget, saludos lubeck.

Aquí les dejo un ejemplo de como lo haría yo.
Espero te sirva inspector, para lo que deseas hacer. ;)

Suerte.
 

Adjuntos

  • TOGGLE_8.rar
    17.3 KB · Visitas: 165
Hola Dark....

aprovechando que me acorde del PBP 5.0... :D

Oye... has compilado ejercicios con el 18F4550?, yo no he podido, me sale esto...
 

Adjuntos

  • Dibujo.JPG
    Dibujo.JPG
    46.1 KB · Visitas: 34
Hola Dark....

aprovechando que me acorde del PBP 5.0... :D

Oye... has compilado ejercicios con el 18F4550?, yo no he podido, me sale esto...
Saludos lubeck.
Me parece que si he realizado algún ejemplo USB con ese PIC
Dejame buscarlo entre mi desorden y lo posteo, no recuerdo bien si era para el 18F4550
pero creo que si logre solucionar ese detalle que mencionas.

Ahh! y es PBP3 y MCS5 ;)
 
Buenos dias, estoy muy agradecido por el aporte que lubeck anoche mismo me sugirio y que fue la solucion, pense que obviando las R pull-Down y las limitadoras para los leds aunque fuera solo para la simulacion, no me crearia problemas, pero eso era lo que no me permitia que el circuito trabajara como sugirio lubeck, y aunque el efecto que presentaba era interesante, no era lo que estaba necesitando por el momento. Un saludo cordial a Dark, que tambien se ocupo de echarme una mano en la solucion y su codigo tambien funciona a la perfeccion. Lo que me apasiona de la programacion es precisamente que se puede obtener el mismo resultado por diferentes caminos, y ya entendi la aplicacion practica de toggle y voy a seguirla utilizando mas a menudo sin tantas complicaciones, Leccion aprendida, ojala y algun dia llegue a ser tan bueno como ustedes y pueda aportarle a alguien que lo necesite. mil y mil gracias a los dos.
Tenias razon lubeck.. no porque algo sea pequeño, significa que no sea importante...jajaja:LOL:
 
no era lo que estaba necesitando por el momento

:unsure: y entonces cual es???


Lo que me apasiona de la programacion es precisamente que se puede obtener el mismo resultado por diferentes caminos

en realidad no se obtiene lo mismo, en el codigo que te puse usa el pause lo que yo para nada recomiendo usar, ni los ciclos determinados o trampas como el while:wend,la mejor funcion a utilizar es el button porque esa no pausa el micro... pero yo no te la sugeri porque no es muy facil de entender y quizas te complicaria mas y para esa aplicacion pues no es imperativo el tiempo....
 
Al decir que no era lo que buscaba me referia al raro efecto que me produjo la simulacion por no tener conctadas las Resistencias. pero tu codigo es lo que buscaba, hace lo que tiene que hacer con el esquema adecuado y a mi me sirve y como este foro es para muchos de nosotros una de las tantas formas de aprender, agradezco tu colaboracion. Gracias lubeck:D
 
Atrás
Arriba